¿Cómo puedo add.so archivos a un proyecto de biblioteca de Android usando gradle 0.7+
Estructura del proyecto:
Proyecto de aplicación depends > depende del proyecto de biblioteca
Proyecto de Biblioteca tiene una carpeta para las libs compiladas de jni
jniLibs.srcDirs = ['libs']
Y he intentado agregar lo siguiente al elemento Android de la compilación.gradle según la aplicación de ejemplohttps://android.googlesource.com/platform/tools/build/+/2e1f7810edd76d92cee8d3e06bc4dec0c288adea/tests/ndkSanAngeles/build.gradle sin embargo, los proyectos de la biblioteca de Android no son compatibles con productFlavours y, como tal, el ensamblar falla con "No se pudo encontrar el método productFlavors () para 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?
4 answers
Al final no necesité usar sabores de productos.
Para el proyecto de la biblioteca he añadido 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 está utilizando el proyecto de biblioteca de android.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-27 15:29:12
Ejemplo con nuevo android experimental gradle plugin.
Requisitos:
- Android Studio 1.5+
- gradle-2.10
- gradle-experimental: 0.6.0-alpha5
1) Simplemente puede poner todas las bibliotecas nativas compartidas en la carpeta main / jniLibs, de forma predeterminada.
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ía cargar la biblioteca en una aplicación.
static {
System.loadLibrary("mylibrary");
}
2) También puede poner todas las bibliotecas nativas compartidas en la ubicación personalizada.
Ejemplo con una ruta a la bin / android / Debug directorio.
En ese caso, debe configurar manualmente la ubicación de las bibliotecas en la compilación .archivo 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"
}
}
}
}
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-22 23:15:49
Estoy trabajando con Android Studio 2.1, y me di cuenta de que la adición de las fuentes o sourceSets entrada a mi compilación.gradle no tuvo ningún efecto aparente. En su lugar, descubrí que necesitaba lo siguiente:
android {
defaultConfig {
ndk {
moduleName "libmp3lame"
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-04 22:59:32
Según este hilo:
Https://groups.google.com/forum/#! topic / adt-dev / nQobKd2Gl_8
No poder agregar archivos .so a los proyectos de biblioteca fue un error que se solucionó en la versión 0.8 del plugin.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-24 04:18:10