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").
我正在使用一个依赖于共享对象文件 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").