web-dev-qa-db-de.com

ausführung fehlgeschlagen für Task ': app: compileDebugNdk' konnte diesen Befehl ndk-build.cmd nicht ausführen

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

com.Android.ide.common.internal.LoggedErrorException: Fehler beim Ausführen des Befehls: C:\Programme\ADT\sdk\Android-ndk\ndk-build.cmd NDK_PROJECT_PATH = null 

Error Code:
1

dies ist die Ausgabe, die ich bekomme, wenn ich versuche, ein Make in meinem Projekt auf Android Studio auszuführen .. __ Ich bin auf Android Studio 1.0 .__

so sieht meine Android.mk-Datei aus

 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)

so sieht meine application.mk-Datei aus

APP_ABI := armeabi
#APP_ABI := armeabi-v7a
APP_PLATFORM := Android-14
13
user3188402

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

bedeutet, dass das Android-Plugin gradle versucht, ndk-build selbst aufzurufen, um Ihre Quellen zu kompilieren. Sie sollten mehr Details als den Fehlercode in Ihrem Protokollfenster erhalten.

Derzeit verwendet es dazu ein automatisch generiertes Makefile und ignoriert das Ihre, was nicht funktionieren kann, da Sie ffmpeg integrieren müssen.

Um dies zu umgehen, sollten Sie die automatische ndk-Integration des Plugins deaktivieren und die Standardposition libs verwenden, um Ihre .so-Dateien abzurufen:

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

von dort aus können Sie ndk-build selbst anrufen oder gradle für Sie anrufen: 

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
}

Für weitere Informationen darüber, warum dies alles möglich ist, können Sie dies/ Gist und meinen Blogbeitrag überprüfen.

24
ph0b

Um jedem zu helfen, der das gesucht hat, aber nicht herausfinden kann, wohin die obige Anweisung geht ....... Diese wird in build.gradle abgelegt und befindet sich im Ordner {Projektname}/app.

Speziell:

{YourApp} / app / build.gradle

Und nicht das build.gradle an der Wurzel des Projekts.

Fügen Sie es in den Abschnitt "defaultConfig" ein.

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

Hoffentlich wird dieser kleine Ratschlag verhindern, dass jemand übermäßig viel Zeit darauf verwendet, herauszufinden, welche und wo diese Änderung vorgenommen werden muss.

19
SpacemanScott

modul unten: App-Code funktioniert einwandfrei .. so können Sie dies verweisen ... ==>

  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
Manthan Patel

Ich habe dieses Problem heute (3 Jahre nach der Veröffentlichung der Frage) durchlaufen und festgestellt, dass die @ @ ph0b- und @SpacemanScott-Antworten nicht funktionieren, wenn die neuesten Handys keine 2.x.x-Unterstützung bieten. Versuchen Sie dann, das neueste OpenCV zu installieren.

0
Manaslu