更新到 Gradle 5.6.4 和 Android Studio 3.6.1 后 nativeLibraryDir 显示为空
Posted
技术标签:
【中文标题】更新到 Gradle 5.6.4 和 Android Studio 3.6.1 后 nativeLibraryDir 显示为空【英文标题】:nativeLibraryDir appears empty after updating to Gradle 5.6.4 and Android Studio 3.6.1 【发布时间】:2020-06-15 07:12:21 【问题描述】:在将 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();
在更新之前,我可以调试并看到“文件”数组包含我所有库的列表,如预期的那样。 更新后,'files' 数组显示为空。
我分析了我的 APK 并确认包中确实存在这些库。
我是否以糟糕的方式检索路径?是否有我不知道的必需权限?我正在使用 CMake 构建我的库:
externalNativeBuild
cmake
path '../../../common/CMakeLists.txt'
使用 NDK 版本 21.0.6113669
更新: 恢复到 NDK r19c 会产生相同的结果
更新:libDirectory
在更新前后解析为 /data/app/com.example.application-1/lib/arm
更新:在 gradle.properties 中设置 android.useNewApkCreator=false
会产生相同的结果
更新:使用设备文件资源管理器,我可以在更新之前查看 lib/arm/ 文件夹中的库。更新后,lib/arm/ 文件夹的大小仍然相同(4KB),但我无法再查看文件夹内的内容。文件夹权限似乎没有改变。
【问题讨论】:
找到解决办法了吗? 同样的问题,关注 【参考方案1】:我也遇到了这个问题,终于解决了:
// AndroidManifest.xml
<application
...
android:extractNativeLibs="true"
...
>
当extractNativeLibs
设置为true
时,so files
复制到lib/xxx
文件夹。
【讨论】:
另见:***.com/questions/42998083/… 拯救了我的一天谢谢。【参考方案2】:使用这个版本
dependencies
classpath 'com.android.tools.build:gradle:3.6.0'
使用 Gradle 5.6.4
【讨论】:
这些版本仍然存在问题以上是关于更新到 Gradle 5.6.4 和 Android Studio 3.6.1 后 nativeLibraryDir 显示为空的主要内容,如果未能解决你的问题,请参考以下文章
最低支持的Gradle版本是6.1.1。当前版本为5.6.4
更新到 android gradle 插件 3.5 后的 proguard 问题
Android Gradle:signingConfig.name 不能为空
SDK接入之Could not find gradle.jar (com.android.tools.build:gradle:3.6.4)