Подтвердить что ты не робот

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

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

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

Проект библиотеки имеет папку для скомпилированных jni libs

jniLibs.srcDirs = ['libs']

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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

Ответ 2

Пример с новым андроидным экспериментальным плагином gradle.


Требования:

  • Android Studio 1.5 +
  • gradle -2,10
  • gradle -experimental: 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/x 86

корневая папка /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"
                    }
                }
            }
        }
    }
}

Ответ 3

Я работаю с Android Studio 2.1, и я обнаружил, что добавление записи source или sourceSets в мой build.gradle не имеет никакого видимого эффекта. Вместо этого я обнаружил, что мне нужно следующее:

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