Cómo especificar NDK para Android NDK en el archivo de compilación gradle
Mi build.gradle se ve así
Complemento de aplicación: com.android.application "Android { buildTypes {
publicar {
runProguard false
proguardFiles getDefaultProguardFile('proguard's-android.txt'), 'proguard-rules.pro"
}
} p>
} compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
} compileSdkVersion 20
buildToolsVersion "20.0 .0 " defaultConfig {
minSdkVersion de 15
targetSdkVersion 20
versioncode 1
} packagingOptions {
excluye "META-INF/ CONTENIDO RELACIONADO"
excluye "META-INF/LICENCIA"
excluye "META-INF/CAUCIÓN"
} sourceSets.main {
jniLibs.srcDir 'de src / main / bibliotecas"
jni.srcDirs = [] // Deshabilitar llamadas automáticas de compilación de NDK
}
} tarea buildNative (tipo: ejecutar){
HD ndkBuild = NULL;
HD ndkBuildingDir = nuevo archivo ("src / main / JNI ");
HD hasNdk = FALSE;
if (System.getenv("NDK_BUILD_CMD")!= NULL){
hasNdk = TRUE;
ndkBuild = nuevo archivo ( System. getenv("NDK_BUILD_CMD"))
}Línea de comando ndkBuild."--directory", ndkBuildingDir doFirst {
if (!hasNdk){
logger. error('##################')
logger.error("¡Error en la compilación del NDK!")
logger. error ('Causa: NDK_BUILD_CMD no configurado.')
logger.error('##################')
}
Afirmar hasNdk: "NDK_BUILD_CMD no está configurado".
}
}
tasks.withType (JavaCompile){compileTask - > compileTask.depends on buildNative} tarea cleanNative (Tipo: Ejecutar){ p>
p>
HD ndkBuild = NULL;
HD ndkBuildingDir = nuevo archivo ("SteelBone/Main/ JNI");
HD hasNdk = FALSE; (System.getenv ("NDK_BUILD_CMD")! = NULL) {
hasNdk = TRUE;
ndkBuild = nuevo archivo (System.getenv("NDK_BUILD_CMD"))
} Línea de comando ndkBuild."--directory", ndkBuildingDir, "clean" doFirst {
if (!hasNdk){
logger.error(' #### ##### #########')
logger.error("¡Error en la compilación del NDK!")
logger.error (Causa: NDK_BUILD_CMD no set.')
logger.error('##################')
}
Afirmar hasNdk: "NDK_BUILD_CMD no está configurado".
}
}
clean.dependOn "cleanNative"
Para que funcione, necesita configurar una variable de entorno NDK_BUILD_CMD, Esta variable se establecerá en el ejecutable de compilación del NDK exacto.
En Windows, debe configurar la variable de entorno NDK_BUILD_CMD para que apunte a NDK-build.exe.
En Mac, debe configurar la variable de ruta en .bash_profile para que no funcione la GUI a la que se accede dentro de la aplicación (por lo que Android Studio no podrá leerlos).
Por lo tanto, los pasos para editar .bash_profile son los siguientes. El contenido de bash_profile es el siguiente
GRADLE_HOME = {}path_to_gradle
ANDROID_SDK_ROOT = {}path_to_sdk_dir.
ANDROID_HOME = $ANDROID_SDK_ROOT/ Herramientas de plataforma
ANDROID_NDK_HOME = {} path_to_ndk
NDK_BUILD_CMD = $ANDROID_NDK_HOME / Salida de compilación NDK PATH=$GRADLE_HOME/bin: $ANDROID_HOME :$ANDROID_SDK_ROOT/tools :$ANDROID_NDK_HOME:/opt/local/bin:/opt/local/sbin:$PATHlaunchctl SETENV GRADLE_HOME $GRADLE_HOME
launchctl SETENV ANDROID_HOME $ANDROID_HOME
launchctl SETENV ANDROID_NDK_HOME $ ANDROID_NDK_HOME
launchctl SETENV NDK_ BUILD_CMD $ NDK_BUILD_CMD
la línea launchctl hará que las variables de entorno sean visibles en Android Studio.
PD: El .bash_profile se ejecutará cada vez que abras la terminal. Entonces, para que funcione correctamente en Android Studio, debe iniciar el terminal una vez y luego ejecutar Android Studio. De lo contrario, la compilación fallará y aparecerá el mensaje de que NDK_BUILD_CMD no está configurado. No he encontrado una manera de establecer este valor cuando se inicia Mac. Si alguien puede encontrar una manera, no dude en sugerirla.