我知道如何将自定义Android.mk
与旧gradle一起使用:
sourceSets.main {
jniLibs.srcDir 'src/main/jni'
jni.srcDirs = [] //disable automatic ndk-build call
}
// call regular ndk-build(.cmd) script from app directory
task ndkBuild(type: Exec) {
commandLine '/.../android-ndk-r10e/ndk-build', '-C', file('src/main').absolutePath
}
tasks.withType(JavaCompile) {
compileTask -> compileTask.dependsOn ndkBuild
}
它没有使用新的gradle:com.android.tools.build:gradle-experimental:0.2.0
:
Error:Cause: com.android.build.gradle.managed.AndroidConfig_Impl
答案 0 :(得分:5)
使用新的gradle-experimental插件,您的配置将是:
model {
//...
android.sources{
main.jni {
source {
srcDirs = ['src/main/none']
}
}
main.jniLibs {
source {
srcDirs = ['src/main/libs']
}
}
}
//...
}
// call regular ndk-build(.cmd) script from app directory
task ndkBuild(type: Exec) {
commandLine '/.../android-ndk-r10e/ndk-build', '-C', file('src/main').absolutePath
}
tasks.withType(JavaCompile) {
compileTask -> compileTask.dependsOn ndkBuild
}
请注意,gradle-experimental插件的版本0.3.0-alpha7已经用完了。
答案 1 :(得分:2)
将其添加到build.gradle文件中。这将导致ndk-build
使用指定的.mk文件作为项目构建的一部分运行。
android{
externalNativeBuild {
ndkBuild {
path 'src/main/jni/Android.mk'
}
}
}
答案 2 :(得分:0)
除了之前的回复: 使用Experimental Plugin版本0.7.0-alpha1,这适用于Windows
model {
// ...
android.sources.main {
jni {
source {
srcDirs = ['src/main/none']
}
}
jniLibs {
source {
srcDirs = ['src/main/libs']
}
}
}
// ...
}
task ndkBuild(type: Exec) {
def cmdline = "${System.env.ANDROID_NDK_HOME}/ndk-build -C \"" + file('src/main').absolutePath + "\" > ndk-build-log.txt 2>&1"
commandLine 'cmd', '/c', cmdline
}
tasks.withType(JavaCompile) {
compileTask -> compileTask.dependsOn ndkBuild
}