¿Por qué Android Studio está ignorando mi archivo .bashrc en OSX?
He descargado un proyecto que utiliza ndk de Android. El archivo gradle contiene las líneas:
task ndkBuild(type: Exec) { commandLine 'ndk-build', '-B', '-C', file('src/main/jni').absolutePath }
Esto funciona muy bien al ejecutar ./gradlew assembleDebug
. Tengo los siguientes contenidos en mi ~/.bashrc
:
- Eclipse - Plugin ADT no auto-completando xml
- Android Studio "No se encontraron pruebas"
- AndroidStudio (0.8.9 Mac) No se pudo sincronizar el nuevo proyecto Gradle
- Android Studio IDE en Mac os: error = 13, Permiso denegado
- Xamarin Visual Studio IOS Desarrollo Sin una Mac?
# Append android sdk paths and stuff. export ANDROID_HOME=/Users/gradha/instalacion_manual/android-sdk-r10-mac_x86 #export ANDROID_NDK_ROOT=/Users/gradha/instalacion_manual/android-ndk-r8b export ANDROID_NDK_ROOT=/Users/gradha/instalacion_manual/android-ndk-r10e export NDK_PATH="${ANDROID_NDK_ROOT}" export NDK_HOME="${ANDROID_NDK_ROOT}" export PATH=$PATH:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools:/Users/gradha/instalacion_manual/apache-maven-3.3.3/bin:"${ANDROID_NDK_ROOT}"
Sin embargo, cuando intento construir el proyecto desde el estudio de Android,
process.internal.ExecException: A problem occurred starting process 'command 'ndk-build'' at org.gradle.process.internal.DefaultExecHandle.setEndStateInfo(DefaultExecHandle.java:196) at org.gradle.process.internal.DefaultExecHandle.failed(DefaultExecHandle.java:325) at org.gradle.process.internal.ExecHandleRunner.run(ExecHandleRunner.java:83) ... 1 more Caused by: net.rubygrapefruit.platform.NativeException: Could not start 'ndk-build' at net.rubygrapefruit.platform.internal.DefaultProcessLauncher.start(DefaultProcessLauncher.java:27) at net.rubygrapefruit.platform.internal.WrapperProcessLauncher.start(WrapperProcessLauncher.java:36) at org.gradle.process.internal.ExecHandleRunner.run(ExecHandleRunner.java:65) ... 1 more Caused by: java.io.IOException: Cannot run program "ndk-build" (in directory "/Users/gradha/project/questionity/archivo/SuperpoweredSDK/Android/CrossExample/app"): error=2, No such file or directory at net.rubygrapefruit.platform.internal.DefaultProcessLauncher.start(DefaultProcessLauncher.java:25) ... 3 more Caused by: java.io.IOException: error=2, No such file or directory ... 4 more
Lo que sugiere que la variable PATH
no se está estableciendo correctamente en el entorno y ni siquiera el proceso ndk-build
es capaz de ejecutarse. Tocar .bashrc se supone para hacer este trabajo . ¿Por qué Android Studio no capta la PATH
entorno PATH
especificada en el archivo .bashrc
?
EDITAR PSEUDO RESPUESTA : Android Studio sigue otros entornos de desarrollo como Xcode para evitar que los archivos de configuración personales del usuario alteren el proceso de creación de software. La solución correcta, como Alex menciona, es leer un archivo local.properties
externo con una variable ndk.dir
apuntando a la ruta correcta, y fuente esta variable para construir una ruta completa a ndk-build
lugar de confiar en PATH
del entorno. El archivo local.properties
se puede mantener fuera del control de código fuente y se puede personalizar para cada comprobación.
- No puede encontrar keytool en un mac
- Eclipse: La instalación JRE especificada no existe
- ¿Dónde está Android AVD Manager ubicado en Mac?
- Copiar y pegar no funciona en Android Studio en Mac
- IntelliJ IDEA Buildtools 24.0.2 requiere Java 1.8 o superior. La versión actual de JDK es 1.7
- No se puede ejecutar Android Studio en mi Mac OS Yosemite. Error: No se instaló el siguiente componente de SDK: sys-img-x86-addon-google_apis-google-21
- ¿Por qué el tamaño androide de apk difiere cuando se construye desde windows y mac
- ¿Dónde está debug.keystore en Mac?
No hay nada que podamos hacer con el camino roto para Android Studio, pero es fácil resolver el problema de ndk-build – una vez y para siempre.
Agregue el siguiente bloque a la parte superior del archivo build.gradle para el módulo (aplicación o biblioteca):
Properties properties = new Properties() properties.load(project.rootProject.file('local.properties').newDataInputStream()) def ndkBuild = properties.getProperty('ndk.dir') + '/ndk-build' import org.apache.tools.ant.taskdefs.condition.Os if (Os.isFamily(Os.FAMILY_WINDOWS)) { ndkBuild += '.cmd' }
Y aquí está la tarea gradle:
task buildNative(type: Exec, description: 'Compile JNI source via NDK') { commandLine "$ndkBuild" … }
- Kotlin genéricos herencia dolor de cabeza
- Estoy recibiendo error después de que creé amazono coginto en android