uniapp - 安卓版离线打包

545 阅读1分钟

官方文档地址

hbuilderx -- 3.5.3 离线SDK -- 3.6.4 Java -- 11.0.13 2021-10-19 LTS Android Studio -- 4.2.2

准备工作:需提前安装好Android Studio 和 JRE环境

1. 申请Android签名证书
  • 在工作目录下打开命令行
  • 使用 keytool -genkey 命令生成证书
keytool -genkey -alias ${证书别名,任意设置,建议使用英文字母和数字} -keyalg RSA -keysize 2048 -validity 36500 -keystore ${证书文件名称,任意设置,以.keystore结尾}

// 36500是证书的有效期,表示100年有效期,单位天,建议时间设置长一点,避免证书过期
# test @ testdeMacBook-Pro in ~/desktop/androidtest [10:02:43]
$ keytool -genkey -alias myanothername -keyalg RSA -keysize 2048 -validity 36500 -keystore test.keystore
输入密钥库口令:  // 输入证书文件密码
再次输入新口令: // 再次输入证书文件密码
您的名字与姓氏是什么?
  [Unknown]:  test
您的组织单位名称是什么?
  [Unknown]:  test
您的组织名称是什么?
  [Unknown]:  test
您所在的城市或区域名称是什么?
  [Unknown]:  test
您所在的省/市/自治区名称是什么?
  [Unknown]:  test
该单位的双字母国家/地区代码是什么?
  [Unknown]:  test
CN=lu, OU=test, O=test, L=test, ST=test, C=test是否正确?
  [否]:  y

以上命令运行完成后就会生成证书 image.png

  • 查看证书信息
keytool -list -v -keystore ${证书文件名称}
# test @ testdeMacBook-Pro in ~/desktop/androidtest [10:04:20]
$ keytool -list -v -keystore test.keystore
输入密钥库口令:  // 输入证书文件密码
密钥库类型: PKCS12
密钥库提供方: SUN

您的密钥库包含 1 个条目

别名: myanothername
创建日期: 20221019日
条目类型: PrivateKeyEntry
证书链长度: 1
证书[1]:
所有者: CN=lu, OU=test, O=test, L=test, ST=test, C=test
发布者: CN=lu, OU=test, O=test, L=test, ST=test, C=test
序列号: 5ca29c6f
生效时间: Wed Oct 19 10:04:19 CST 2022, 失效时间: Fri Sep 25 10:04:19 CST 2122
证书指纹:
	 SHA1: 3C:4E:38:21:23:F2:27:DC:FD:70:D4:5C:80:F7:04:85:12:80:59:E9
	 SHA256: F1:CE:AA:32:FF:AC:0A:24:E0:BF:9F:08:14:1D:25:83:65:6B:62:F8:85:C7:5C:8E:B0:D4:21:5B:DE:57:68:5F
签名算法名称: SHA256withRSA
主体公共密钥算法: 2048 位 RSA 密钥
版本: 3
2. 申请AppKey
  • 登陆dcloud开发者中心 image.png
  • 输入包名和SHA1(包名自定义,SHA1查看上一步的证书信息可得),获取离线打包配置中的AppKey image.png
3. HbuilderX 生成本地打包App资源
  • 发行 --> 原生App-本地打包 --> 生成本地打包App资源
  • 提示编译完成后,点击路径跳转到编译的文件夹 image.png image.png
4. 下载Android离线SDK
    |-- HBuilder-HelloUniApp                App离线打包演示应用
    |-- HBuilder-Integrate-AS               集成uni-app的最简示例
    |-- SDK                                 SDK库文件目录
    |-- Feature-Android.xls                 Android平台各扩展Feature API对应的详细配置
    |-- readme                              版本说明文件及注意事项
    |-- UniPlugin-Hello-AS                  uni原生插件开发示例
  • 把默认带的文件夹删除,替换成第三步打包的文件夹即可! HBuilder-Integrate-AS/simpleDemo/src/main/assets/apps image.png
  • App离线打包SDK只需要 HBuilder-Integrate-AS 这个文件夹,直接在Android Studio中导入 HBuilder-Integrate-AS 工程,直接运行simpleDemo项目即可(编译过程中,会下载相关依赖包,若出现报错“org.gradle.api.internal.artifacts.ivyservice.DefaultLenientConfiguration$Artifact” Could not resolve all artifacts for configuration ':classpath'.,可参考这篇文章
  • 找到项目中的 build.gradle,并删除红框部分。 image.png
  • 找到项目中的 dcloud_control.xml,更换当前应用的appid image.png image.png
  • 找到项目中的 strings.xml,更换当前应用的名字 image.png
  • 项目中相关图标设置 image.png
  • 更换当前应用的Appkey image.png
  • 更换当前应用中的相关参数 image.png
  • 更换当前应用的包名 image.png
5. 生成打包apk

image.png image.png

  • 证书文件是第一步获取的签名证书

image.png image.png

  • 打包成功 - 在编辑器的底部 build 栏查看打包状态

image.png image.png

6. App模块配置
高德地图
  • 创建key --- key名称自定义、SHA1和包名(和获取appkey的配置一致) image.png image.png
  • manifest.json 重新配置后需要重新生成本地打包App资源

image.png

  • 修改AndroidManifest.xml 文件 HBuilder-Integrate-AS/simpleDemo/src/main/AndroidManifest.xml image.png image.png

参考文章:https://blog.csdn.net/hkw20/article/details/121063641