说明:
将 Android 应用的 .aab 文件(Android App Bundle)转换为 .apk 文件(Android Package),使用 Google 提供的工具 bundletool。具体步骤:
1. 下载并安装 bundletool:
本地测试使用的是 bundletool-all-1.17.0.jar,具体可在对应的链接地址里下载,如下:
对应 bundleTool 工具
对应的源码地址
github.com/google/bund…github.com/google/bund…
编辑
对应的jar包地址
编辑
2. 使用 bundletool 的jar 生成 .apks
使用以下命令将 .aab 文件生成 .apks 文件包:有两种方式,一是带签名和和不带签名的,
1. 不带签名的方式:
java -jar bundletool-all-x.x.x.jar build-apks --bundle=/path/to/your_app.aab --output=/path/to/output.apks --mode=universal
比如用bundletool-all-1.17.0.jar 实现,前提是在同一个文件夹下(不用配置环境变量)
java -jar bundletool-all-1.17.0.jar build-apks \
--bundle=/home/user/app.aab \
--output=/home/user/output.apks \
--mode=universal
其中:
bundletool-all-x.x.x.jar是bundletool的 JAR 文件。这里使用的是bundletool-all-1.17.0.jar;/path/to/your_app.aab是你.aab文件的路径;/path/to/output.apks是生成的.apks文件的路径;- --mode=universal 是指 生成通用的apk
2. 带签名的方式:
① 准备签名文件: 需要一个签名密钥库文件(keystore),以及密钥库的别名、密钥库的密码和密钥的密码。
② 使用 bundletool 时,可以通过 --ks、--ks-key-alias、--ks-pass 和 --key-pass 参数来指定签名信息。以下是一个完整的命令示例:
java -jar bundletool-all-1.17.0.jar build-apks
--bundle=/path/to/your_app.aab
--output=/path/to/output.apks
--ks=/path/to/keystore.jks
--ks-key-alias=your-key-alias
--ks-pass=pass:your-keystore-password
--key-pass=pass:your-key-password
--mode=universal
其中:
bundletool-all-x.x.x.jar是bundletool的 JAR 文件。/path/to/your_app.aab是你的.aab文件的路径。/path/to/output.apks是你希望生成的.apks文件的路径。/path/to/keystore.jks是你的签名密钥库文件的路径。your-key-alias是密钥库的别名。your-keystore-password是密钥库的密码。your-key-password是密钥的密码。
注意:pass: 是命令的一部分,不能删除。
示例:
java -jar bundletool-all-1.17.0.jar build-apks --bundle=app-xx-release.aab --output=output.apks --ks=xx.jks --ks-key-alias=xxx --ks-pass=pass:xxxx --key-pass=pass:xxxx --mode=universal
3. 提取 APK:
生成 .apks 文件后,有两种方式提取Apk,
第一种:可以使用以下命令提取其中的 APK:
unzip /path/to/output.apks -d /path/to/output
第二种:把output.apks 重命为 output.zip,然后解压即可;
两种方式 解压后,即可得到 output 文件夹,里面包含 两个文件 toc.pb 和 universal.apk
4. 安装 APK
有两种方式实现:第一种,使用 adb 工具将提取出的 APK 文件安装到你的设备上:
即安装output.apks 文件解压后的文件里的 universal.apk
adb install /path/to/output_directory/universal.apk
第二种, 直接安装 .apks 文件,如下
java -jar bundletool-all-1.17.0.jar install-apks --apks=output.apks
前提是, bundletool-all-1.17.0.jar 和 其生成的.apks在同一个文件夹里
5. 其他方法: Android Studio IDE
可以使用 Android Studio 来构建和运行 .aab 文件:
- 打开你的项目。
- 选择
Build > Build Bundle(s) / APK(s) > Build Bundle(s). - 生成的
.aab文件位于app/build/outputs/bundle/目录。 - 在 Android Studio 中,使用
Run按钮将应用安装到连接的设备上。
通过以上步骤,可以将.aab 文件转换为 .apk 文件, 然后安装到你的 Android 设备上进行测试。
查看apk签名信息:
第一种
1. 找到有签名信息的 APK 文件。
2. 使用 apktool 工具解压 APK 文件, 命令 如下: apktool d your-app.apk
解压后,签名文件位于解压目录的 META-INF 文件夹中,通常是 .RSA 或 .DSA 文件。
3. 使用 keytool 查看签名信息
在终端或命令提示符中运行以下命令(假设签名文件名为 CERT_TEST.RSA):
keytool -printcert -file META-INF/CERT.RSA
执行后,然后将显示证书的详细信息,包括颁发者、主题、有效期等。
第二种
如果你已经有应用安装在设备上,可以通过以下步骤来查看签名信息:
1. 导出APK文件:使用 adb 工具将已安装的应用导出为 APK 文件,
adb shell pm path your.package.name
adb pull /data/app/your.package.name/xxxx.apk
即 APK 文件导出到你的计算机。
2. 使用 apksigner 工具:
apksigner 是 Android SDK 提供的一个工具,可以检查 APK 的签名信息。
运行命令: apksigner verify --verbose --print-certs app.apk
执行后,将显示签名信息和证书详细信息
拓展
1. 如何查看.jks签名的信息,使用 keytool 查看证书信息。
在终端或命令提示符中运行以下命令:
keytool -list -v -keystore mykeystore.jks -alias testAlias
执行后,会要求输入密钥库密码,输入后,消息展示如下:
Alias name: myalias
Creation date: Jan 1, 2023
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=Your Name, OU=Your Organization Unit, O=Your Organization, L=Your City, ST=Your State, C=Your Country
Issuer: CN=Your Name, OU=Your Organization Unit, O=Your Organization, L=Your City, ST=Your State, C=Your Country
Serial number: 123456789
Valid from: Mon Jan 01 00:00:00 UTC 2023 until: Thu Jan 01 00:00:00 UTC 2043
...
2. 如果不确定别名,使用以下命令列出 JKS 文件中的所有条目:
keytool -list -v -keystore mykeystore.jks
执行后,会列出密钥库中的所有条目及其别名,然后你可以执行第一步的操作。
总结:
以上所有的命令,需要你本地安装好对应的执行文件,或者已在电脑环境配置了全局环境变量;
如果没有配置环境变量,简单的操作就是:新建一个文件夹,把命令执行的工具和对应的需要操作的文件放到此文件夹下。