studio r16 r13 ndk instalar android android-ndk android-gradle

r16 - ¿Cómo puedo agregar archivos.so a un proyecto de biblioteca Android usando gradle 0.7+



ndk r13 (4)

Estructura del proyecto:

Proyecto de aplicación -> depende del proyecto de biblioteca

Library Project tiene una carpeta para las librerías jni compiladas

jniLibs.srcDirs = [''libs'']

Y he intentado agregar lo siguiente al elemento de android del build.gradle según la aplicación de ejemplo https://android.googlesource.com/platform/tools/build/+/2e1f7810edd76d92cee8d3e06bc4dec0c288adea/tests/ndkSanAngeles/build.gradle los proyectos de la biblioteca de Android no son compatibles con productFlavours y, por lo tanto, el ensamblaje falla con "No se pudo encontrar el método productFlavors () para los argumentos [dghdhd] en el proyecto"

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

¿Hay alguna manera de agregar soporte ndk a un proyecto de biblioteca de Android?


Al final no necesité usar sabores de productos.

Para el proyecto de la biblioteca, agregué lo siguiente:

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

La carpeta libs tenía una carpeta dentro llamada "armeabi-v7a" y como este es mi único objetivo, funcionó muy bien.

Los archivos ndk (.so) se propagan en el proyecto de Android que utiliza el proyecto de la biblioteca de Android.


Ejemplo con el nuevo plugin gradle experimental android .

Requisitos:

  • Android Studio 1.5+
  • gradle-2.10
  • gradle-experimental: 0.6.0-alpha5

1) Podría simplemente poner todas las bibliotecas nativas compartidas en la carpeta main / jniLibs , por defecto.

Estructura del proyecto

carpeta raíz / proyecto android

carpeta raíz / android_project / app / src / main / jniLibs / x86

carpeta raíz / android_project / app / src / main / jniLibs / armeabi-v7a

carpeta raíz / android_project / app / src / main / jniLibs / ...

Gradle los cargará automáticamente en el dispositivo.

Entonces podrías cargar la biblioteca en una aplicación.

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

2) También podría colocar todas las bibliotecas nativas compartidas en la ubicación personalizada.

Ejemplo con una ruta al directorio bin / android / Debug .

En ese caso, debe establecer manualmente la ubicación de las bibliotecas en el archivo build.gradle .

Estructura del proyecto

carpeta raíz / proyecto android

carpeta raíz / bin / android / Debug / jniLibs / x86

carpeta raíz / bin / android / Debug / jniLibs / armeabi-v7a

carpeta raíz / bin / android / Debug / jniLibs / ...

carpeta raíz / 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" } } } } } }


Estoy trabajando con Android Studio 2.1, y descubrí que agregar las fuentes o la entrada sourceSets a mi build.gradle no tuvo ningún efecto aparente. En cambio, descubrí que necesitaba lo siguiente:

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