nativeLibraryDir在升级到Gradle 5.6.4和Android Studio 3.6.1后显示为空
在将Gradle从5.4.1升级到5.6.4,将Android Studio从3.5.3升级到3.6.1之后,我的库似乎不再存在于nativeLibraryDir中。我当前访问我的库的实现如下:nativeLibraryDir在升级到Gradle 5.6.4和Android Studio 3.6.1后显示为空,android,gradle,android-ndk,native,Android,Gradle,Android Ndk,Native,在将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”数组按预期包含我的所有库的列表
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),但我无法再查看文件夹中的内容。文件夹权限似乎未更改 使用这个版本
dependencies {
classpath 'com.android.tools.build:gradle:3.6.0'
}
在Gradle 5.6.4中,我也遇到了这个问题,我最终通过以下方式解决了这个问题:
// AndroidManifest.xml
<application
...
android:extractNativeLibs="true"
...
>
//AndroidManifest.xml
当
extractNativeLibs
设置为true
时,so文件
复制到lib/xxx
文件夹。这些版本仍会出现问题找到任何解决方案?相同问题,请参见:Saved my day谢谢。