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

Jay*_*nth 28 android apk android-studio android-app-bundle

有没有办法从Android应用程序Bundle通过终端或使用Android工作室生成一个apk文件?

Man*_*ddy 25

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

1.从此链接下载bundletool-all-0.10.3.jar ,下载最新版本

2.使用android studio创建一个应用程序包并找到其路径

就我而言 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
Run Code Online (Sandbox Code Playgroud)

4.这将创建一个文件out_bundle_archive_set.apks,将其重命名为.zip out_bundle_archive_set.zip,解压缩此文件并完成您将有多个apk

查看此博客文章以获取更多信息。还可以查看官方网站

  • 将.apks重命名为.zip并将其解压缩是我想要的部分。谢谢! (3认同)

Fir*_*mon 21

默认情况下,IDE不使用应用程序包将您的应用程序部署到本地设备进行测试

请参阅bundletool命令

对于Debug apk命令,

bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
Run Code Online (Sandbox Code Playgroud)

对于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
Run Code Online (Sandbox Code Playgroud)

  • 该命令只会生成 APK 存档文件 (.apks),我们需要将其转换为 .zip 格式并解压,然后才能找到大量 APK 文件。正确的方法是使用 --mode:universal 标志。我提交了几次编辑,但不幸的是,它们因一个奇怪的原因被拒绝 - “编辑偏离了帖子的初衷”。普通审稿人,我正在尝试完成不完整的已接受答案。 (6认同)
  • 言归正传,这实际上并不能回答问题。这会生成一个APKS文件,而不是APK文件。无法将APKS文件轻松安装到设备上,并且需要APK的接收者使用bundletool来安装它,或者通过AS进行,或者只有开发人员才知道该怎么做。 (5认同)

Pie*_*rre 14

人们已经解释了如何使用命令行执行此操作。作为完成,我想我还将展示通过Android Studio中的UI进行操作的方法。

当您打开“运行/调试配置”时,可以选择“来自应用程序捆绑包的APK”(而不是“默认APK”)。

看截图:

在此处输入图片说明

  • 如何设置aab的位置? (3认同)

Aar*_*all 14

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

该解决方案将生成通用二进制文件作为apk。

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

bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
--mode=universal
Run Code Online (Sandbox Code Playgroud)

将输出文件名从.apks更改为.zip

解压缩并探索

文件Universal.apk是您的应用程序

这个通用二进制文件可能很大,但是对于将其发送到质量检查部门或将应用分发到Google Play商店以外的任何地方,这都是一个很好的解决方案。


Tus*_*aha 9

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

brew install bundletool
Run Code Online (Sandbox Code Playgroud)

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

bundletool build-apks --bundle=aab_path.aab --output=release.apks
Run Code Online (Sandbox Code Playgroud)

上面的命令会生成 apk 文件,稍后可以提取该文件以提供各种 apk 文件。要查看所有生成的文件,请将扩展名从 .apks 更改为 .zip 并提取文件。

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

bundletool install-apks --apks=release.apks
Run Code Online (Sandbox Code Playgroud)


Aks*_*zod 8

我开发了一个 Windows 工具,用于在 Python 中将 .aab 文件转换为 .apk。

\n

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

\n

它在后端使用 google\xe2\x80\x99s 捆绑工具。

\n

https://aabtoapkconverter.com/

\n

编辑:\n源代码现已在github上提供。

\n

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

\n

在此输入图像描述

\n

  • 谢谢。终端命令抛出恼人的错误,我不知道如何解决。这效果很好。@GeorgeBirbilis - 你现在可能已经明白了,但这似乎会生成一个通用的 .apk (事实上,在 github 代码中,你可以看到 `--mode=universal` 标志。) (2认同)

Chr*_*her 7

有一个名为的工具bundletool,可以从您的AAB文件中创建APK:

在此处找到有关此工具的详细信息:https : //developer.android.com/studio/command-line/bundletool

但是这里有一些来自该站点的亮点:

建筑APK

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

bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
Run Code Online (Sandbox Code Playgroud)

请注意,上面的命令会创建一个未签名APK的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
Run Code Online (Sandbox Code Playgroud)

安装APK

bundletool install-apks --apks=/MyApp/my_app.apks
Run Code Online (Sandbox Code Playgroud)

生成一组设备专用的APK

bundletool build-apks --connected-device --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
Run Code Online (Sandbox Code Playgroud)


Ama*_*dra 5

有关更多信息,请参考Geek仪表板

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

java -jar bundletool.jar build-apks --bundle=your_app.aab --output=your_app.apks --mode=universal
Run Code Online (Sandbox Code Playgroud)

其中 bundletool.jar是您在此处下载的bundletool jar文件

your_app.aab是您的应用程序的Android应用程序捆绑包

your_app.apks是输出的APKs存档文件,将在您运行命令后生成。

运行上述命令时,请确保将bundletool.jarAAB文件放在同一文件夹中。

现在,您需要更改your_app。apks文件格式为your_app。zip并将其解压缩以找到Universal.apk文件

在此处输入图片说明

注意–overwrite如果已有同名APK,使用标志覆盖APK文件。否则,bundletool命令将引发致命错误。