NDKBuild Failure

匿名 (未验证) 提交于 2019-12-03 01:22:02

问题:

I'm having trouble getting my NDK to compile properly in Android Studio. Whenever I try running to compile I am getting the following error.

Error:Execution failed for task ':app:ndkBuild'. A problem occurred starting process 'command 'ndk-build.cmd''

I have the following setup

And my build.gradle file is the following.

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

At this point I'm lost as to what can be wrong. I've followed several tutorials to try setting up the NDK to work properly, but I keep getting the error I showed above. Can anyone here provide some feedback on what I need to do in order to get the NDK to compile?

EDIT: Here's the entire message that occurs.

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 

回答1:

I met this kind of problem. First of all You have to give your NDK path in local.properties of your app.

e.g. ndk.dir=/home/user/bin/android_ndk/android-ndk-r10e

Then in my build.gradle file I had something like this for calling ndk build command.

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

I'v change it to

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

I gave full path of NDK build. Hope it'll help you.



回答2:

try this

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

replace (E:\\Android\\ndk\\) with your ndk path.



回答3:

In android studio, File->Project Structure -> SDK Location, Set the Android NDK location for your computer.

Thanks!



回答4:

Just in case if it helps somebody else:

Giving NDK path(parent folder where ndkBuild.cmd resides) in Environment Variables also solves the problem.

Alternatively, one can follow @Hayk 's answer if you are on Linux or @Nooh 's answer for Windows.

My observation:

As, if I put direct NDK path solved my problem in Android Studio sometimes but again it failed to build and threw error and then I put path in Environment Variables and the project build successfully.

In that case for Windows one has to put *

  • ndk-build.cmd

* and for Linux environment only *

  • ndk-build

*



回答5:

Add the ndk path (C:\android-ndk-r10e) to the path variable's value in the environment variable(System variable) which left my "path" variable like this

Settings --> System --> Advenced System Settings --> System Variables


Then open the the command window (cmd). Enter the location of your project folder with cd commands and write "ndk-build" then press enter.



回答6:

its easy for android studio 2.3.3. just follow File->Project Structure -> android NDK Location-> Click download button. after install ndk solve my problem.



回答7:

  1. First of all you have to check local.properties file in your project. In local.properties check ndk path. It looks like this ndk.dir=D:\\sdk\\ndk-bundle.

  2. Now go to the build.gradle(Module library) and find getNdkPath(). It will return ndk path location which concatnate the ndk-build

  3. Change ndk-build --> ndk-build.cmd. It looks like this:

Hope it will help you!



回答8:

The accepted answer is OK, but it doesn't work since android tools gradle plugin 2.3: No sdkHandler field in LibraryPlugin after updating to build tools 2.3.0, so you need to use project.android.ndkDirectory.absolutePath variable then, ie:

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

Alternatively you can read ndk.dir directly from local.properties: https://stackoverflow.com/a/32649204/1028256



文章来源: NDKBuild Failure
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!