您好。我在Android Studio NDK构建问题。我没有使用原生图书馆。只是用于库的java类和JNI c或头文件。 所以我很困惑如何为我的项目编写gradle文件(saskin库;我正在研究它)。 请帮帮我〜!
错误消息
错误:任务':app:buildNative'执行失败。 启动流程'命令C:\ NDK / ndk-build''
的build.gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 8
buildToolsVersion "21.1.1"
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
sourceSets {
main {
jni.srcDirs = []
//jniLibs.srcDir 'src/main/libs'
}
}
defaultConfig {
applicationId "com.sasken.player"
minSdkVersion 8
targetSdkVersion 8
ndk {
moduleName "equalizer"
}
}
// call regular ndk-build(.cmd) script from app directory
task ndkBuild(type: Exec) {
commandLine 'ndk-build', '-C', file('src/main/jni').absolutePath
}
tasks.withType(JavaCompile) {
compileTask -> compileTask.dependsOn ndkBuild
}
}
dependencies {
}
答案 0 :(得分:18)
由于您使用的是Windows,因此您应该从 ndkBuild 任务中调用ndk-build.cmd
而不是ndk-build
。
要使您的gradle文件在Windows和兼容unix的系统上运行,您可以通过以下方式修改任务:
import org.apache.tools.ant.taskdefs.condition.Os
// 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
}
}
此外,当您直接使用ndk-build时,ndk将在 libs 文件夹中生成您的库,因此您应该在gradle文件中取消注释jniLibs.srcDir 'src/main/libs'
,生成的库的订单可以考虑在内。