1.引入avapoet用来生成java类
implementation 'com.squareup:javapoet:1.9.0'
2.注册插件
class CreateJavaPlugin implements Plugin<Project> {
@Override
void apply(Project project) {
project.afterEvaluate {
DefaultDomainObjectCollection<BaseVariant> variants
if (project.plugins.hasPlugin(AppPlugin.class)) {
variants = project.android.applicationVariants
} else if (project.plugins.hasPlugin(LibraryPlugin.class)) {
variants = project.android.libraryVariants
} else {
return
}
variants.all { variant ->
def task = project.tasks.create("create${variant.name.capitalize()}JavaTask",
CreateJavaTask.class)
//注册生成java类的task,指定生成地址,需要和task中写入java的地址一致
// variant.registerJavaGeneratingTask(task,new File(project.buildDir, "generated/source/container"))
variant.registerJavaGeneratingTask(task, new File(project.projectDir, "src/main/java"))
}
}
}
}
3.生成java的task
class CreateJavaTask extends DefaultTask {
@TaskAction
void doTask() {
//生成java类
TypeSpec.Builder builder = TypeSpec.classBuilder("TestJava")
.addModifiers(Modifier.PUBLIC, Modifier.ABSTRACT)
JavaFile javaFile = JavaFile.builder("com.test.sdk", builder.build()).build()
//将java写入到文件夹下
// File file = new File(project.buildDir, "generated/source/container")
File file = new File(project.projectDir, "src/main/java")
if (!file.exists()) {
file.mkdirs()
}
javaFile.writeTo(file)
println "[write to]: ${file.absolutePath}"
}
}