将.aab 文件转为.apks,然后本地命令安装;查看对应的签名信息

1,583 阅读5分钟

说明:

将 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包地址

github.com/google/bund…

​编辑

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.jarbundletool 的 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.jarbundletool 的 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 文件:

  1. 打开你的项目。
  2. 选择 Build > Build Bundle(s) / APK(s) > Build Bundle(s).
  3. 生成的 .aab 文件位于 app/build/outputs/bundle/ 目录。
  4. 在 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

执行后,会列出密钥库中的所有条目及其别名,然后你可以执行第一步的操作。

总结:

以上所有的命令,需要你本地安装好对应的执行文件,或者已在电脑环境配置了全局环境变量;

如果没有配置环境变量,简单的操作就是:新建一个文件夹,把命令执行的工具和对应的需要操作的文件放到此文件夹下。