如何在新的 gradle 构建系统中使用自定义 Android.mk
How to use custom Android.mk with new gradle build system
我知道如何将自定义 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
使用新的 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 版本已经发布。
除了之前的回复:
使用实验性插件版本 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
}
将此添加到您的 build.gradle 文件中。这将导致 ndk-build
到 运行 作为项目构建的一部分,使用指定的 .mk 文件。
android{
externalNativeBuild {
ndkBuild {
path 'src/main/jni/Android.mk'
}
}
}
我知道如何将自定义 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
使用新的 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 版本已经发布。
除了之前的回复: 使用实验性插件版本 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
}
将此添加到您的 build.gradle 文件中。这将导致 ndk-build
到 运行 作为项目构建的一部分,使用指定的 .mk 文件。
android{
externalNativeBuild {
ndkBuild {
path 'src/main/jni/Android.mk'
}
}
}