开发环境
HBuilder X 3.1.18.20210609
Android Studio 4.2.2
JDK 11
gradle 7.1.1
App离线SDK 3.1.18
基本上全都是最新的,不提供链接,大家自行去下载,基本上各大官网都有下载链接,也不用担心不小心装了全家桶。
新建工程
打开
Android Studio
新建一个空白项目
选择
empty Activity
点击next
- Name 项目名称
- Package name 包名,在正式环境中,包名应该和公司工程java项目保持一致
- Save location 本地保存地址
- Language 一定要选择Java
- Minimum SDK 对应着需要适配的安卓版本,根据自己的需求来,不建议选择太高
填写完毕点击
Finish
点击右下角的进度条会弹出一个进度的详情的框框,先点击小叉叉,取消依赖的下载
上面是新建出来默认的配置,默认依赖源是国外的,修改依赖源为国内镜像,速度更快,如下
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
maven {
url 'https://maven.aliyun.com/repository/google'
}
maven {
url 'https://maven.aliyun.com/repository/public'
}
maven {
url 'https://maven.aliyun.com/repository/jcenter'
}
}
dependencies {
classpath 'com.android.tools.build:gradle:4.2.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
maven {
url 'https://maven.aliyun.com/repository/google'
}
maven {
url 'https://maven.aliyun.com/repository/public'
}
maven {
url 'https://maven.aliyun.com/repository/jcenter'
}
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
添加
uni-app
需要的依赖以及其他配置,上面是默认的,修改后如下
plugins {
id 'com.android.application'
}
android {
compileSdkVersion 30
buildToolsVersion "30.0.3"
defaultConfig {
applicationId "com.example.demo"
minSdkVersion 21
targetSdkVersion 30
versionCode 1
versionName "1.0"
}
signingConfigs {
config {
keyAlias 'test'
keyPassword '111111'
storeFile file('test.keystore')
storePassword '111111'
v1SigningEnabled true
v2SigningEnabled true
}
}
buildTypes {
debug {
signingConfig signingConfigs.config
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
release {
signingConfig signingConfigs.config
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
aaptOptions {
additionalParameters '--auto-add-overlay'
ignoreAssetsPattern "!.svn:!.git:.*:!CVS:!thumbs.db:!picasa.ini:!*.scc:*~"
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
lintOptions {
abortOnError false
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.aar', '*.jar'], exclude: [])
implementation "com.android.support:support-v4:28.0.0"
implementation "com.android.support:appcompat-v7:28.0.0"
implementation 'com.android.support:recyclerview-v7:28.0.0'
implementation 'com.facebook.fresco:fresco:1.13.0'
implementation "com.facebook.fresco:animated-gif:1.13.0"
implementation 'com.github.bumptech.glide:glide:4.9.0'
implementation 'com.alibaba:fastjson:1.1.46.android'
}
完成上述操作后就可以下载依赖资源了,点击File > Sync Project with Gradle File,等待依赖下载的同时可以继续下面的准备工作
当依赖下载完成之后,项目就归gradle管理了,所以在开发工具中,目录结构看着会发生变化,将目录结构修改为project就好
删除一些初始化的东西,不然无法打包成功,选中的文件直接删除即可,如下图
添加外部依赖的依赖,从
App离线SDK
包中,找到 latest > 3.1.18 > Android-SDK@3.1.18.80859_20210610 > HBuilder-Integrate-AS > simpleDemo > libs,将里面的文件全都复制到 app > libs 中
添加uni-app需要的资源文件
将App离线SDK
包中的 latest > 3.1.18 > Android-SDK@3.1.18.80859_20210610 > HBuilder-Integrate-AS > simpleDemo > src > main > assets 直接复制出来,放到app > src > main 下面,然后删除apps
目录下面所有的文件
打开
HBuilder X
,新建一个项目,这一块就不详细介绍了,随便选择一个模板就好,然后生成本地资源
将生成的资源文件复制到
apps
文件夹下面,如下图
修改配置,找到data > dcloud_control.xml,修改appid为生成的资源文件的目录名即可
生成Android平台的签名证书,点击Build > Generate Signed Bundle / APK…
选择APK,点击 Next
选择新建
选择生成目录
选择项目的app目录下面,文件名称自己取,我这里给的是test
默认生成的后缀是jks,将后缀修改为 .keystore
填写信息,密码我都是取的111111,别名是test,完成后点OK
这里信息回显后直接next
都勾上,然后选择release,点击finish,这样就生成好证书了,在app目录下面
然后修改build.gradle文件配置,如果是直接复制我上面的配置,并且证书生成方式也和我一样,就可以什么都不用修改,否则就根据自己生成方式进行修改
申请appkey,登录 DCloud管理后台,选择自己的项目,然后点击离线打包Key管理,就会看到如下页面,这里需要Android的证书签名SHA1
查看证书签名信息,点击gradle,找到这个命令,双击执行就可以看到证书信息
填写申请证书的一些信息,将上图框出来的SHA1值复制到Android证书签名中即可,包名在build.gradle中也有,然后不需要ios的,就取消勾选
完了就保存,就生成了appkey的信息了
回到开发工具,先删除红框框出来的东西,然后添加下面的配置
下面的配置是官方的配置,直接复制即可
<activity
android:name="io.dcloud.PandoraEntry"
android:configChanges="orientation|keyboardHidden|keyboard|navigation"
android:label="@string/app_name"
android:launchMode="singleTask"
android:hardwareAccelerated="true"
android:theme="@style/TranslucentTheme"
android:screenOrientation="user"
android:windowSoftInputMode="adjustResize" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="io.dcloud.PandoraEntryActivity"
android:launchMode="singleTask"
android:configChanges="orientation|keyboardHidden|screenSize|mcc|mnc|fontScale|keyboard"
android:hardwareAccelerated="true"
android:permission="com.miui.securitycenter.permission.AppPermissionsEditor"
android:screenOrientation="user"
android:theme="@style/DCloudTheme"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<action android:name="android.intent.action.VIEW" />
<data android:scheme="h56131bcf" />
</intent-filter>
</activity>
<!--provider节点必须添加-->
<provider
android:name="io.dcloud.common.util.DCloud_FileProvider"
android:authorities="com.example.uniapp.dc.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/dcloud_file_provider" />
</provider>
下面的配置就是appkey的配置
<meta-data
android:name="dcloud_appkey"
android:value="申请的appkey" />
完整配置文件如下
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.demo">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true">
<activity
android:name="io.dcloud.PandoraEntry"
android:configChanges="orientation|keyboardHidden|keyboard|navigation"
android:label="@string/app_name"
android:launchMode="singleTask"
android:hardwareAccelerated="true"
android:theme="@style/TranslucentTheme"
android:screenOrientation="user"
android:windowSoftInputMode="adjustResize" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="io.dcloud.PandoraEntryActivity"
android:launchMode="singleTask"
android:configChanges="orientation|keyboardHidden|screenSize|mcc|mnc|fontScale|keyboard"
android:hardwareAccelerated="true"
android:permission="com.miui.securitycenter.permission.AppPermissionsEditor"
android:screenOrientation="user"
android:theme="@style/DCloudTheme"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<action android:name="android.intent.action.VIEW" />
<data android:scheme="h56131bcf" />
</intent-filter>
</activity>
<!--provider节点必须添加-->
<provider
android:name="io.dcloud.common.util.DCloud_FileProvider"
android:authorities="com.example.uniapp.dc.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/dcloud_file_provider" />
</provider>
<meta-data
android:name="dcloud_appkey"
android:value="申请的appkey" />
</application>
</manifest>
以上就完成了全部配置,然后就可以进行打包了,根据下面的操作就可以进行打包了