Gradle构建工具1.5.0排除.so文件

时间:2016-01-09 01:20:56

标签: android gradle shared-libraries android-gradle build.gradle

我正在使用依赖于共享对象文件的库。 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'
}

之前(Gradle 1.3.1) Gradle v1.3.1

之后(Gradle 1.5.0) Gradle v1.5.0

似乎如果您的文件不是共享对象,则在生成APK时不会删除它们。想知道v1.5.0是否有一个我似乎无法找到的新政策,或者我是否做错了。

1 个答案:

答案 0 :(得分:1)

要解决此问题,请不要从assets文件夹加载本机库。相反,如果您将库添加到另一个具有相同文件夹结构的lib文件夹,则gradle构建将不会删除本机库。

实施例。新的jar文件结构

lib
    - armeabi
        - libLibraryName.so
    - x86
        - libLibraryName.so
    - mips
        - libLibraryName.so

如果您的本机库以这种方式打包在jar文件中,您也应该能够调用System.loadLibrary(“LibraryName”)。