更新到 Gradle 5.6.4 和 Android Studio 3.6.1 后,nativeLibraryDir 显示为空

Bre*_*ley 5 android native gradle android-ndk

将 Gradle 从 5.4.1 更新到 5.6.4 并将 Android Studio 从 3.5.3 更新到 3.6.1 后,nativeLibraryDir 中似乎不再存在我的库。我当前访问库的实现如下:

File libDirectory = new File(context.getApplicationInfo().nativeLibraryDir);
String files[] = libDirectory.list();
Run Code Online (Sandbox Code Playgroud)

在更新之前,我可以调试并看到“文件”数组包含预期的所有库的列表。更新后,“文件”数组显示为空。

我已经分析了我的 APK 并确认包中确实存在这些库。

我是否以一种糟糕的方式检索路径?是否存在我不知道的所需权限?我正在使用 CMake 来构建我的库:

externalNativeBuild {
    cmake {
        path '../../../common/CMakeLists.txt'
    }
}
Run Code Online (Sandbox Code Playgroud)

使用 NDK 版本 21.0.6113669

更新:恢复到 NDK r19c 会产生相同的结果

更新:更新前后libDirectory解析为/data/app/com.example.application-1/lib/arm

更新:android.useNewApkCreator=falsegradle.properties 中的设置会产生相同的结果

更新:使用设备文件资源管理器,我可以在更新之前查看 lib/arm/ 文件夹中的库。更新后,lib/arm/ 文件夹的大小仍然相同(4KB),但我无法再查看该文件夹中的内容。文件夹权限似乎没有变化。

小智 8

我也遇到了这个问题,最后通过以下方法解决了:

// AndroidManifest.xml
<application
  ...
  android:extractNativeLibs="true"  
  ...
>
Run Code Online (Sandbox Code Playgroud)

extractNativeLibs设置为 时trueso files复制到lib/xxx文件夹。


小智 -2

使用这个版本

dependencies {
    classpath 'com.android.tools.build:gradle:3.6.0'

}
Run Code Online (Sandbox Code Playgroud)

与 Gradle 5.6.4