2016-05-19 15 views
0

Ich habe versucht, Android-App mit JNI und NDK mit tess-two zu bauen, aber ich bekomme diesen Fehler. Ich benutze Android Studo 2.0, ich habe android ndk r11c installiert. Gradle Build erfolgreich, aber immer noch fehlgeschlagen APK zu bauen.Android NDK ndkbuildFailed

das ist meine android.mk Datei:

LOCAL_PATH := $(call my-dir) 
include $(CLEAR_VARS) 
IMAGE_PROCESSING_PATH := $(LOCAL_PATH)/../../../../Test/src 
IMAGE_PROCESSING_JNI_PATH := $(LOCAL_PATH)/image_processing 
TESS_TWO_PATH := $(LOCAL_PATH)/../../../../tess-two/tess-two 
LEPTONICA_SRC_PATH := $(TESS_TWO_PATH)/jni/com_googlecode_leptonica_android/src 
include $(IMAGE_PROCESSING_JNI_PATH)/Android.mk 

Dies ist die Fehlermeldung:

http://i.stack.imgur.com/yZATt.png

Antwort

0

Nach einem Blick auf Ihr gradle Buildprotokoll unter: Quelle kann nicht gefunden werden. Sie müssen den NDK_PROJECT_PATH definieren, damit er im Stammordner Ihres Projektpfads einkaufen kann.

Soweit ich weiß, Sie können in Ihrem gradle.build angeben diese:

android { 
    sourceSets.main.jni.srcDirs = "src" 
} 
+0

Ich habe NDK_PROJECT_PATH Umgebungsvariablen hinzugefügt, aber nichts geändert. behalte immer Fehler :( – ranysella

+0

Ich habe diesen Fehler nach dem Hinzufügen zu build.gradle: Fehler: (11, 0) Kann Objekt 'src' mit der Klasse 'java.lang.String' nicht in die Klasse 'java.lang.Iterable' umwandeln – ranysella

0

Sie können versuchen, automatische NDK-build zu deaktivieren. Dazu aktualisieren build.graddle Datei

android { 
// ..... defaultConfig/buildTypes/etc ... 

// SPECIFIC ROUTINE for NATIVE BUILD 
sourceSets.main { 
    jniLibs.srcDir 'src/main/libs' //set .so files location to libs 
    jni.srcDirs = []    //disable automatic ndk-build call 
} 
// call regular ndk-build(.cmd) script from app directory 
task ndkBuild(type: Exec) { 
    if (Os.isFamily(Os.FAMILY_WINDOWS)) { 
     commandLine 'ndk-build.cmd', 'NDK_DEBUG=0', '-C', file('src/main/jni').absolutePath 
    } else { 
     commandLine 'ndk-build', 'NDK_DEBUG=0', '-C', file('src/main/jni').absolutePath 
    } 
} 
tasks.withType(JavaCompile) { 
    compileTask -> compileTask.dependsOn ndkBuild 
} 
} 

Sie müssen möglicherweise graddle.properties

android.useDeprecatedNdk=true 
+0

Ich habe diesen Fehler: GRADLE DSL nicht gefunden 'Haupt' – ranysella

+0

in diesem Beispiel, ist systemeigenen Code unter 'src/main/jni' Ordner und Bibliotheken unter 'src/main/libs' kompiliert.Sie ​​sollten den Ordner OR Quelle ändern/libs Standort – JMC

0

ich dies, indem sie ihm einen vollständigen Pfad gelöst aktualisieren:

task ndkBuild(type: Exec,description: 'run ndk-build') { 
if (Os.isFamily(Os.FAMILY_WINDOWS)) { 
    commandLine 'D:\\Application\\android-ndk-r10e\\ndk-build.cmd', '-C', 'D:\\ransel\\Citeks\\app\\src\\main\\jni' 

} else { 
    workingDir 'src/main/jni' 
    commandLine 'D:\\Application\\android-ndk-r10e\\ndk-build', '-C', 'D:\\ransel\\Citeks\\app\\src\\main\\jni' 
} 

}

Danke :)