【发布时间】:2018-12-08 02:50:07
【问题描述】:
我正在使用新的应用程序包格式 (aab) 发布应用程序。该应用程序包含一些用于 armeabi-v7a 的本机库。当我通过 Google Play 在 arm64-v8a 架构上安装应用程序时,它不包含没有 arm64-v8a so 文件的本机库。
根据https://stackoverflow.com/a/39622499/534471,armeabi-v7a 库应该在 arm64-v8a 设备上运行(通过 adb 安装时它可以正常工作,因此确实可以工作)。
Google Play 控制台按架构、屏幕密度等显示不同的 apk。从 apk 大小我可以清楚地分辨出哪些不包含本机库。我还使用本机库监视器应用程序来分析已安装的 apk,它显然不包括我需要的本机库(如果应用程序具有 arm64-v8a so 文件,则它包括 arm64-v8a 本机库但如果只有 armeabi 则不包括-v7a 版本)。
我的 gradle 构建文件包含一小段用于捆绑配置的代码:
bundle {
language {
enableSplit = false
}
density {
enableSplit = true
}
abi {
enableSplit = true
// include 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
}
}
现在我的问题是:有没有办法告诉构建工具在每个 apk 中包含“次佳”本机库,次佳是可以在特定架构上运行的最接近的版本?
PS:如果我为 abi 设置 enableSplit = false,那么它将包含本机库(如预期的那样),但不幸的是,对于所有平台,包括仅 20MB 大的 x86...
【问题讨论】:
标签: android google-play android-app-bundle