Структура проекта:
Проект приложения -> зависит от проекта библиотеки
В библиотечном проекте есть папка для скомпилированных 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?
В конце концов, мне не нужно было использовать ароматы продукта.
Для проекта библиотеки я добавил следующее:
android { sourceSets { main { jniLibs.srcDirs = ['libs'] } } }
В папке libs была папка внутри «armeabi-v7a», и поскольку это моя единственная цель, она работала с удовольствием.
Файлы ndk (.so) распространяются в проект андроида, который использует проект библиотеки Android.
Пример с новым плагином для градиента Android .
Требования:
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 плагина.