2017-01-30 62 views
0

我想通过使用OpenCV开发一个关于扫描图像或照片中的自动裁剪的Android应用程序。我在github上找到了一个开源应用程序名称“android-opencv-scan-doc”。我下载后,尝试在我的计算机上构建并运行此项目。该应用程序无法启动,并给出以下异常:在应用的build.gradle如何解决错误:(158)Android NDK:中止。 。停止。 (ndk-build.cmd''以非零退出值2结束)

Information:Gradle tasks [:app:clean, :app:generateDebugSources, :app:generateDebugAndroidTestSources, :app:mockableAndroidJar, :app:prepareDebugUnitTestDependencies, :app:assembleDebug] 
C:\Users\user\AppData\Local\Android\sdk\ndk-bundle\build\core\build-local.mk 
Error:(158) *** Android NDK: Aborting. . Stop. 
Error:Execution failed for task ':app:ndkClean'. 
> Process 'command 'C:\Users\user\AppData\Local\Android\Sdk\ndk-bundle/ndk-build.cmd'' finished with non-zero exit value 2 
Information:BUILD FAILED 

代码:

apply plugin: 'com.android.application' 

android { 
compileSdkVersion 23 
buildToolsVersion "23.0.3" 

defaultConfig { 
    applicationId "com.example.yangyao.android_opencv" 
    minSdkVersion 15 
    targetSdkVersion 23 
    versionCode 1 
    versionName "1.0" 

    ndk { 
     moduleName "OpenCV" 
    } 
} 
buildTypes { 
    release { 
     minifyEnabled false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    } 
} 
sourceSets.main.jni.srcDirs = [] 
sourceSets.main.jniLibs.srcDirs = ['src/main/libs','src/main/jniLibs'] 


task ndkBuild(type: Exec, description: 'Compile JNI source with NDK') { 
    Properties properties = new Properties() 
    properties.load(project.rootProject.file('local.properties').newDataInputStream()) 
    def ndkDir = properties.getProperty('ndk.dir') 

    if (org.apache.tools.ant.taskdefs.condition.Os.isFamily(org.apache.tools.ant.taskdefs.condition.Os.FAMILY_WINDOWS)) { 
     commandLine "$ndkDir/ndk-build.cmd", '-C', file('src/main/jni').absolutePath 
    } else { 
     commandLine "$ndkDir/ndk-build", '-C', file('src/main/jni').absolutePath 
    } 
} 

tasks.withType(JavaCompile) { 
    compileTask -> compileTask.dependsOn ndkBuild 
} 

task ndkClean(type: Exec, description: 'Clean NDK Binaries') { 
    Properties properties = new Properties() 
    properties.load(project.rootProject.file('local.properties').newDataInputStream()) 
    def ndkDir = properties.getProperty('ndk.dir') 

    if (org.apache.tools.ant.taskdefs.condition.Os.isFamily(org.apache.tools.ant.taskdefs.condition.Os.FAMILY_WINDOWS)) { 
     commandLine "$ndkDir/ndk-build.cmd",'clean', '-C', file('src/main/jni').absolutePath 
    } else { 
     commandLine "$ndkDir/ndk-build",'clean', '-C', file('src/main/jni').absolutePath 
    } 
} 

clean.dependsOn 'ndkClean' 
} 

dependencies { 
compile fileTree(dir: 'libs', include: ['*.jar']) 
testCompile 'junit:junit:4.12' 
compile 'com.android.support:appcompat-v7:23.4.0' 
} 

那么应该怎么办?我不知道如何处理它们。提前致谢。

回答

0

首先,确保在Project Structure对话框中有ndk路径设置。

如果这不是问题,请尝试调试ndkClean任务,因为这是构建失败的问题。您可以在设置对话框的编译器部分的命令行选项文本框中添加--stacktrace --debug,或者尝试查看此任务中的行并找出存在问题的行,从而制作更多信息丰富的gradle build日志。

+0

哦..谢谢!有用!! – wanipook

0

我检查任务,但没有任何工作。我已经为其他项目安装了NDK。但改变后的项目位置解决了我的问题。如果您遇到问题,请尝试此操作。

相关问题