Как я могу добавить файлы .so в проект библиотеки андроидов, используя gradle 0.7+

Структура проекта:

Проект приложения -> зависит от проекта библиотеки

В библиотечном проекте есть папка для скомпилированных jni-библиотек

jniLibs.srcDirs = ['libs'] 

И я попытался добавить следующее к элементу android элемента build.gradle в соответствии с примером https://android.googlesource.com/platform/tools/build/+/2e1f7810edd76d92cee8d3e06bc4dec0c288adea/tests/ndkSanAngeles/build.gradle, однако Проекты андроидной библиотеки не поддерживают productFlavours и, как таковая, сборка завершается с ошибкой «Не удалось найти метод productFlavors () для аргументов [dghdhd] в проекте"

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

Есть ли способ добавить поддержку ndk в проект библиотеки Android?

Solutions Collecting From Web of "Как я могу добавить файлы .so в проект библиотеки андроидов, используя gradle 0.7+"

В конце концов, мне не нужно было использовать ароматы продукта.

Для проекта библиотеки я добавил следующее:

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

В папке libs была папка внутри «armeabi-v7a», и поскольку это моя единственная цель, она работала с удовольствием.

Файлы ndk (.so) распространяются в проект андроида, который использует проект библиотеки Android.

Пример с новым плагином для градиента Android .


Требования:

  • Android Studio 1.5+
  • Gradle-2,10
  • Gradle-экспериментальное: 0.6.0-alpha5

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 .

В этом случае вы должны вручную установить расположение библиотек в файле 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, и я обнаружил, что добавление источников или исходных записей в мой build.gradle не оказало никакого видимого эффекта. Вместо этого я обнаружил, что мне нужно следующее:

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

Согласно этой теме:

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

Неспособность добавлять файлы .so в библиотечные проекты была ошибкой, которая была исправлена ​​в v0.8 плагина.