我正在使用依赖于共享对象文件的库。 libName.so和过去我只是用我分发的jar打包了libName.so文件。现在将gradle版本从1.3.1更新为1.5.0,
classpath 'com.android.tools.build:gradle:1.5.0' // 1.3.1 -> 1.5.0
我库中的这些.so文件不再添加到应用程序中我的库所依赖的.apk文件中。对于库(例如jar),.so文件是否在assets,libs或jniLibs文件夹中似乎并不重要。
提取我引用的依赖项生成的apk:
离。
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.x:library_with_folder_containing_so_files:version'
}
似乎如果您的文件不是共享对象,则在生成APK时不会删除它们。想知道v1.5.0是否有一个我似乎无法找到的新政策,或者我是否做错了。
答案 0 :(得分:1)
要解决此问题,请不要从assets文件夹加载本机库。相反,如果您将库添加到另一个具有相同文件夹结构的lib文件夹,则gradle构建将不会删除本机库。
实施例。新的jar文件结构
lib
- armeabi
- libLibraryName.so
- x86
- libLibraryName.so
- mips
- libLibraryName.so
如果您的本机库以这种方式打包在jar文件中,您也应该能够调用System.loadLibrary(“LibraryName”)。