Google aab包转成apk,并安装到手机设备中
环境: Windows
软件: CocosCreator、AndroidStudio
引擎版本:3.8.1
您好,我是鹤九日!
简介
现阶段,使用Cocos Creator开发的我们,通常会使用Android Studio发布android版本。
如果做海外游戏项目,终究摆脱不了Google的使用。
很有意思的是: 2021年8月以后,对于新上架的App,GooglePlay仅支持AAB(Android App Bundle)格式,不再支持APK格式。
对于开发者而言,将审核包使用真实机型进行测试,是最接近真实环境的形式。
但是,AAB包在Google Play上发测试版本非常麻烦;还好,Google Play为我们提供了转换工具:Bundle Tool。
BundleTool
BundleTool可用于将AndroidStudio、GooglePlay构建出来的AAB(Android App Bundle)包转换为可部署到设置的各种APK。
下载地址: bundleTool 1.18.1.jar
官方文档:bundletool
注:下载的文件为XXX.jar,我们需要通过它并借助终端命令进行转换。
下载以后,打开终端,输入命令即可。
简单的命令样式:
注: 下载的bundletool-all-1.18.1.jar, 可重命名为bundletool.jar,用于简化命令长度,以及方便查看。
// 假设aab包没有签名,只做单纯的aab到apk
// 假设aab包、生成的apks包和bundletool.jar都在同一目录下, 目的:简化命令,方便理解
java -jar bundletool.jar build-apks --bundle=XXX.aab --output=XXX.apks
这种方式,会通过bundletool.jar的执行,将aab包转换为apks。
注: apks是apk的集合,看似相似,但不能将其直接安装到设备中。
BundleTool常用命令
上面的命令,是简单的示例,主要目的是为了了解BundleTool.jar的基本使用。
上传到GooglePlay应用商店中的aab包,是一定有签名的。
下面是完整的命令示例:
注: 为了方便理解,假设aab包、生成的apks包以及bunleTool.jar 命令均在同一个目录。
java -jar bundletool.jar build-apks --bundle demo.aab --output demo.apks --ks==demo.keystore --ks-pass=pass:=demo --ks-key-alias=demo --key-pass=pass:demo
稍等片刻,指定目录下会生成 demo.apks
执行的命令,没有换行,很不容易理解,这里我们拆解下,方便理解:
// 执行jar包命令,运行bundletool.jar
java -jar bundletool.jar
// 生成apks包的aab包路径和apks路径
build-apks --bundle demo.aab --output demo.apks
// 签名密钥库路径
--ks=demo.keystore
// 签名密钥库密码
--ks-pass=pass:demo
// 签名密钥别名
--ks-key-alias=demo
// 签名密钥密码
--key-pass=pass:demo
注: 签名文件的格式可以为: XXX.keystore, 也可以为XXX.jks
记住相关密码即可,本示例使用的都是demo
相关命令如下所示:
选项 | 说明 |
---|---|
–bundle=path | Android Studio 构建的 app bundle 的路径 |
–output=path | 输出.apks文件名称,该文件中包含了应用所有的 APK 工件 |
–ks=path | 用于为 APK 签名的部署密钥库的路径。 如果您不添加此标志,bundletool 会尝试使用调试签名密钥为您的 APK 签名 |
–ks-pass=pass:密码 | 密钥库密码,必须添加pass: 来限定 与–ks-pass=file:路径 二选一 |
–ks-pass=file:路径 | 密钥库路径,必须添加file:来限定 与–ks-pass=pass:密码 二选一 |
–ks-key-alias=签名别名 | 签名密钥的别名 |
–key-pass=pass:密码 | 签名密钥密码,必须添加pass: 来限定 与–key-pass=file:路径 二选一 |
–key-pass=file:路径 | 签名密钥路径,必须添加pass: 来限定 与–key-pass=pass:路径 二选一 |
–mode=universal | 将模式设置为 universal 如果希望 bundletool 构建一个包含应用的所有代码和资源的 APK 以使该 APK 与应用支持的所有设备配置兼容,请使用此选项 |
–local-testing | 启用 app bundle 进行本地测试 在本地测试时,由于无需上传到 Google Play 服务器,因此能够实现快速的迭代测试周期。 |
注:更多内容参考:官方文档
ADB
经过bundletool.jar生成的apks是无法直接安装到真实设备中的。
我们依然需要借助bundletool.jar的辅助和adb命令,将其部署到设备中。
注:网络分享中的大佬建议,测试安装时尽量只使用一台手机连接USB测试。
具体原因是跟google的严格审核机制是有关系的,小心无大错!
先检测下adb命令能否在终端命令中正常使用:
adb version
如果不能正常输出,提示类似如下错误:
可能原因:
一、AndroidStudio没有下载platform-tools, 可打开AndroidStudio -> Setting -> … Android SDK -> SDK Tools
注: Android Studio的版本很多,能够找到Android SDK的下载包配置即可。
二、配置环境变量
在Windows中,右击我的电脑 -> 属性 --> 系统 --> 高级系统设置 -> 环境变量。
选择系统变量下的Path
,将SDK目录下的platform-tools添加进去。
关闭终端命令,再次验证下:
adb version
注: 设备主要开启开发者选项,并启用USB调试.
ADB常用命令
这里记录了一些ADB的常用命令:
注: 关于ADB的更多内容,可参考官方文档:android Google Adb
命令 | 说明 |
adb devices | 确认主机已连接到设备 |
adb version | adb版本 |
adb devices -l | 已连接设备的列表 |
adb kill-server | 停止adb服务器 |
adb start-server | 启动adb服务器 |
adb install path_to_apk | 安装指定路径的apk到设备中 |
真机部署
adb相关准备完毕后,手机等真实设备也开启了USB调试。
我们继续通过bundletool.jar,输入对应的命令,进行部署安装。
命令很简单,如下所示:
// 借助bundletool.jar 使用install-apks的命令将XXX.apks安装到手机中
java -jar bundletool.jar install-apks XXX.apks
结语
使用bunldetool.jar将aab包转换为apks的命令很长,原因在于签名中的路径、别名、密码相关输入的信息较多。
按照上文中的这个格式进行输入即可。
// 执行jar包命令,运行bundletool.jar
java -jar bundletool.jar
// 生成apks包的aab包路径和apks路径
build-apks --bundle demo.aab --output demo.apks
// 签名密钥库路径
--ks=demo.keystore
// 签名密钥库密码
--ks-pass=pass:demo
// 签名密钥别名
--ks-key-alias=demo
// 签名密钥密码
--key-pass=pass:demo
这里参考了一些网络上大佬分享的博客内容,这里表示感谢,参考内容主要有:
aab转apk的方法(将Android App Bundle转换为APK)–bundletool
【Android】aab打包、安装测试以及注意事项
adb : 无法将“adb”项识别为 cmdlet、函数…
文章到这里结束了,内容较为浅显,但希望对您有用!
可能理解有误,欢迎您的指出;如果觉得文章不错,期待您的点赞和留言,感谢!
我是鹤九日,祝您生活愉快!