La ejecución falló para la tarea ': app: compileDebugNdk' no pudo ejecutar este comando ndk-build.cmd
Error:Execution failed for task ':app:compileDebugNdk'.
Com.android.ide.common.internal.LoggedErrorException: Error al ejecutar el comando: C: \ Archivos de programa \ ADT \ sdk \ android-ndk \ ndk-build.cmd NDK_PROJECT_PATH = null
Error Code: 1
Esta es la salida que obtengo al intentar ejecutar una marca en mi proyecto en android studio. Estoy en android studio 1.0 sdk construir herramientas 24.0, pero la orientación API 14
- Error de construcción de CM12 para oneplus one
- Error de compilación de Android
- Creación de Android SDK: solo se ha creado un objetivo de Android
- gcc disable -Wall flag para archivos / carpetas específicos
- Cómo especificar el directorio para NDK_MODULE_PATH
Este es el aspecto de mi archivo Android.mk
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := Main LOCAL_SRC_FILES := Main.cpp LOCAL_LDLIBS := -llog -ljnigraphics -lz -landroid LOCAL_SHARED_LIBRARIES := libavformat libavcodec libswscale libavutil include $(BUILD_SHARED_LIBRARY) $(call import-module,ffmpeg/android/arm)
Este es el aspecto de mi archivo application.mk
APP_ABI := armeabi #APP_ABI := armeabi-v7a APP_PLATFORM := android-14
- Creación de Debug vs. Release en el NDK de Android
- Uso de la función 'comodín' de Make en Android.mk
- Android ANTLR hacer que no funciona correctamente
- Importación del proyecto Android AOSP en eclipse
- Cómo escribir el sello de tiempo de construcción en apk
- Per-file CPPFLAGS en Android.mk
- ¿Cómo hacer un android mm limpio?
- Lectura de archivos de Android.mk en subdirecciones recursivamente
Error:Execution failed for task ':app:compileDebugNdk'.
Significa que el plugin androide gradle está intentando llamar a ndk-build para compilar sus fuentes. Debe obtener más detalles que el código de error en su ventana de registro.
De todos modos, actualmente lo hace usando un Makefile generado automáticamente e ignora el tuyo, que no puede funcionar ya que necesitas integrar ffmpeg.
Para superar esto, debes desactivar la integración ndk automática del plugin y hacer que use la ubicación de libs estándar para obtener tus archivos .so:
sourceSets.main { jniLibs.srcDir 'src/main/libs' jni.srcDirs = [] //disable automatic ndk-build call }
Desde allí puedes llamar a ndk-build tú mismo, o hacer gradle llamarlo para ti:
import org.apache.tools.ant.taskdefs.condition.Os // call regular ndk-build(.cmd) script from app directory task ndkBuild(type: Exec) { if (Os.isFamily(Os.FAMILY_WINDOWS)) { commandLine 'ndk-build.cmd', '-C', file('src/main').absolutePath } else { commandLine 'ndk-build', '-C', file('src/main').absolutePath } } tasks.withType(JavaCompile) { compileTask -> compileTask.dependsOn ndkBuild }
Para obtener más información sobre por qué todo esto, puede comprobar este tema y mi blog .
Para ayudar a cualquiera que haya buscado esto, pero no puede averiguar dónde se encuentra la declaración anterior … Se coloca en el build.gradle que está en la carpeta {project_name} / app.
Específicamente:
{YourApp} / app / build.gradle
Y no la build.gradle en la raíz del proyecto.
Colóquelo dentro de la sección "defaultConfig".
defaultConfig { .... sourceSets.main { jniLibs.srcDir 'src/main/libs' jni.srcDirs = [] //disable automatic ndk-build call }
Con suerte, este pequeño consejo evitará que alguien pase una cantidad excesiva de tiempo tratando de averiguar qué y dónde debe hacerse este cambio.