android: fix missing Hilt GeneratedInjector in asm transform
This commit is contained in:
@@ -127,3 +127,37 @@ dependencies {
|
||||
kapt {
|
||||
correctErrorTypes = true
|
||||
}
|
||||
|
||||
fun registerHiltInjectorBackfillTask(variantName: String) {
|
||||
val cap = variantName.replaceFirstChar { if (it.isLowerCase()) it.titlecase() else it.toString() }
|
||||
val taskName = "backfill${cap}HiltApplicationInjector"
|
||||
val dexBuilderTaskName = "dexBuilder$cap"
|
||||
val compileJavaTaskName = "compile${cap}JavaWithJavac"
|
||||
|
||||
tasks.register(taskName) {
|
||||
dependsOn(compileJavaTaskName)
|
||||
doLast {
|
||||
val javacOutput = file("$buildDir/intermediates/javac/$variantName/$compileJavaTaskName/classes")
|
||||
val asmOutput = file("$buildDir/intermediates/classes/$variantName/transform${cap}ClassesWithAsm/dirs")
|
||||
if (!javacOutput.exists() || !asmOutput.exists()) return@doLast
|
||||
|
||||
fileTree(javacOutput) {
|
||||
include("**/*Application_GeneratedInjector.class")
|
||||
}.forEach { source ->
|
||||
val relativePath = source.relativeTo(javacOutput).path
|
||||
val target = file("${asmOutput.path}/$relativePath")
|
||||
if (!target.exists()) {
|
||||
target.parentFile?.mkdirs()
|
||||
source.copyTo(target, overwrite = true)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
tasks.matching { it.name == dexBuilderTaskName }.configureEach {
|
||||
dependsOn(taskName)
|
||||
}
|
||||
}
|
||||
|
||||
registerHiltInjectorBackfillTask("debug")
|
||||
registerHiltInjectorBackfillTask("release")
|
||||
|
||||
Reference in New Issue
Block a user