我正在尝试使用导入的c-library构建android项目并获取下一个错误。 错误:任务':app:compileDebugNdk'执行失败。
com.android.ide.common.internal.LoggedErrorException:无法运行命令: / 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 错误代码: 2 输出: 用法:dirname路径 /Users/eugene/build/core/init.mk:471: * Android NDK:正在中止。停止。
这是什么意思?我该如何解决这个问题?
答案 0 :(得分:4)
我read表示NDK_HOME的路径中不应包含任何空格(即使它已被\ _转义)。
答案 1 :(得分:2)
这是我用来从gradle使用android-ndk构建的代码。为此,在gradle.properties
中添加ndk目录路径即。添加ndkdir=/home/user/android-ndk-r9d
并将所有jni文件放在native
中的src/main/
文件夹中,如下面发布的代码所示。它将创建具有本机库的jar,您可以像在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'