2014-06-17 179 views
1

我正在尝试使用导入的c-libraries构建android项目并获取下一个错误。 错误:任务':app:compileDebugNdk'的执行失败。Gradle构建问题

com.android.ide.common.internal.LoggedErrorException: Failed to run command: /Applications/Android Studio.app/ndk/ndk-build NDK_PROJECT_PATH=null APP_BUILD_SCRIPT=/Users/eugene/KREF14001/app/build/ndk/debug/Android.mk APP_PLATFORM=android-19 NDK_OUT=/Users/eugene/KREF14001/app/build/ndk/debug/obj NDK_LIBS_OUT=/Users/eugene/KREF14001/app/build/ndk/debug/lib APP_ABI=all Error Code: 2 Output: usage: dirname path /Users/eugene/build/core/init.mk:471: * Android NDK: Aborting . Stop.

这是什么意思?我该如何解决这个问题?

+0

你确定你安装了NDK而不仅仅是SDK吗? – JustFogMaxi

+0

是的,我下载了它,解压并将它添加到local.properties的下一行ndk.dir =/Applications/Android Studio.app/ndk –

+0

请发布您的'Build.gradle' –

回答

4

正常使用,因为我已经read的NDK_HOME不应包含在其路径中的任何空间(即使它是\转义)。

+0

是的,你是对的人。我已经完成了。 –

2

这是我使用从gradle使用android-ndk构建的代码。为此,在gradle.properties即添加ndk目录路径。请添加ndkdir=/home/user/android-ndk-r9d,并将所有jni文件放在native的文件夹中,如src/main/所示,如您在下面的代码中看到的那样。这将创建一个本地库罐子,你可以在System.loadLibrary("library");

dependencies { 
    compile fileTree(dir: "$buildDir/native-libs", include: '*.jar') 
} 

task ndkBuild(type: Exec) { 
    commandLine "$ndkdir/ndk-build", "--directory", "$projectDir/src/main/native", '-j', Runtime.runtime.availableProcessors(), 
      "APP_PLATFORM=android-8", 
      "APP_BUILD_SCRIPT=$projectDir/src/main/native/Android.mk", 
      "NDK_OUT=$buildDir/native/obj", 
      "NDK_APP_DST_DIR=$buildDir/native/libs/\$(TARGET_ARCH_ABI)" 
} 

task nativeLibsToJar(type: Zip, description: 'create a jar with native libs') { 
    destinationDir file("$buildDir/native-libs") 
    baseName 'native-libs' 
    extension 'jar' 
    from fileTree(dir: "$buildDir/native/libs", include: '**/*.so') 
    into 'lib/' 
} 

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

nativeLibsToJar.dependsOn 'ndkBuild'