2014-12-12 9 views
12
Error:Execution failed for task ':app:compileDebugNdk'. 

com.android.ide.common.internal.LoggedErrorException: Impossibile eseguire il comando: C: \ Program Files \ ADT \ SDK \ android-NDK \ NDK-build.cmd NDK_PROJECT_PATH = nullesecuzione fallita per l'attività ': app: compileDebugNdk' non è riuscito a eseguire questo comando NDK-build.cmd

Error Code: 
1 

questo è l'output che ottengo quando il tentativo di eseguire un make sul mio progetto su Android Studio. Sono su Android Studio 1.0 SDK costruire strumenti 24.0 ma API mira 14

questo è ciò che il mio file Android.mk assomiglia

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) 

questo è ciò che il mio file application.mk assomiglia

APP_ABI := armeabi 
#APP_ABI := armeabi-v7a 
APP_PLATFORM := android-14 

risposta

24

Error:Execution failed for task ':app:compileDebugNdk'.

significa che il plugin di Android Gradle sta tentando di chiamare NDK-costruire se stessa per compilare le tue fonti . Dovresti ottenere maggiori dettagli rispetto al codice di errore nella tua finestra di log.

Ad ogni modo, attualmente lo fa utilizzando un Makefile generato automaticamente e ignora il tuo, che non può funzionare poiché è necessario integrare ffmpeg.

Per ovviare a questo, è necessario disattivare l'integrazione NDK automatico del plugin e renderlo utilizzare lo standard librerie posizione per ottenere i file .so:

sourceSets.main { 
    jniLibs.srcDir 'src/main/libs' 
    jni.srcDirs = [] //disable automatic ndk-build call 
} 

da lì è possibile chiamare NDK-costruire te stesso, o fare Gradle chiamare per voi:

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 
} 

per ulteriori informazioni sul motivo per cui tutto questo, è possibile controllare questo gist e la mia blog post.

+0

Grazie mille ho passato ma ora non riesce a trovare le mie intestazioni che ho specificato con la parola chiave LOCAL_C_INCLUDES. Un'altra domanda per un'altra volta suppongo. Sicuramente darò un'occhiata al tuo blog, ho imparato così tanto dalla semplice lettura di blog di esperti programmatori. – user3188402

+0

Dovresti dare un percorso assoluto a LOCAL_C_INCLUDES quindi funziona meglio. Puoi farlo avviandolo da $ (LOCAL_PATH)/'. Se devi specificare include dai tuoi moduli, puoi impostare "LOCAL_C_EXPORT_C_INCLUDES" su questi. – ph0b

+0

Questa operazione nasconde la cartella "c" dal progetto, quindi non riesco ad aprire i file c da Android Studio. C'è qualche soluzione? – Parmaia

19

Per aiutare chi ha cercato questo, ma non riesce a capire dove va la dichiarazione di cui sopra ... Si trova nel build.gradle che si trova nella cartella {nome_progetto}/app.

In particolare:

{YourApp}/app/build.gradle 

E non l'build.gradle alla base del progetto.

Inserirlo nella sezione "defaultConfig".

defaultConfig { 
    .... 
    sourceSets.main { 
     jniLibs.srcDir 'src/main/libs' 
     jni.srcDirs = [] //disable automatic ndk-build call 
    } 

Speriamo che questo piccolo consiglio sarà impedire a qualcuno di spendere una quantità eccessiva di tempo cercando di capire quale e dove questo cambiamento deve essere fatto.

+0

man Hai salvato la mia giornata @SpacemenScott –

+1

Grazie. @Rushang Prajapati Vorrei che i poster fornissero ** informazioni complete **, piuttosto che dribblare ... Quindi ho seguito, senza cedere al mio desiderio di criticarle per non essere adeguato. E Android Studio ha un tale zoo di file dappertutto, scarsamente documentato, è un ottimo esempio della necessità di fornire informazioni complete. – SpacemanScott

+0

Risposta più utile. Molto facile da capire. Grazie –

0

sotto il modulo: il codice app funziona perfettamente ... così puoi riferirti a questo ...==>

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 25 
    buildToolsVersion "25.0.3" 
    defaultConfig { 
     applicationId "com.mnthn.liking" 
     minSdkVersion 15 
     targetSdkVersion 25 
     versionCode 1 
     versionName "1.0" 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 

    } 


    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
    sourceSets { 
     main { 
      jni.srcDirs = ['src/main/jniLibs/'] 
      jni.srcDirs = [] 
     } 
    } 
} 

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 
     exclude group: 'com.android.support', module: 'support-annotations' 
    }) 
    compile 'com.android.support:appcompat-v7:25.3.1' 
    compile 'com.android.support.constraint:constraint-layout:1.0.2' 
    testCompile 'junit:junit:4.12' 
    compile project(':openCVLibrary331') 
} 
0

sono andato attraverso questo problema oggi (3 anni dopo la pubblicazione questione) e ho notato che se @ ph0b e @SpacemanScott risposte non funzionano, può essere dovuto alla mancanza di sostegno 2.xx nel più recente cellulari. Prova ad installare l'ultimo OpenCV quindi.

Problemi correlati