uniapp的安卓app打包(本地离线)
建立项目
- 下载 HBuilderX,登录 dclould账号(必须)
- 新建项目
本地打包
打包后的文件
回到 上两层目录
待会需要复制整个 __UNI__354F6F0 目录
生成离线打包 Key
具体方法: https://ask.dcloud.net.cn/art..
生成证书
安装 JDK后输入以下命令
命令格式:
keytool -genkey -alias 证书别名 -keyalg RSA -keysize 2048 -validity 证书的有效期 -keystore 证书文件名
注意:
输入上述命令后的第一个输入时密码,这个密码是证书的密码,必须记录,假设这里的密码是”leonardpwd”
再输入一连串信息后他会问你是否正确,此时需要手动输入 “是”
1 | keytool -genkey -alias leonard-app -keyalg RSA -keysize 2048 -validity 36500 -keystore leonard-app.keystore |
查看证书
1 | keytool -list -v -keystore leonard-app.keystore |
显示的信息类似下方文本,其中 证书指纹 的 SHA1 待会需要使用
1 | 输入密钥库口令: |
设置 Key
打开 DCloud 开发者中心,并点击我们的项目
点击 “离线打包 Key 管理”,并填写相关信息
这就是我们的 AppKey
安卓相关配置
文件位置: https://nativesupport.dcloud....
- 安装 Android Studio
- 下载好 App 离线SDK
- 下载后,解压缩得到
- 复制 HBuilder-HelloUniApp 文件夹到一个地方存储
导入项目
打开 Android Studio, 打开已经存在的项目( Open an Existing Project )
注意,第一次打开可能需要等待很长时间,Android Studio正在导入相关文件
项目配置
删除项目原本文件
点击显示详细目录
删除项目自带示例文件夹
复制项目
再本文章节”本地打包”中已经打包完成,复制以下整个文件夹
粘贴到 apps文件夹中
最终效果
设置 APPID
打开 manifest.json ,复制 id
打开 data/dcloud_control.xml , 粘贴替换为刚才复制的 id
设置 AppKey
网页打开 DCloud开发者中心,进入项目,点击 “离线打包Key管理”,复制 Android 的 App Key
粘贴到 manifests/AndroidManifest.xml 中的 meta-data 节点 (该节点一般再文件最底部)
设置证书
- 打开build.gradle 文件(注意不是上面那个,可以按照文件名后面括号的字区分)
- 再 signingConfigs -> config 内部填写相关信息
1
2
3
4keyAlias '证书别名'
keyPassword '证书密码'
storeFile file('证书路径,注意双斜杠')
storePassword '证书密码' - 点击右上角 “Sync Now”
修改 applicationId
- build.gradle -> manifestPlaceholders -> apk.applicationId
我的是 com.leonard.app - AndroidManifest.xml
package内的值和 build.gradle 文件中的值一样
修改 provider
打开 AndroidManifest.xml,查找 android:authorities , 修改值为 xxx.xxx.xxx.fileprovider
此处我修改为 com.leonard.app.fileprovider
打包 APK
Build -> Build Bundle(s) / APK(s) -> Build APK(s)
打包完成后,右下角会出现提示,点击 locate 即可找到 APK文件
打开安卓手机,安装该 apk 查看即可
2022/2/27
APK 打包失败
Algorithm HmacPBESHA256 not available
Android studio 2021.1.1 版本默认 JDK 11.0.1 版本,而
HmacPBESHA256 是 JDK12 才开始支持,可以把它升级为 JDK12 或 JDK13
在 File
> Settings
> Build, Execution, Deployment
> Build Tools
> Gradle
选择改变 Gradle JDK, Download JDK, 选择 JDK13