Red de conocimiento informático - Material del sitio web - Cómo especificar NDK para Android NDK en el archivo de compilación gradle

Cómo especificar NDK para Android NDK en el archivo de compilación gradle

He estado intentando resolver este problema. Sin embargo, después de hacer que Android Studio usara Application.mk y Android.mk en Eclipse escribiendo una tarea personalizada, todo terminó.

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"

}

}

} 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>

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.