it-swarm.com.de

NDKBuild-Fehler

Ich habe Probleme, meinen NDK in Android Studio richtig zu kompilieren. Immer wenn ich versuche zu laufen, bekomme ich die folgende Fehlermeldung.

Fehler: Ausführung fehlgeschlagen für Task ': app: ndkBuild' . Beim Starten des Befehls 'ndk-build.cmd' ist ein Problem aufgetreten.

Ich habe das folgende Setup

enter image description here

Und meine build.gradle-Datei ist die folgende.

import org.Apache.tools.ant.taskdefs.condition.Os

apply plugin: 'com.Android.application'

Android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "edu.uky.cs.www.diagramaphone"
        minSdkVersion 14
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"

        sourceSets.main{
            jniLibs.srcDir 'src/main/libs'
            jni.srcDirs = [] //disable automatic ndk-build call
        }
        project.ext.versionCodes = ['armeabi':1, 'armeabi-v7a':2, 'arm64-v8a':3, 'mips':5, 'mips64':6, 'x86':8, 'x86_64':9] //versionCode digit for each supported ABI, with 64bit>32bit and x86>armeabi-*
        Android.applicationVariants.all { variant ->
            // assign different version code for each output
            variant.outputs.each { output ->
                output.versionCodeOverride =
                        project.ext.versionCodes.get(output.getFilter(com.Android.build.OutputFile.ABI), 0) * 1000000 + defaultConfig.versionCode
            }
        }
        // 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
        }
        //ndk {
          //  moduleName "shape-detect"
            //cFlags "-DANDROID_NDK -D_DEBUG DNULL=0" // Define some macros
            //ldLibs "EGL", "GLESv3", "dl", "log"         // Link with these libraries!
            //stl "stlport_shared"                        // Use shared stlport library
        //}

    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.Android.support:appcompat-v7:21.0.3'
    compile project(':libraries:tess-two')
    compile project(':libraries:opencv')
}

An diesem Punkt verliere ich, was falsch sein kann. Ich habe mehrere Tutorials befolgt, um zu versuchen, den NDK so einzurichten, dass er ordnungsgemäß funktioniert, aber ich bekomme weiterhin den oben gezeigten Fehler. Kann hier jemand Feedback geben, was ich tun muss, um das NDK zum Kompilieren zu bringen?

BEARBEITEN: Hier ist die gesamte Nachricht, die auftritt.

Information:Gradle tasks [:app:assembleDebug]
:app:preBuild UP-TO-DATE
:app:preDebugBuild UP-TO-DATE
:app:compileDebugNdk UP-TO-DATE
:app:checkDebugManifest
:app:preReleaseBuild UP-TO-DATE
:libraries:opencv:compileLint
:libraries:opencv:copyReleaseLint UP-TO-DATE
:libraries:opencv:mergeReleaseProguardFiles UP-TO-DATE
:libraries:opencv:preBuild UP-TO-DATE
:libraries:opencv:preReleaseBuild UP-TO-DATE
:libraries:opencv:checkReleaseManifest
:libraries:opencv:prepareReleaseDependencies
:libraries:opencv:compileReleaseAidl UP-TO-DATE
:libraries:opencv:compileReleaseRenderscript UP-TO-DATE
:libraries:opencv:generateReleaseBuildConfig UP-TO-DATE
:libraries:opencv:generateReleaseAssets UP-TO-DATE
:libraries:opencv:mergeReleaseAssets UP-TO-DATE
:libraries:opencv:generateReleaseResValues UP-TO-DATE
:libraries:opencv:generateReleaseResources UP-TO-DATE
:libraries:opencv:packageReleaseResources UP-TO-DATE
:libraries:opencv:processReleaseManifest UP-TO-DATE
:libraries:opencv:processReleaseResources UP-TO-DATE
:libraries:opencv:generateReleaseSources UP-TO-DATE
:libraries:opencv:compileReleaseJava UP-TO-DATE
:libraries:opencv:processReleaseJavaRes UP-TO-DATE
:libraries:opencv:packageReleaseJar UP-TO-DATE
:libraries:opencv:compileReleaseNdk UP-TO-DATE
:libraries:opencv:packageReleaseJniLibs UP-TO-DATE
:libraries:opencv:packageReleaseLocalJar UP-TO-DATE
:libraries:opencv:packageReleaseRenderscript UP-TO-DATE
:libraries:opencv:bundleRelease UP-TO-DATE
:libraries:tess-two:compileLint
:libraries:tess-two:copyReleaseLint UP-TO-DATE
:libraries:tess-two:mergeReleaseProguardFiles UP-TO-DATE
:libraries:tess-two:preBuild UP-TO-DATE
:libraries:tess-two:preReleaseBuild UP-TO-DATE
:libraries:tess-two:checkReleaseManifest
:libraries:tess-two:prepareReleaseDependencies
:libraries:tess-two:compileReleaseAidl UP-TO-DATE
:libraries:tess-two:compileReleaseRenderscript UP-TO-DATE
:libraries:tess-two:generateReleaseBuildConfig UP-TO-DATE
:libraries:tess-two:generateReleaseAssets UP-TO-DATE
:libraries:tess-two:mergeReleaseAssets UP-TO-DATE
:libraries:tess-two:generateReleaseResValues UP-TO-DATE
:libraries:tess-two:generateReleaseResources UP-TO-DATE
:libraries:tess-two:packageReleaseResources UP-TO-DATE
:libraries:tess-two:processReleaseManifest UP-TO-DATE
:libraries:tess-two:processReleaseResources UP-TO-DATE
:libraries:tess-two:generateReleaseSources UP-TO-DATE
:libraries:tess-two:compileReleaseJava UP-TO-DATE
:libraries:tess-two:processReleaseJavaRes UP-TO-DATE
:libraries:tess-two:packageReleaseJar UP-TO-DATE
:libraries:tess-two:compileReleaseNdk UP-TO-DATE
:libraries:tess-two:packageReleaseJniLibs UP-TO-DATE
:libraries:tess-two:packageReleaseLocalJar UP-TO-DATE
:libraries:tess-two:packageReleaseRenderscript UP-TO-DATE
:libraries:tess-two:bundleRelease UP-TO-DATE
:app:prepareComAndroidSupportAppcompatV72103Library UP-TO-DATE
:app:prepareComAndroidSupportSupportV42103Library UP-TO-DATE
:app:prepareDiagramaphoneLibrariesOpencvUnspecifiedLibrary UP-TO-DATE
:app:prepareDiagramaphoneLibrariesTessTwoUnspecifiedLibrary UP-TO-DATE
:app:prepareDebugDependencies
:app:compileDebugAidl UP-TO-DATE
:app:compileDebugRenderscript UP-TO-DATE
:app:generateDebugBuildConfig UP-TO-DATE
:app:generateDebugAssets UP-TO-DATE
:app:mergeDebugAssets UP-TO-DATE
:app:generateDebugResValues UP-TO-DATE
:app:generateDebugResources UP-TO-DATE
:app:mergeDebugResources UP-TO-DATE
:app:processDebugManifest UP-TO-DATE
:app:processDebugResources UP-TO-DATE
:app:generateDebugSources UP-TO-DATE
:app:ndkBuild FAILED
Error:Execution failed for task ':app:ndkBuild'.
> A problem occurred starting process 'command 'ndk-build.cmd''
Information:BUILD FAILED
Information:Total time: 2.226 secs
Information:1 error
Information:0 warnings
Information:See complete output in console
23
Valrok

Ich traf dieses Problem. Zunächst müssen Sie Ihren NDK-Pfad in local.properties Ihrer App angeben. 

z.B. ndk.dir=/home/user/bin/Android_ndk/Android-ndk-r10e

Dann hatte ich in meiner build.gradle-Datei so etwas zum Aufruf des ndk build-Befehls.

commandLine 'ndk-build', '-C', file('src/main/jni').absolutePath

Ich ändere es in  

commandLine '/home/user/bin/Android_ndk/Android-ndk-r10e/ndk-build', '-C', file('src/main/jni').absolutePath

Ich habe den vollständigen Pfad des NDK-Builds angegeben. Ich hoffe es hilft dir.

47
Hayk Nahapetyan

versuche dies

commandLine'E:\\Android\\ndk\\ndkbuild.cmd','-C',file('src/main/jni').absolutePath

ersetzen Sie (E: \\ Android \\ ndk \\) durch Ihren ndk-Pfad.

8
Nooh

In Android Studio, Datei-> Projektstruktur -> SDK-Speicherort, Legen Sie den Android NDK-Speicherort für Ihren Computer fest.

Vielen Dank!

8
jungwook

Nur für den Fall, dass es jemandem hilft:

Wenn Sie den NDK-Pfad (übergeordneter Ordner, in dem sich ndkBuild.cmd befindet) in Umgebungsvariablen angeben, wird das Problem ebenfalls gelöst.

Alternativ kann man der Antwort von @Hayk folgen, wenn Sie Linux oder die Antwort von @Nooh für Windows verwenden. 

Meine Beobachtung:  

Als, wenn ich direkten NDK-Pfad gestellt habe, löste sich mein Problem manchmal in Android Studio, aber erneut fehlgeschlagen zu bauen und Fehler zu werfen, und dann habe ich Pfad in Umgebungsvariablen eingefügt und das Projekt erfolgreich erstellt. 

In diesem Fall muss man für Windows * setzen

  • ndk-build.cmd

* und nur für Linux-Umgebungen *

  • ndk-build

*

4
abhy

es ist einfach für Android Studio 2.3.3. Folgen Sie einfach Datei-> Projektstruktur -> Android NDK-Standort-> Klicken Sie auf die Schaltfläche Download. nach der install ndk lösen mein problem .  enter image description here

3
Tariqul
  1. Zuerst müssen Sie die Datei local.properties in Ihrem Projekt überprüfen. Überprüfen Sie in local.properties den ndk-Pfad. Es sieht aus wie das ndk.dir = D: \\ sdk \\ ndk-bundle.

  2. Gehen Sie jetzt zum build.gradle (Modulbibliothek) und suchen Sie nach getNdkPath (). Es wird die Position des ndk-Pfads zurückgegeben, die den ndk-build enthält. 

  3. Ändern Sie ndk-build -> ndk-build.cmd. Es sieht aus wie das:

     enter image description here

Hoffe es wird dir helfen!

2
Jatinder Kumar

Fügen Sie den ndk-Pfad (C:\Android-ndk-r10e) zum Wert der Pfadvariable in der Umgebungsvariablen (Systemvariable) hinzu, die meine Variable "path" so beließ

Einstellungen -> System -> Erweiterte Systemeinstellungen -> Systemvariablen  enter image description here


Öffnen Sie dann das Befehlsfenster (cmd). Geben Sie den Speicherort Ihres Projektordners mit cd-Befehlen ein, schreiben Sie "ndk-build" und drücken Sie die Eingabetaste.

2
Fatih Çengel

Die akzeptierte Antwort ist in Ordnung, aber sie funktioniert nicht, seit Android Tools Gradle Plugin 2.3: Kein sdkHandler-Feld in LibraryPlugin nach dem Update auf die Build-Tools 2.3.0 , also müssen Sie die Variable project.Android.ndkDirectory.absolutePath verwenden, dh:

task ndkBuild(type: Exec) {
    commandLine project.Android.ndkDirectory.absolutePath + '/ndk-build', '-C', file('src/main/jni/').absolutePath
}

Alternativ können Sie ndk.dir direkt von local.properties lesen: https://stackoverflow.com/a/32649204/1028256

0
Mixaz