在设备上安装Android应用程序包

我使用新的Android App Bundle格式构建我的项目。通过APK文件,我可以将APK下载到我的设备上,打开它,并立即安装应用程序。aab格式),我的Nexus 5X运行Android 8.1无法打开该文件。有没有什么方法可以像apk一样方便地在设备上安装aab ?

257162 次浏览

简短的回答:

不直接。

再答:

Android应用程序捆绑是谷歌Play Store上应用程序的默认发布格式。但是Android设备需要.apk文件来安装应用程序。

Play Store或你正在安装的任何其他源将从包中提取apks,签名每个apks,然后将它们安装到特定的目标设备。

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

你可以使用内部应用共享将应用程序的可调试构建上传到Play Store,并与测试人员共享。

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

但是有一种方法可以通过命令行安装它,使用下面的文档你可以通过BundleTool将apk安装到设备上

根据“@Albert Vila Calvo”的评论,他指出使用HomeBrew安装捆绑工具需要使用brew install bundletool

您现在可以从aab文件中安装extract apks并将其安装到设备中

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

Java -jar bundletool-all-0.3.3.jar build-apks——bundle=bundle。艺术展——输出=应用。apk, ks = my-release-key。密钥库——ks-key-alias=别名——ks-pass=pass:密码

参数:

  • ——bundle -> Android bundle .aab文件
  • ——output ->生成的apk文件的目标和文件名
  • ——ks ->用于生成Android Bundle的Keystore文件
  • ——ks-key-alias -> keystore文件的别名
  • ——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文件

你不能将应用包[NAME].aab直接安装到android设备上,因为它是发布格式的,但有办法从bundle中提取所需的apk并将其安装到你的设备上,过程如下

  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文件,跳转到文件夹out_bundle_archive_set > standalones,在那里您将看到所有apks的列表

android开发人员引用了bundle工具链接

android developer reference

使用(Linux): < >强cd android 。/ gradlew assemblyRelease | assemblyDebug < /强> < / p >

为每个用例生成一个无符号APK(用于调试或测试)

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

MAC:

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

如果您想从您的aab安装apk到您的设备进行测试,那么您需要在连接的设备上运行它之前编辑配置。

  1. 进入编辑配置
    enter image description here < / >
  2. 选择Deploy下拉菜单,将其从“Default apk”改为“apk from app bundle”.enter image description here
  3. 应用更改,然后在连接的设备上运行它。进行此更改后,构建时间将增加。

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

对于那些想要单个universal.apk可以在每个android设备上运行的人:

brew install bundletool
bundletool build-apks --mode universal --bundle ./app-release.aab --output ./app.apks
mv app.apks app.zip
unzip app.zip

现在,你可以得到你的universal.apk

有没有什么方法可以像apk一样方便地在设备上安装aab ?

因为安装是由第三方应用程序或移动公司的文件管理器如应用程序完成的 即将到来的文件管理器版本,从此以后,将与&;aab&;管理工具。< / p >

我搜索了“android aab installer"在playstore找到一个

enter image description here < br > < br > 故意不给它命名。
我安装的那个,在线解压包,
但在那之后,这个应用程序无法自行安装这个提取的应用程序(在我的mi [miui]设备上)。
但是这个应用程序将在线提取的apk保存在手机内存中,从那里我可以安装它。
记住:< br > 谷歌的“files"应用程序无法安装这个apk
,但
我的系统(内置)文件管理器能够。

这在我的mac上是有效的。 你需要使用一个名为bundletool的工具,如果还没有使用brew

安装,你可以安装它
brew install bundletool

执行该命令解压apks文件并将其存储在所需的位置

bundletool build-apks --bundle=path/to/app-release.aab --output=/path/to/output/app.apks --local-testing

在连接的Android设备上安装

bundletool install-apks --apks=/path/to/output/app.apks

我已经在这里的gist https://gist.github.com/maheshmnj/6f5debbfae2b8183d94ca789d081f026中注意到完整的命令输出

如果你想在不使用PLAY STORE的情况下安装应用程序包,你需要将你的构建变体更改为“release”;在Android工作室。

如果你不能自己开发应用程序,但有一个发布包,那么请参考最流行的答案。

去Android Studio >建立在选择Build Variant..

enter image description here

一旦你这样做,你的构建配置可能开始显示错误。 这是因为您现在还需要在这个配置中提供签名详细信息(这引用了来自build.gradle的签名详细信息)

enter image description here

你可以编辑配置,然后转到底部的修复按钮,它会要求你填写签名细节。

或者你可以编辑build.gradle 确保您提供了buildTypes{}和signingConfigs {}

android {
signingConfigs {
release {
storeFile file('<Your PATH>\\keystore.jks')
storePassword 'XXXXX
keyAlias 'XXXXX'
keyPassword 'xxxxx'
}
debug {
storeFile file('<Your PATH>\\keystore.jks')
storePassword 'XXXXX
keyAlias 'XXXXX'
keyPassword 'xxxxx'
}
}
compileSdkVersion 32
defaultConfig {
....
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
debug
{
signingConfig signingConfigs.debug
}
}
...




}


dependencies {


...
}

在Android Studio开始正确反射之前会有一到两分钟的延迟。否则,你可以做一个干净的重建,然后运行应用程序。

当你这次运行应用程序时,它将以发布模式安装在目标设备上。 你可能需要一种方法来识别已安装应用的构建变体。你可以在应用的某个地方显示构建名称和变体。或者如果你在某个地方有一个按钮,只在调试模式下显示,你可以检查

如果你有项目,你可以用android studio构建一个应用程序,或者直接将它推送到设备上,如果你运行调试或发布配置,设备连接并选择为目标,只要你在设备上启用开发模式adb,并在连接到你的机器时点击信任这台计算机。

但如果你想要在另一部手机上安装一款应用,你可以选择免费的在线服务,将play store链接转换为apk的直接下载。只需从终端打开设备上的add调试和adb install <path-to-apk>

如果你有多个连接adb的设备,你可以adb devices获取它们的标识符列表,adb install <path-to-apk> <device-id>也可以工作。或者,您可以根据自己的需要,利用adb在多台设备上同时做很多事情。甚至还有通过wifi进行adb的方法。

你需要从Android -sdk工具的adb来做这些事情,虽然安装了Android Studio,你会有一个本地安装,但它可能不在你的路径。然而,工作室终端可能有访问它,因为它将是你的IDE保存在首选项的sdk路径。如果没有,你可以下载一个独立的sdk,或者从它的首选项中找出哪个工作室正在使用

  • 将adb从所述sdk的platform-tools目录中添加到您的路径(最好)
  • 从您刚刚定位的绝对路径调用adb,并继续点击重新使用上一个命令,换出apk/设备
  • CD到adb目录,并将其与每个apks的完整路径一起使用(最简单)

如果你现在使用的是Maui, Visual Studio 2022只创建AAB文件;但是,您可以从命令行创建APK。

更改目录到你的项目所在的位置并运行这个:

dotnet publish -f:net6.0-android -c:Release /p:AndroidSigningKeyPass=blah

Windows 11:

p C: / folder-with-aab-file>C:\dev\bundletool-all-1.9.1\bundletool.jar build-apks——bundle=app-release= app-release.aab艺术展——输出。apk——模式=普遍

p C: / folder-with-aab-file>任正非app-release.aab。apk app-release.aab.apks.zip

解压zip文件后,apk文件的名称为:universal.apk