我想建立"本地"代码并将其打包成apk。
所以我写了这样的gradle代码:
def archsInfo = [/*some arches*/];
archsInfo.each { arch_name ->
tasks.create(name: "MyNativeBuild${arch_name}", type: Exec, description: "Building core for ${arch_name}") {
//..something
}
//1
tasks.withType(JavaCompile) {
compileTask -> compileTask.dependsOn "MyNativeBuild${arch_name}"
}
//2
preBuild.dependsOn "MyNativeBuild${arch_name}"
}
我的问题/神秘部分标记为" // 1"和" // 2"。
起初我只写了#34; // 1"没有" // 2"。
" MyNativeBuild ..."任务已经执行了,但是之前没有" java部分编译",例如如果运行gradle clean build
它可以工作,但是在输出apk中没有" .so"图书馆,但他们建立没有问题,所以问题只在"合并"放置" .so"的任务将文件转换为" .apk"。看起来,在"合并"任务运行它们不存在。
我添加" // 2"一切正常。
那么问一下" // 1"部分,什么是" JavaCompile", 以及为什么" JavaCompile"东西可以在将构建的artefacts合并到最终apk的任务之后运行吗?