从捆绑文件生成独立的 apk (app.aab)

Generating a standalone apk from a bundle file (app.aab)

我在使用 bundletool 从 android 中的捆绑文件创建独立 apk 时遇到问题。

我编写了一个包含多个模块的应用程序(可使用 splitInstallManager 单独下载)并将其部署为捆绑 (app.aab) 文件。 到目前为止一切顺利,但无论出于何种原因,我还需要为一个特定设备生成一个独立的 apk,但我似乎无法完成它。

我有: 1. 我的 app.aab 2.我的密钥库 3. 使用 "bundletool get-device-spec"

生成的设备规格文件

我在做什么:

java -jar bundletool.jar build-apks --ks=[my keystore] --ks-pass=[password] --ks-key-alias=[alias] --key-pass=[key password] --bundle=app.aab --output=app.apks --device-spec=device-specs.json --overwrite

根据

bundletool help build-apks

当您将设备规格参数传递给工具时,它默认使用“--mode=default”,这意味着生成的 apks 文件应包含:“...如果未设置或设置为 'default'我们生成拆分、独立和即时 APK。...”。

问题是生成的 app.apks 文件仅包含 "splits" 子文件夹。

此外,我收到以下警告: 警告:发生了非法的反射访问操作 警告:com.google.protobuf.UnsafeUtil(文件:/home/oberon/Downloads/bundletool.jar)对字段 java.nio.Buffer.address 的非法反射访问 警告:请考虑将此报告给 com.google.protobuf.UnsafeUtil 的维护者 警告:使用 --illegal-access=warn 启用进一步非法反射访问操作的警告 警告:在未来的版本中将拒绝所有非法访问操作

如何生成独立的 apk?!

独立 APK 仅在 minSdkVersion < 21 时生成。

如果您想要一个通用 APK,可以使用 --mode=universal,它将构建一个包含所有内容的单个 APK。如下所述 https://developer.android.com/studio/command-line/bundletool