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

com.android.ide.common.internal.LoggedErrorException auszuführen: Fehler Befehl auszuführen: C: \ Program Files \ ADT \ sdk \ android-NDK \ NDK-build.cmd NDK_PROJECT_PATH = nullAusführung fehlgeschlagen für Aufgabe ': App: compileDebugNdk' failed diesen Befehl NDK-build.cmd

Error Code: 
1 

dies ist die Ausgabe erhalte ich, wenn ein Make auf mein Projekt auf android Studio zu laufen versuchen. Ich bin auf Android Studio 1.0 sdk 24,0 Werkzeuge bauen, aber Targeting-API 14

das ist, was meine Android.mk Datei

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) 

wie

sieht das, was Datei sieht mein application.mk ist wie

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

Antwort

24

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

bedeutet, dass das gradle android-Plugin aufrufen versucht NDK-bauen sich Ihre Quellen zu kompilieren . Sie sollten mehr Details als der Fehlercode in Ihrem Protokollfenster erhalten.

Wie auch immer, derzeit tut es dies mit einem automatisch generierten Makefile und ignoriert Ihr, was nicht funktionieren kann, da Sie ffmpeg integrieren müssen.

Um dies zu überwinden, sollten Sie das Plugin-automatische NDK Integration deaktivieren und die Standard Libs Ort verwenden machen Sie Ihre .so-Dateien zu erhalten:

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

von dortNDK-build aufrufen selbst oder gradle nennen es für Sie:

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 
} 

weitere Informationen darüber, warum das alles können Sie überprüfen, diese gist und meine blog post.

+0

Vielen Dank, dass ich vorbeigekommen bin, aber jetzt kann es meine Header nicht finden, die ich mit dem Schlüsselwort LOCAL_C_INCLUDES angegeben habe. Eine andere Frage für eine andere Zeit nehme ich an. Ich werde auf jeden Fall Ihren Blog überprüfen, ich habe so viel gelernt, nur erfahrene Programmierer Blogs zu lesen. – user3188402

+0

Sie sollten einen absoluten Pfad zu LOCAL_C_INCLUDES angeben, damit es besser funktioniert. Sie können dies tun, indem Sie mit '$ (LOCAL_PATH) /' beginnen. Wenn Sie Includes aus Ihren Modulen angeben müssen, können Sie 'LOCAL_C_EXPORT_C_INCLUDES' auf diesen setzen. – ph0b

+0

Dadurch wird der Ordner "c" aus dem Projekt ausgeblendet, sodass ich c-Dateien nicht über Android Studio öffnen kann. Gibt es eine Problemumgehung? – Parmaia

19

Um allen zu helfen, die diese Suche durchgeführt haben, aber nicht herausfinden können, wo die obige Aussage steht ... Sie befindet sich in der Datei build.gradle, die sich im Ordner {project_name}/app befindet.

Im Einzelnen:

{YourApp}/app/build.gradle 

Und nicht die build.gradle an der Wurzel des Projektes.

Legen Sie es in den Abschnitt "defaultConfig".

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

Hoffentlich dieses kleine Rat wird jemand von den Ausgaben zu viel Zeit verhindern versucht, die, um herauszufinden, und wo diese Änderung vorgenommen werden muss.

+0

man Sie haben meinen Tag gerettet @SpacemenScott –

+1

Danke. @Rushang Prajapati Ich wünschte, die Poster würden ** vollständige ** Informationen liefern, anstatt sie auszutrinken ... Also ging ich weiter, ohne meinem Wunsch nachzugeben, sie dafür zu kritisieren, dass sie nicht angemessen waren. Und Android Studio hat solch einen Zoo von Dateien überall, schlecht dokumentiert, es ist ein Paradebeispiel für die Notwendigkeit, vollständige Informationen zu liefern. – SpacemanScott

+0

Am nützlichsten Antwort. Sehr einfach zu verstehen. Vielen Dank –

0

unter Modul: App-Code funktioniert perfekt ..so können Sie dies beziehen ...==>

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

ging ich heute dieses Problem durch (3 Jahre nach der Frage der Veröffentlichung) und bemerkte, dass, wenn @ ph0b und @SpacemanScott Antworten, die es nicht funktionieren Unterstützung Mangel an 2.xx zurückzuführen sein kann, in neuesten Telefone. Versuchen Sie, das neueste OpenCV dann zu installieren.

Verwandte Themen