android bundle指令打包
区别apk打包,bundle打包的指令和签名,和得到apk安装步骤;
一、和apk打包一样,通过官方推荐的gradle去实现打包
打包指令(apk):gradlew assebleRelease //结果是 xxx.apk
打包指令(bundle):gradlew bundleRelease //结果是 xxx.aab
二、生成签名秘钥
参考中文官网文档:https://reactnative.cn/docs/signed-apk-android
//在windows的DOS中,进入JDK 的 bin 目录中执行:
$ keytool -genkeypair -v -keystore bai-release-key.jks -alias bai-key-alias -keyalg RSA -keysize 2048 -validity 10000
##### bai-release-key.jks 是签名文件的名称
##### bai-key-alias 是签名文件的别名,将来为应用签名时所需要用到的
输入密钥库(keystore)和对应密钥的密码
输入秘钥库口令:bai123456
再次输入新口令:bai123456
您的名字与姓氏是什么? :yingbin bai
您的组织单位名称是什么? :mestore
您的组织名称是什么? :mestore
您所在的城市或区域名称是什么? :beijing
您所在的省/市/自治区名称是什么? :beijing
该单位的双字母国家/地区代码是什么? :zh
确认信息是否正确 :Y
//迁移到行业标准格式 PKCS12
$ keytool -importkeystore -srckeystore bai-release-key.jks -destkeystore bai-release-key.jks -deststoretype pkcs12
//把my-release-key.jks文件放到你工程中的android/app文件夹下
keytool的指令使用:https://www.cnblogs.com/benio/archive/2010/09/15/1826990.html
三、jarsigner签名aab文件
//jarsigner -keystore 签名文件.jks 绝对路径.aab 签名
$ jarsigner -keystore bai-release-key.jks app/build/outputs/bundle/release/app-release.aab bai-key-alias
//警告:未提供 -tsa 或 -tsacert, 此 jar 没有时间戳。如果没有时间戳(时间戳可能会变,自己找), 则在签名者证书的到期日期
(2048-11-01) 或以后的任何撤销日期之后, 用户可能无法验证此 jar。
$ jarsigner -keystore bai-release-key.jks app/build/outputs/bundle/release/app-release.aab bai-key-alias -tsa http://timestamp.digicert.com
四、aab(Android App Bundle)转apks并安装
参考:https://blog.csdn.net/QQ1075687690/article/details/113881018
1、下载bundletool,下载地址:https://github.com/google/bundletool/releases
2、配置bundletool:
$ @doskey bundletool=java -jar xxx\bundletool-all.jar $*
3、Error: could not open `G:\Android\DevelopTool\JRE1.8\lib\amd64\jvm.cfg’
将Path里面的%JAVA_HOME%/bin放在最前面即可(https://blog.csdn.net/mulinsen77/article/details/87600801)
重启电脑后,再次执行:$ @doskey bundletool=java -jar xxx\bundletool-all.jar $*
4、当 bundletool 从 app bundle 生成 APK 时,它会将这些 APK 纳入到一个名为“APK set archive”的容器中,
该容器以 .apks 作为文件扩展名。如需从 app bundle 为应用支持的所有设备配置生成一组 APK,请使用 bundletool build-apks 命令,如下所示。
$ bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
5、将 APK 部署到连接的设备
如需从 APK 集部署您的应用,请使用 install-apks 命令并使用 --apks=/path/to/apks 标记指定 APK 集的路径,如下所示。
(如果连接了多个设备,请添加 --device-id=serial-id 标记来指定目标设备。)
$ bundletool install-apks --apks=/MyApp/my_app.apks
五、将您的应用.aab上传到 Play 管理中心
参考:https://developer.android.google.cn/studio/publish/upload-bundle
如果您以 Android App Bundle 格式上传应用,Play 管理中心会自动为应用支持的所有设备配置生成拆分
APK 和多 APK。在 Play 管理中心内,您可以使用 App Bundle 资源管理器查看 Google Play 生成的所有
APK 工件、检查受支持的设备和 APK 缩减大小等数据,以及下载生成的 APK 以在本地进行部署和测试。
六、jarsigner的指令集:
用法: jarsigner [选项] jar-file 别名
jarsigner -verify [选项] jar-file [别名…]
[-keystore ] 密钥库位置
[-storepass <口令>] 用于密钥库完整性的口令
[-storetype <类型>] 密钥库类型
[-keypass <口令>] 私有密钥的口令 (如果不同)
[-certchain <文件>] 替代证书链文件的名称
[-sigfile <文件>] .SF/.DSA 文件的名称
[-signedjar <文件>] 已签名的 JAR 文件的名称
[-digestalg <算法>] 摘要算法的名称
[-sigalg <算法>] 签名算法的名称
[-verify] 验证已签名的 JAR 文件
[-verbose[:suboptions]] 签名/验证时输出详细信息。
子选项可以是 all, grouped 或 summary
[-certs] 输出详细信息和验证时显示证书
[-tsa ] 时间戳颁发机构的位置
[-tsacert <别名>] 时间戳颁发机构的公共密钥证书
[-altsigner <类>] 替代的签名机制的类名
[-altsignerpath <路径列表>] 替代的签名机制的位置
[-internalsf] 在签名块内包含 .SF 文件
[-sectionsonly] 不计算整个清单的散列
[-protected] 密钥库具有受保护验证路径
[-providerName <名称>] 提供方名称
[-providerClass <类> 加密服务提供方的名称
[-providerArg <参数>]]… 主类文件和构造器参数
[-strict] 将警告视为错误