2014-06-17 174 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'