sourceSets 已经不适合gradle7以上的版本了
以下方法可以,但会导致资源编译失败, 适合空activity的APP
在build.gradle中添加
import java.nio.file.Files
project.afterEvaluate {
android.applicationVariants.forEach { variant ->
def variantCapped = variant.name.capitalize()
def variantLowered = variant.name.toLowerCase()
println("afterEvaluate applicationVariants: ${variantCapped} - ${variantLowered} - ${variant.outputs[0].outputFile}")
def replaceRJar = task("removeRjava${variantCapped}") {
doFirst {
println("write blank jar to R.jar")
def r_file = new File("${project.buildDir}/intermediates/compile_and_runtime_not_namespaced_r_class_jar/${variantLowered}/R.jar")
if (!r_file.exists()) {
r_file.parentFile.mkdirs()
}
Files.write(r_file.toPath(), new byte[]{
(byte) 0x50, (byte) 0x4B, (byte) 0x05, (byte) 0x06, (byte) 0x00, (byte) 0x00,
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00
})
}
}
//在processResourcesTask和compileJavaWithJavac之间插入清除r.jar任务
def processResourcesTask = tasks.findByName("process${variantCapped}Resources")
def compileJavaWithJavac = tasks.findByName("compile${variantCapped}JavaWithJavac")
replaceRJar.mustRunAfter(processResourcesTask)
compileJavaWithJavac.dependsOn(replaceRJar)
}
}
本文介绍了一种在Gradle 7及以上版本中,针对空活动应用解决资源编译问题的方法,通过创建自定义任务替换R.java文件,适用于资源清理与编译流程的调整。
649

被折叠的 条评论
为什么被折叠?



