Android App Bundle(仅限)- 本机库无法加载

Roy*_*Roy 9 android native gradle

几个月前,我在 Google Play 生产中切换到 Android App Bundle (ABB),并发布了几个更新 - 一切都很好。上周,我进行了 Android Studio 更新,发现只有 ABB 构建无法在运行时加载我的本机库之一。但是 APK 构建(发布)和调试构建可以很好地加载本机库。

我被迫部署一个 APK 来替换生产中损坏的 ABB 版本。

我发现 ABB 软件包包含所有四个(arm64-v8a、armeabi-v7a、x86、x86_64)目录,并且我所有的 .SO 文件都在其中(与 APK 软件包中的相同)。

为了进一步调查,我编辑了 Android Studio 运行配置以部署“来自应用程序包的 APK”,并验证本机库无法仅针对 ABB 构建加载(其他构建模式都可以)。

我的环境:Android Studio 4.0(目前最新),'io.fabric.tools:gradle:1.28.0'(ABB一直工作到1.26.1),compileSdkVersion 28,buildToolsVersion'28.0.3'

没有简单的方法可以回滚最新更新。请让我知道如何解决此构建问题。感谢你的帮助。

Roy*_*Roy 12

终于找到了解决此问题的解决方法。我使用的第三方库不符合最近的 Gradle 更改。当设备上的 ABB 构建 APK 时,库的 Java 代码不知道其 SO 文件的正确路径。gradle.properties 文件中的设置效果很好。

根据Gradle 发行说明

构建 Android App Bundle 时,从面向 Android 6.0(API 级别 23)或更高版本的应用程序包生成的 APK 现在默认包含本机库的未压缩版本。此优化避免了设备复制库的需要,从而减少了应用程序的磁盘大小。如果您想禁用此优化,请将以下内容添加到您的 gradle.properties 文件中:

android.bundle.enableUncompressedNativeLibs = false
Run Code Online (Sandbox Code Playgroud)