从 aab 文件生成 Apk 文件(android app bundle)

有什么方法可以通过终端或使用 Android Studio 从 Android 捆绑(aab)生成 apk 文件?

192814 次浏览

默认情况下,IDE 不使用应用程序包将应用程序部署到 局部试验装置

请参考 捆绑工具命令

对于 Debug apk 命令,

bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks

对于 Release apk 命令,

bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
--ks=/MyApp/keystore.jks
--ks-pass=file:/MyApp/keystore.pwd
--ks-key-alias=MyKeyAlias
--key-pass=file:/MyApp/key.pwd

编辑:

在测试我的 aab 版本构建时,我一直在使用以下命令(我希望它也能帮到其他人) :

  1. Github 仓库下载 bundletool jar 文件(最新版本 > 资产 > bundletool-all-version. jar 文件) ,将该文件重命名为 bundletool.jar

  2. 从 Android Studio 生成您的 aab 文件,例如: myapp-release. aab

  3. 运行以下命令:

    java -jar "path/to/bundletool.jar" build-apks --bundle=myapp-release.aab --output=myapp.apks --ks="/path/to/myapp-release.keystore" --ks-pass=pass:myapp-keystore-pass --ks-key-alias=myapp-alias --key-pass=pass:myapp-alias-pass
    
  4. 将生成 myapp.apks文件

  5. 请确保您的设备已连接到您的机器

  6. 现在运行以下命令将其安装到设备上:

    java -jar "path/to/bundletool.jar" install-apks --apks=myapp.apks
    

编辑2:

如果需要从 .aab文件中提取单个 .apk文件,可以在 bundletool命令中添加一个额外的参数 --mode=universal:

bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks \
--mode=universal \
--ks=/MyApp/keystore.jks \
--ks-pass=file:/MyApp/keystore.pwd \
--ks-key-alias=MyKeyAlias \
--key-pass=file:/MyApp/key.pwd

然后执行

unzip -p /MyApp/my_app.apks universal.apk > /MyApp/my_app.apk

这将生成一个 /MyApp/my_app.apk文件,可以由任何设备应用程序安装程序共享安装

有一个叫做 bundletool的工具,它可以从你的 AAB 文件中创建 APK:

在这里找到关于这个工具的详细信息: https://developer.android.com/studio/command-line/bundletool

但这里有一些摘自该网站的亮点:

建造自动步枪

当 bundletool 从您的应用程序包生成 APK 时,它将它们包含在一个称为 APK 集归档的容器中,该容器使用。Apks 文件扩展名。要为应用程序支持的所有设备配置生成 APK 集,可以使用 bundletool build-apks 命令,如下所示:

bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks

注意,上面的命令创建了一组未签名的 APK。如果要将 APK 部署到设备上,还需要包含应用程序的签名信息,如下面的命令所示。

bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
--ks=/MyApp/keystore.jks
--ks-pass=file:/MyApp/keystore.pwd
--ks-key-alias=MyKeyAlias
--key-pass=file:/MyApp/key.pwd

安装 APK

bundletool install-apks --apks=/MyApp/my_app.apks

生成特定于设备的一组 APK

bundletool build-apks --connected-device --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks

好吧,这是我必须做的完整的方法:

  1. 从这个 链接下载 bundletool-all-0.10.3.jar,下载可用的最新版本

  2. 使用 android 工作室创建一个应用包并定位它的路径:

    对我来说是 E:\Projects\Android\Temp\app\build\outputs\bundle\debug\app.aab

  3. 将 bundletools jar 复制到某个位置并获取其路径

对我来说是 E:\Temp\bundletool-all-0.6.0.jar

使用以下命令:

java -jar "BUNDLE_TOOL_JAR_PATH" build-apks --bundle="BUNDLE_PATH" --output=YOUR_OUTPUT_NAME.apks

对我来说是的

    java -jar "E:\Temp\bundletool-all-0.6.0.jar" build-apks \
--bundle="E:\Projects\Android\Temp\app\build\outputs\bundle\debug\app.aab" \
--output=out_bundle_archive_set.apks
  1. 这将创建一个文件 out_bundle_archive_set.apks,并将其重命名为。Zip out_bundle_archive_set.zip,解压这个文件并完成您将有多个 APK文件

直接安装在外部设备上使用:

Java-jar

检查这个 博客文章的更多信息。也检查 官方网站

人们已经解释了如何使用命令行实现这一点。为了完成这项工作,我想我还要展示一下如何通过 Android Studio 中的 UI 来完成这项工作。

打开“ Run/Debug Configuration”时,可以选择 “ APK 来自应用程序包”(而不是“ Default APK”)。

见截图:

enter image description here

到目前为止,还没有人提供从 AAB 获得 APK 的解决方案。

这个解决方案将生成一个 apk 通用二进制。

  1. --mode=universal添加到 bundletool命令中(如果需要已签名的应用程序,请根据需要使用—— ks 参数)。

    bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
    --mode=universal
    
  2. MAIN STEP: Change the output file name from .apks to .zip

  3. Unzip and explore

  4. The file universal.apk is your app

This universal binary will likely be quite big but is a great solution for sending to the QA department or distributing the App anywhere other than the Google Play store.

请参考 Geek Dashboard 获得更多信息。

对于那些希望从 Android App Bundle 中生成单个通用 APK 文件的用户,在运行 build-apks命令时必须使用 --universal标志。

java -jar bundletool.jar build-apks --bundle=your_app.aab --output=your_app.apks --mode=universal

在哪里 Jar 是您在这里下载的 bundletool jar 文件

Your _ App. aab 是应用程序的 Android 应用程序包

Your _ app. APKs 是运行命令后将生成的输出 APK 归档文件。

在运行上述命令时,请确保将 Bundletool.jar你的 AAB 档案放在同一个文件夹中。

现在,您需要将 your _ app. APK文件格式更改为 your _ app. 什么都没有并将其解压缩以查找 环球公司 APK文件

enter image description here

注意 : 如果已经有一个 APK 文件具有相同的名称,则使用 –overwrite标志覆盖该 APK 文件。否则,bundletool命令将抛出一个致命错误。

在 Mac 上,使用自制软件就可以轻松完成

brew install bundletool

您可以使用下面的命令生成 apks

bundletool build-apks --bundle=aab_path.aab --output=release.apks

上面的命令生成 apks 文件,以后可以将其解压缩为各种 apk 文件。以查看所有生成的文件将扩展名从。对。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。然后解压缩文件。

然后您可以使用这个命令在已连接的设备上安装 apk

bundletool install-apks --apks=release.apks

我认为这种方法更有效

enter image description here

我是这么做的。 首先,我用的是 Mac。 因此,在这个官方指南 https://reactnative.dev/docs/signed-apk-android,下面的步骤。

  1. 运行这个命令 sudo keytool -genkey -v -keystore my-upload-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000 您可以更改我的-上传-键的名称为您的选择
  2. 根据指南设置等级变量
  3. 还要按照“向应用程序的 Gradle 配置添加签名配置”的指南进行同样的操作
  4. 现在我们不需要继续(这将生成一个 AAB 文件) ,我们可以在下面进行操作。

4.1我在 Android Studio 中打开同一个项目(Android 文件夹)

4.2从 Menu Options > Build > Clean Project

4.3单击 Make Project 按钮并让它完成(如果您可以使用 npm run android运行,那么这应该没有任何问题地完成) 制作项目

4.4完成后,单击 Menu options > Build > Generate Signed Bundle/APK... 生成签名包/APK..。

4.5在下一个屏幕中选择 APK 单选按钮并单击 Next 选择 APK 选项

4.6在下一个屏幕中,浏览到作为第一步生成的密钥存储库文件、其密码、别名和密码,单击 Next。 最后一步

等它完成。您可能会看到一些错误,但更重要的是,最终您应该得到一个在右下角的弹出窗口,说“定位”。点击它,你就会找到你的应用程序发布版。APK.

祝你好运

我已经开发了一个用于在 Python 中将.aab 文件转换为.apk 的 windows 工具。

它支持创建调试和签名的 apk,可以直接安装到通过 USB 连接的默认 android 设备。

它在后端使用了 google 的捆绑工具。

Https://aabtoapkconverter.com/

编辑: 源代码现在可以在 Github上获得。

这是我开发并与世界分享的第一个工具。希望有用。我愿意接受建议和错误报告。

enter image description here