0

我尝试使用 tess-two 使用 JNI 和 NDK 构建 android 应用程序,但我不断收到此错误。我正在使用 Android Studo 2.0,我已经安装了 android ndk r11c。gradle build 成功,但一直无法构建 APK。

这是我的 android.mk 文件:

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

这是错误消息:

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

4

3 回答 3

0

我通过给它一个完整的路径解决了这个问题:

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'
}

}

谢谢 :)

于 2016-05-21T20:30:44.107 回答
0

查看您的 gradle 构建日志后:找不到源。您需要定义 NDK_PROJECT_PATH 以使其存储到项目路径的根文件夹。

据我所知,您可以在gradle.build中指定:

android {  
    sourceSets.main.jni.srcDirs = "src"
}
于 2016-05-19T11:27:03.190 回答
0

您可以尝试禁用自动 ndk-build。为此,更新build.graddle文件

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
}
}

您可能需要更新graddle.properties

android.useDeprecatedNdk=true
于 2016-05-19T12:04:04.383 回答