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

Gradle build tools 1.5.0 excludes .so files

我正在使用一个依赖于共享对象文件 ex 的库。 libName.so 并且在过去,我只是将 libName.so 文件与我分发的 jar 打包在一起。现在通过将 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 1.5.0)

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

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

例如。新的 jar 文件结构

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

如果您的本地库以这种方式打包到您的 jar 文件中,您应该还可以调用 System.loadLibrary("LibraryName").