在设备上安装Android App Bundle


113

我使用新的Android App Bundle格式构建了项目。使用APK文件,我可以将APK下载到我的设备上,打开它,然后立即安装该应用。我以捆绑(.aab格式)下载了我的应用,而运行Android 8.1的Nexus 5X无法打开该文件。有什么方法可以以与APK相同的便捷方式在设备上安装AAB?


2
看起来比简单的APK需要执行更多步骤:developer.android.com/guide/app-bundle/test
Mike M.

Answers:


107

简短答案:

不直接。

更长的答案:

Android App Bundles是一种发布格式。Android设备需要.apk文件才能安装应用程序。

PlayStore或您要从中安装的任何其他源都需要从捆绑中提取apk,对每个apk签名,然后将它们安装到特定于目标设备。

从.aab到.apk的转换是通过bundletool完成的。

您可以使用内部应用共享应用的可调试版本上载到Play商店,并与测试人员共享。


在这种情况下,考虑到我们无法在Play商店上发布调试应用,我们将使用“构建捆绑包”选项,而不是已签名捆绑包
Oush

我主要是为了进行本地测试。
keyboardsurfer

3
bundletool的发布(而不是源文件)在这里:github.com/google/bundletool/releases
Kari

当前答案错误,请参阅其他答案以创建apks文件。
CoolMind

1
@ericn应用程序的初始“发布”正在按照通常的过程进行。之后,您执行的任何内部应用共享操作都不会受到评论的阻止。
keyboardsurfer

52

直接从设备安装aab,我找不到解决办法。

但是有一种方法可以使用以下文档通过命令行进行安装。您可以通过BundleTool将apk安装到设备

根据“ @Albert Vila Calvo”的评论,他指出使用HomeBrew使用来安装bundletools brew install bundletool

您现在可以安装aab文件中的解压缩apk并将其安装到设备上

通过下一个命令从中提取apk文件

java -jar bundletool-all-0.3.3.jar build-apks --bundle = bundle.aab --output = app.apks --ks = my-release-key.keystore --ks-key-alias = alias- -ks-pass = pass:密码

参数:

  • --bundle-> Android Bundle .aab文件
  • --output->生成的apk文件的目标和文件名
  • --ks->用于生成Android捆绑包的密钥库文件
  • --ks-key-alias->密钥库文件的别名
  • --ks-pass->别名文件的密码(请注意密码值前的“ pass”前缀)

然后您将拥有一个扩展名为.apks的文件,因此现在您需要将其安装到设备上

java -jar bundletool-all-0.6.0.jar install-apks --adb = / android-sdk / platform-tools / adb --apks = app.apks

参数:

  • --adb-> adb文件的路径
  • --apks->需要安装Apks文件

25
如果使用Mac,则可以使用Homebrew:安装Bundletool brew install bundletool。然后只需运行以下命令:bundletool build-apks --bundle=./app/release/app.aab --output=./app/release/app.apks
Albert Vila Calvo

3
--ks-pass = pass:password指定密钥库的密码。要指定密钥文件的密码,请使用--key-pass = pass:password
smitty1

我遇到了同样的问题,我按照您描述的步骤进行了操作,但是,当应用安装在我的android设备中时,我无法打开它(它会自动打开关闭窗口)
aName

谢谢!--key-pass=pass:...是必需的,但奇怪的是密码不正确,因此我必须手动输入。之后... install-apks --adb=...它写道:“本的APK已提取的目录:......”,但该文件夹不存在,它不会在设备上安装。
CoolMind

示例: C:\Users\Aterr\Desktop\hack>java -jar "C:\Users\Aterr\Desktop\hack\bundletool-all-0.10.3.jar" install-apks --adb="C:\Users\Aterr\AppData\Local\Android\Sdk\platform-tools\adb.exe" --apks="C:\Users\Aterr\Desktop\hack\extractedapks.apks"
Choletski '19

24

您无法将应用程序捆绑包[NAME].aab直接安装到android设备,因为它是发布格式,但是有一种方法可以apk从其中提取所需的内容bundle并将其安装到您的设备上,过程如下

  1. 此处下载bundletool
  2. 在您的终端上运行它,
java -jar bundletool.jar build-apks --bundle=bundleapp.aab --output=out_bundle_archive_set.apks
  1. 最后一步将生成一个名为的文件out_bundle_archive_set.apks,只需将其重命名out_bundle_archive_set.zip为zip文件并解压缩该zip文件,然后跳转到文件夹中out_bundle_archive_set > standalones,您将在其中看到所有apk的列表

有来自Android开发人员的捆绑工具链接参考

android开发人员参考



@CoolMind签名密钥和密码是当您要从捆绑包中构建一组已签名的apk,并且想要在设备上部署apk时,请检查更新的答案
Ali Tamoor

第三步真的很需要,非常感谢。
Dhiren

没有命名为独立文件夹,而是命名为拆分
Gopal Singh Sirvi,

15

对于MAC:

brew install bundletool
bundletool build-apks --bundle=./app.aab --output=./app.apks
bundletool install-apks --apks=app.apks

所做的工作没有任何问题。保存了一天!
asozcan

在第三个命令终端显示了应用程序的路径后,但文件夹不可用
Furquan

1
@Furquan,显示的路径是所连接设备中的路径。该命令将apk安装到您的设备上。
Bijoy Thangaraj

6

如果要从aab安装apk到设备以进行测试,则需要编辑配置,然后才能在连接的设备上运行它。

  1. 转到编辑配置
    在此处输入图片说明
  2. 选择部署下拉菜单,然后将其从“默认apk”更改为“来自应用捆绑包的APK”。在此处输入图片说明
  3. 应用更改,然后在连接的设备上运行它。进行此更改后,构建时间将增加。

这将直接在从aab连接的设备上安装apk。


1
这帮助我复制了一个仅在发行版本中出现的错误。原来是从AAB安装时出现的错误。非常感谢。
Cerlin

只是为了澄清一下,我假设说明和屏幕截图来自Android Studio?[我使用的是Xamarin,而不是Android Studio。我意识到大多数开发人员都在使用Android Studio。]
ToolmakerSteve

是的,说明和屏幕截图来自android studio 3.6.3。
Kartikeya_M

0

否,如果您在没有其他用户的情况下调试应用,请使用Android Studio中的“构建”>“构建APK”菜单或在您的设备/模拟器中执行该应用,则调试版本apk将自动安装。如果您要与他人调试应用程序,请使用“构建”>“生成签名的APK ...”菜单。如果您想发布测试版,请使用Google Play商店。您的APK将在app\build\outputs\apk\debugapp\release文件夹中。



0

使用(在Linux上): cd android ./gradlew assemblyRelease | assemblyDebug

每种情况都会生成未签名的APK(用于调试或测试)

注意:在Windows上,将gradle可执行文件替换为gradlew.bat

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.