如何使用gradle 0.7+将.so文件添加到android库项目中

项目结构:

应用程序项目 – >取决于库项目

Library Project有一个用于编译jni库的文件夹

jniLibs.srcDirs = ['libs'] 

我已经尝试按照示例应用向build.gradle的android元素添加以下代码https://android.googlesource.com/platform/tools/build/+/2e1f7810edd76d92cee8d3e06bc4dec0c288adea/tests/ndkSanAngeles/build.gradle Android库项目不支持productFlavours,因此组装失败,“无法find方法productFlavors()的项目参数[dghdhd]”

 productFlavors { x86 { ndk { abiFilter "x86" } } arm { ndk { abiFilters "armeabi-v7a", "armeabi" } } } 

有没有办法将ndk支持添加到android库项目?

Solutions Collecting From Web of "如何使用gradle 0.7+将.so文件添加到android库项目中"

最后,我不需要使用产品口味。

对于图书馆项目,我添加了以下内容:

 android { sourceSets { main { jniLibs.srcDirs = ['libs'] } } } 

libs文件夹中有一个名为“armeabi-v7a”的文件夹,因为这是我唯一的工作目标。

ndk文件(.so)被传播到使用android库项目的android项目中。

示例与新的Android实验gradle插件 。


要求:

  • Android Studio 1.5+
  • gradle这个-2.10
  • gradle这个实验性:0.6.0-素α5

1)默认情况下,您可以简单地将所有共享本地库放在main / jniLibs文件夹中。

项目结构

根文件夹/安卓项目

根文件夹/ android_project / app / src / main / jniLibs / x86

根文件夹/ android_project / app / src / main / jniLibs / armeabi-v7a

根文件夹/ android_project / app / src / main / jniLibs / …

Gradle会自动将它们上传到设备。

然后你可以在应用程序中加载库。

 static { System.loadLibrary("mylibrary"); } 

2)您也可以将所有共享的本地库放在自定义位置。

bin / android / Debug目录的path为例。

在这种情况下,您应该手动设置build.gradle文件中的库位置。

项目结构

根文件夹/安卓项目

根文件夹/ bin / android / Debug / jniLibs / x86

根文件夹/ bin / android / Debug / jniLibs / armeabi-v7a

根文件夹/ bin / android / Debug / jniLibs / …

根文件夹/ android_project / app / build.gradle

 apply plugin: 'com.android.model.application' model { android { sources { main { jni { source { srcDirs = [] } } jniLibs { source { srcDirs "/../../bin/android/Debug/jniLibs" } } } } } } 

我正在使用Android Studio 2.1,并且发现将sources或sourceSets条目添加到我的build.gradle中并没有明显的效果。 相反,我发现我需要以下内容:

 android { defaultConfig { ndk { moduleName "libmp3lame" } } 

根据这个线程:

https://groups.google.com/forum/#!topic/adt-dev/nQobKd2Gl_8

不能将.so文件添加到库项目中是一个在插件的v0.8中修复的bug。