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

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 

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.

  • Herramienta para generar un Android.mk
  • Construir Firefox Fennec con Flash Player incrustado
  • Macro de preprocesador en Android.mk se ignora, pero funciona en Application.mk
  • Incluye biblioteca estática pre-construida en el sistema de compilación de Android
  • Android ndk ninguna regla para hacer objetivo
  • make: *** No se han especificado objetivos y no se ha encontrado ningún makefile. Detener
  • Android no puede construir el proyecto con NDK-Build.cmd de NDK r7
  • Cada compilación NDK es una reconstrucción completa
  • Condiciones de Android.mk
  • ¿Qué son export_includes e import_includes files when building Android
  • Error en la generación yasm / source / patched-yasm / util.h: 78: 23: error: libintl.h: Ningún archivo o directorio
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.