从 aab 文件生成 Apk 文件(android 应用程序包)
Generate Apk file from aab file (android app bundle)
有什么方法可以通过终端或使用 android studio 从 android app Bundle 生成 apk 文件?
By default, the IDE does not use app bundles to deploy your app to a
local device for testing
参考bundletool命令
对于 Debug apk 命令,
bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
发布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 的发布版本时一直在使用以下命令(我希望它也能帮助其他人):
从 Github Repository 下载 bundletool
jar 文件(最新版本 > 资产 > bundletool-all-version.jar 文件)。将该文件重命名为 bundletool.jar
从 Android Studio 生成您的 aab 文件,例如:myapp-release.aab
运行 以下命令:
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
myapp.apks
将生成文件
确保您的设备已连接到您的机器
现在 运行 按照以下命令将其安装到您的设备上:
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
但这里有一些摘自该网站的亮点:
构建 APK
当 bundletool 从您的 app bundle 生成 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
好的,这是我必须做的完整方法:
从此link下载bundletool-all-0.10.3.jar
,下载可用的最新版本
使用 android 工作室创建应用程序包并找到其路径:
在我的例子中是 E:\Projects\Android\Temp\app\build\outputs\bundle\debug\app.aab
将 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
- 这将创建一个文件
out_bundle_archive_set.apks
,将其重命名为 .zip out_bundle_archive_set.zip
,解压此文件并完成 您将有多个 apk 文件
要直接在外部设备上安装,请使用:
java-罐子"E:\Temp\bundletool-all-0.6.0.jar" install-apks --apks=out_bundle_archive_set.apks
勾选这个blog post for more info . also check out official site
人们已经解释了如何使用命令行执行此操作。为了完成,我想我也会通过 Android Studio 中的 UI 展示完成它的方法。
当您打开 "Run/Debug Configurations" 时,您可以 select "APK from app bundle"(而不是 "Default APK")。
见截图:
到目前为止还没有人提供从AAB获取APK的解决方案。
此解决方案将生成通用二进制文件作为 apk。
将 --mode=universal
添加到您的 bundletool
命令中(如果您需要签名的应用程序,请根据需要使用 --ks 参数)。
bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
--mode=universal
主要步骤: 将输出文件名从 .apks
更改为 .zip
解压缩并探索
文件 universal.apk
是您的应用
这个通用二进制文件可能会非常大,但对于发送到 QA 部门或在 Google Play 商店以外的任何地方分发应用程序是一个很好的解决方案。
对于那些希望从您的 Android App Bundle 生成单个通用 APK 文件的用户,您必须在 运行 宁 build-apks
命令时使用 --universal
标志.
java -jar bundletool.jar build-apks --bundle=your_app.aab --output=your_app.apks --mode=universal
在哪里
bundletool.jar是你下载的bundletool jar文件here
your_app.aab 是您应用的 Android App Bundle
your_app.apks 是在您 运行 命令后生成的输出 APK 存档文件。
在执行上述命令时 运行 确保将 bundletool.jar 和 您的 AAB 文件 放在同一个文件夹。
现在,您需要将 your_app.apks 文件格式更改为 your_app.zip 并且提取它以找到 universal.apk 文件
注意:如果已有同名的APK文件,请使用–overwrite
标志覆盖APK文件。否则,bundletool
命令将抛出一个致命错误。
在 mac 上可以使用自制程序轻松完成
brew install bundletool
您可以使用以下命令生成apks
bundletool build-apks --bundle=aab_path.aab --output=release.apks
以上命令生成 apks 文件,稍后可以提取该文件以提供各种 apk 文件。要查看所有生成的文件,请将扩展名从 .apks 更改为 .zip,然后只提取文件。
然后您可以在连接的设备上使用此命令安装 apk
bundletool install-apks --apks=release.apks
我觉得这个方法效率更高
这是我所做的。
首先,我在 Mac 上。
因此,在本官方指南中 https://reactnative.dev/docs/signed-apk-android,请遵循以下步骤。
- 运行这个命令
sudo keytool -genkey -v -keystore my-upload-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
您可以将 my-upload-key 的名称更改为您的选择
- 根据指南设置 gradle 变量
- 也按照“将签名配置添加到应用的 Gradle 配置”这一点的指南执行相同操作
- 现在您可以执行以下操作,而不是继续(这将生成 AAB 文件)。
4.1 我在 Android Studio
中打开同一个项目(android 文件夹)
4.2 来自Menu Options > Build > Clean Project
4.3 单击 Make Project 按钮并让它完成(如果您可以 运行 使用 npm run android
,那么应该可以顺利完成)
Make Project
4.4 完成后,点击 Menu options > Build > Generate Signed Bundle/APK...
Generate Signed Bundle/APK...
4.5 在下一个屏幕中选择 APK 单选按钮并单击下一步
Choose APK option
4.6 在下一个屏幕中,浏览到您在第一步中生成的密钥库文件及其密码、别名和密码,单击下一步。
Final Step
等待它完成。您可能会看到一些错误,但更重要的是,最后您应该会在右下角看到一个弹出窗口,上面写着“定位”。单击它,您将找到您的应用程序-release.apk.
祝你好运
我开发了一个 windows 工具,用于在 Python 中将 .aab 文件转换为 .apk。
它支持创建调试和签名的 apk,可以直接安装到通过 USB 连接的默认 android 设备。
它在后端使用 google 的捆绑工具。
https://aabtoapkconverter.com/
编辑:
源代码现已在 github.
上可用
这是我开发并与世界分享的第一个工具。希望它有用。我乐于接受建议和错误报告。
有什么方法可以通过终端或使用 android studio 从 android app Bundle 生成 apk 文件?
By default, the IDE does not use app bundles to deploy your app to a local device for testing
参考bundletool命令
对于 Debug apk 命令,
bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
发布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 的发布版本时一直在使用以下命令(我希望它也能帮助其他人):
从 Github Repository 下载
bundletool
jar 文件(最新版本 > 资产 > bundletool-all-version.jar 文件)。将该文件重命名为bundletool.jar
从 Android Studio 生成您的 aab 文件,例如:myapp-release.aab
运行 以下命令:
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
myapp.apks
将生成文件确保您的设备已连接到您的机器
现在 运行 按照以下命令将其安装到您的设备上:
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
但这里有一些摘自该网站的亮点:
构建 APK
当 bundletool 从您的 app bundle 生成 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
好的,这是我必须做的完整方法:
从此link下载
bundletool-all-0.10.3.jar
,下载可用的最新版本使用 android 工作室创建应用程序包并找到其路径:
在我的例子中是
E:\Projects\Android\Temp\app\build\outputs\bundle\debug\app.aab
将 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
- 这将创建一个文件
out_bundle_archive_set.apks
,将其重命名为 .zipout_bundle_archive_set.zip
,解压此文件并完成 您将有多个 apk 文件
要直接在外部设备上安装,请使用:
java-罐子"E:\Temp\bundletool-all-0.6.0.jar" install-apks --apks=out_bundle_archive_set.apks
勾选这个blog post for more info . also check out official site
人们已经解释了如何使用命令行执行此操作。为了完成,我想我也会通过 Android Studio 中的 UI 展示完成它的方法。
当您打开 "Run/Debug Configurations" 时,您可以 select "APK from app bundle"(而不是 "Default APK")。
见截图:
到目前为止还没有人提供从AAB获取APK的解决方案。
此解决方案将生成通用二进制文件作为 apk。
将
--mode=universal
添加到您的bundletool
命令中(如果您需要签名的应用程序,请根据需要使用 --ks 参数)。bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks --mode=universal
主要步骤: 将输出文件名从
.apks
更改为.zip
解压缩并探索
文件
universal.apk
是您的应用
这个通用二进制文件可能会非常大,但对于发送到 QA 部门或在 Google Play 商店以外的任何地方分发应用程序是一个很好的解决方案。
对于那些希望从您的 Android App Bundle 生成单个通用 APK 文件的用户,您必须在 运行 宁 build-apks
命令时使用 --universal
标志.
java -jar bundletool.jar build-apks --bundle=your_app.aab --output=your_app.apks --mode=universal
在哪里 bundletool.jar是你下载的bundletool jar文件here
your_app.aab 是您应用的 Android App Bundle
your_app.apks 是在您 运行 命令后生成的输出 APK 存档文件。
在执行上述命令时 运行 确保将 bundletool.jar 和 您的 AAB 文件 放在同一个文件夹。
现在,您需要将 your_app.apks 文件格式更改为 your_app.zip 并且提取它以找到 universal.apk 文件
注意:如果已有同名的APK文件,请使用–overwrite
标志覆盖APK文件。否则,bundletool
命令将抛出一个致命错误。
在 mac 上可以使用自制程序轻松完成
brew install bundletool
您可以使用以下命令生成apks
bundletool build-apks --bundle=aab_path.aab --output=release.apks
以上命令生成 apks 文件,稍后可以提取该文件以提供各种 apk 文件。要查看所有生成的文件,请将扩展名从 .apks 更改为 .zip,然后只提取文件。
然后您可以在连接的设备上使用此命令安装 apk
bundletool install-apks --apks=release.apks
我觉得这个方法效率更高
这是我所做的。 首先,我在 Mac 上。 因此,在本官方指南中 https://reactnative.dev/docs/signed-apk-android,请遵循以下步骤。
- 运行这个命令
sudo keytool -genkey -v -keystore my-upload-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
您可以将 my-upload-key 的名称更改为您的选择 - 根据指南设置 gradle 变量
- 也按照“将签名配置添加到应用的 Gradle 配置”这一点的指南执行相同操作
- 现在您可以执行以下操作,而不是继续(这将生成 AAB 文件)。
4.1 我在 Android Studio
中打开同一个项目(android 文件夹)4.2 来自Menu Options > Build > Clean Project
4.3 单击 Make Project 按钮并让它完成(如果您可以 运行 使用 npm run android
,那么应该可以顺利完成)
Make Project
4.4 完成后,点击 Menu options > Build > Generate Signed Bundle/APK...
Generate Signed Bundle/APK...
4.5 在下一个屏幕中选择 APK 单选按钮并单击下一步 Choose APK option
4.6 在下一个屏幕中,浏览到您在第一步中生成的密钥库文件及其密码、别名和密码,单击下一步。 Final Step
等待它完成。您可能会看到一些错误,但更重要的是,最后您应该会在右下角看到一个弹出窗口,上面写着“定位”。单击它,您将找到您的应用程序-release.apk.
祝你好运
我开发了一个 windows 工具,用于在 Python 中将 .aab 文件转换为 .apk。
它支持创建调试和签名的 apk,可以直接安装到通过 USB 连接的默认 android 设备。
它在后端使用 google 的捆绑工具。
https://aabtoapkconverter.com/
编辑: 源代码现已在 github.
上可用这是我开发并与世界分享的第一个工具。希望它有用。我乐于接受建议和错误报告。