2017-01-30 6 views
0

Я хочу разработать приложение для Android об автоматической обрезке на отсканированном изображении или фотографии с помощью OpenCV. Я нашел имя приложения с открытым исходным кодом «android-opencv-scan-doc» на github. После того, как я скачал, попробуйте создать и запустить этот проект на моем компьютере. Приложение не запускается и выдает следующее исключение:Как исправить ошибку: (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 

код в приложение build.gradle является:

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

Во-первых, убедитесь, что в диалоговом окне «Структура проекта» есть настройка пути ndk.

Если это не проблема, попробуйте отладить задачу ndkClean, поскольку это ошибка, с которой связана сборка. Вы можете создать более информативный журнал построения градиента, добавив --stacktrace --debug в текстовое поле «Параметры командной строки» в разделе «Компилятор» в диалоговом окне «Параметры» или попробуйте перебрать строки в этой задаче и найти проблемную.

+0

Ох .. Спасибо! Оно работает!! – wanipook

0

Я проверяю задачки, но ничего не работает. и у меня уже установлен NDK для другого проекта. но после изменения местоположения проекта решите мою проблему. если вы столкнетесь с проблемой, попробуете это.