From f946e34409bb142c3f547d708d29928b1589510f Mon Sep 17 00:00:00 2001 From: Kuan-Ying Chou Date: Mon, 13 Nov 2023 10:55:24 -0800 Subject: [PATCH] Change onReceive marker from field to annotation and read it with AGP's ClassContext RELNOTES=N/A PiperOrigin-RevId: 582018651 --- java/dagger/hilt/android/internal/BUILD | 1 + .../OnReceiveBytecodeInjectionMarker.java | 31 ++++++++++ .../plugin/util/ComponentCompatApi70Impl.kt | 5 -- .../plugin/util/ComponentCompatApi71Impl.kt | 5 -- .../plugin/util/ComponentCompatApi72Impl.kt | 5 -- .../plugin/agp-wrapper-8-3/build.gradle | 15 ----- ...droidComponentsExtensionCompatApi83Impl.kt | 36 ------------ .../plugin/util/ComponentCompatApi83Impl.kt | 56 ------------------- .../plugin/agp-wrapper-impl/build.gradle | 1 - .../android/plugin/util/AGPVersionCompat.kt | 3 - .../android/plugin/util/ComponentCompat.kt | 3 - .../plugin/AndroidEntryPointClassVisitor.kt | 49 ++++++---------- .../hilt/android/plugin/HiltGradlePlugin.kt | 8 +-- .../hilt/android/plugin/settings.gradle | 2 +- .../BroadcastReceiverGenerator.java | 24 +++----- .../hilt/processor/internal/ClassNames.java | 3 + 16 files changed, 63 insertions(+), 184 deletions(-) create mode 100644 java/dagger/hilt/android/internal/OnReceiveBytecodeInjectionMarker.java delete mode 100644 java/dagger/hilt/android/plugin/agp-wrapper-8-3/build.gradle delete mode 100644 java/dagger/hilt/android/plugin/agp-wrapper-8-3/src/main/kotlin/dagger/hilt/android/plugin/util/AndroidComponentsExtensionCompatApi83Impl.kt delete mode 100644 java/dagger/hilt/android/plugin/agp-wrapper-8-3/src/main/kotlin/dagger/hilt/android/plugin/util/ComponentCompatApi83Impl.kt diff --git a/java/dagger/hilt/android/internal/BUILD b/java/dagger/hilt/android/internal/BUILD index ae8a06692ff..4a231a85e73 100644 --- a/java/dagger/hilt/android/internal/BUILD +++ b/java/dagger/hilt/android/internal/BUILD @@ -21,6 +21,7 @@ android_library( name = "internal", srcs = [ "Contexts.java", + "OnReceiveBytecodeInjectionMarker.java", "ThreadUtil.java", ], ) diff --git a/java/dagger/hilt/android/internal/OnReceiveBytecodeInjectionMarker.java b/java/dagger/hilt/android/internal/OnReceiveBytecodeInjectionMarker.java new file mode 100644 index 00000000000..ed5abbe4a83 --- /dev/null +++ b/java/dagger/hilt/android/internal/OnReceiveBytecodeInjectionMarker.java @@ -0,0 +1,31 @@ +/* + * Copyright (C) 2023 The Dagger Authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package dagger.hilt.android.internal; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * The marker annotation used to denote that we need to inject super.onReceive() call + * to the @AndroidEntryPoint-annotated BroadcastReceiver's onReceive() method. + */ +@Retention(RetentionPolicy.CLASS) +@Target(ElementType.TYPE) +public @interface OnReceiveBytecodeInjectionMarker { } + diff --git a/java/dagger/hilt/android/plugin/agp-wrapper-7-0/src/main/kotlin/dagger/hilt/android/plugin/util/ComponentCompatApi70Impl.kt b/java/dagger/hilt/android/plugin/agp-wrapper-7-0/src/main/kotlin/dagger/hilt/android/plugin/util/ComponentCompatApi70Impl.kt index 71adf51137a..36c7d77a6f5 100644 --- a/java/dagger/hilt/android/plugin/agp-wrapper-7-0/src/main/kotlin/dagger/hilt/android/plugin/util/ComponentCompatApi70Impl.kt +++ b/java/dagger/hilt/android/plugin/agp-wrapper-7-0/src/main/kotlin/dagger/hilt/android/plugin/util/ComponentCompatApi70Impl.kt @@ -21,8 +21,6 @@ import com.android.build.api.instrumentation.FramesComputationMode import com.android.build.api.instrumentation.InstrumentationParameters import com.android.build.api.instrumentation.InstrumentationScope import com.android.build.api.variant.Component -import java.io.File -import org.gradle.api.Project internal class ComponentCompatApi70Impl(private val component: Component) : ComponentCompat() { @@ -42,7 +40,4 @@ internal class ComponentCompatApi70Impl(private val component: Component) : Comp override fun setAsmFramesComputationMode(mode: FramesComputationMode) { component.setAsmFramesComputationMode(mode) } - - override fun getJavaCompileClassesDir(project: Project): File = - project.layout.buildDirectory.dir("intermediates/javac/${component.name}/classes").get().asFile } diff --git a/java/dagger/hilt/android/plugin/agp-wrapper-7-1/src/main/kotlin/dagger/hilt/android/plugin/util/ComponentCompatApi71Impl.kt b/java/dagger/hilt/android/plugin/agp-wrapper-7-1/src/main/kotlin/dagger/hilt/android/plugin/util/ComponentCompatApi71Impl.kt index d70ef3437ae..d7c96581b6c 100644 --- a/java/dagger/hilt/android/plugin/agp-wrapper-7-1/src/main/kotlin/dagger/hilt/android/plugin/util/ComponentCompatApi71Impl.kt +++ b/java/dagger/hilt/android/plugin/agp-wrapper-7-1/src/main/kotlin/dagger/hilt/android/plugin/util/ComponentCompatApi71Impl.kt @@ -21,8 +21,6 @@ import com.android.build.api.instrumentation.FramesComputationMode import com.android.build.api.instrumentation.InstrumentationParameters import com.android.build.api.instrumentation.InstrumentationScope import com.android.build.api.variant.Component -import java.io.File -import org.gradle.api.Project internal class ComponentCompatApi71Impl(private val component: Component) : ComponentCompat() { @@ -40,7 +38,4 @@ internal class ComponentCompatApi71Impl(private val component: Component) : Comp override fun setAsmFramesComputationMode(mode: FramesComputationMode) { component.setAsmFramesComputationMode(mode) } - - override fun getJavaCompileClassesDir(project: Project): File = - project.layout.buildDirectory.dir("intermediates/javac/${component.name}/classes").get().asFile } diff --git a/java/dagger/hilt/android/plugin/agp-wrapper-7-2/src/main/kotlin/dagger/hilt/android/plugin/util/ComponentCompatApi72Impl.kt b/java/dagger/hilt/android/plugin/agp-wrapper-7-2/src/main/kotlin/dagger/hilt/android/plugin/util/ComponentCompatApi72Impl.kt index 1a063cd0503..ac4abf52310 100644 --- a/java/dagger/hilt/android/plugin/agp-wrapper-7-2/src/main/kotlin/dagger/hilt/android/plugin/util/ComponentCompatApi72Impl.kt +++ b/java/dagger/hilt/android/plugin/agp-wrapper-7-2/src/main/kotlin/dagger/hilt/android/plugin/util/ComponentCompatApi72Impl.kt @@ -21,8 +21,6 @@ import com.android.build.api.instrumentation.FramesComputationMode import com.android.build.api.instrumentation.InstrumentationParameters import com.android.build.api.instrumentation.InstrumentationScope import com.android.build.api.variant.Component -import java.io.File -import org.gradle.api.Project internal class ComponentCompatApi72Impl(private val component: Component) : ComponentCompat() { @@ -44,7 +42,4 @@ internal class ComponentCompatApi72Impl(private val component: Component) : Comp override fun setAsmFramesComputationMode(mode: FramesComputationMode) { component.instrumentation.setAsmFramesComputationMode(mode) } - - override fun getJavaCompileClassesDir(project: Project): File = - project.layout.buildDirectory.dir("intermediates/javac/${component.name}/classes").get().asFile } diff --git a/java/dagger/hilt/android/plugin/agp-wrapper-8-3/build.gradle b/java/dagger/hilt/android/plugin/agp-wrapper-8-3/build.gradle deleted file mode 100644 index 8d60bbea548..00000000000 --- a/java/dagger/hilt/android/plugin/agp-wrapper-8-3/build.gradle +++ /dev/null @@ -1,15 +0,0 @@ -plugins { - id 'org.jetbrains.kotlin.jvm' -} - -compileKotlin { - kotlinOptions { - jvmTarget = 11 - } -} - -dependencies { - implementation project(':agp-wrapper') - compileOnly gradleApi() - compileOnly "com.android.tools.build:gradle:8.3.0-alpha11" -} \ No newline at end of file diff --git a/java/dagger/hilt/android/plugin/agp-wrapper-8-3/src/main/kotlin/dagger/hilt/android/plugin/util/AndroidComponentsExtensionCompatApi83Impl.kt b/java/dagger/hilt/android/plugin/agp-wrapper-8-3/src/main/kotlin/dagger/hilt/android/plugin/util/AndroidComponentsExtensionCompatApi83Impl.kt deleted file mode 100644 index f48d7d2ea04..00000000000 --- a/java/dagger/hilt/android/plugin/agp-wrapper-8-3/src/main/kotlin/dagger/hilt/android/plugin/util/AndroidComponentsExtensionCompatApi83Impl.kt +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (C) 2023 The Dagger Authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dagger.hilt.android.plugin.util - -import com.android.build.api.variant.AndroidComponentsExtension -import com.android.build.api.variant.HasAndroidTest -import org.gradle.api.Project - -class AndroidComponentsExtensionCompatApi83Impl(private val project: Project) : - AndroidComponentsExtensionCompat { - - override fun onAllVariants(block: (ComponentCompat) -> Unit) { - val actual = project.extensions.getByType(AndroidComponentsExtension::class.java) - actual.onVariants { variant -> - block.invoke(ComponentCompatApi83Impl(variant)) - - (variant as? HasAndroidTest)?.androidTest?.let { block.invoke(ComponentCompatApi83Impl(it)) } - - variant.unitTest?.let { block.invoke(ComponentCompatApi83Impl(it)) } - } - } -} diff --git a/java/dagger/hilt/android/plugin/agp-wrapper-8-3/src/main/kotlin/dagger/hilt/android/plugin/util/ComponentCompatApi83Impl.kt b/java/dagger/hilt/android/plugin/agp-wrapper-8-3/src/main/kotlin/dagger/hilt/android/plugin/util/ComponentCompatApi83Impl.kt deleted file mode 100644 index 53d88d8c40d..00000000000 --- a/java/dagger/hilt/android/plugin/agp-wrapper-8-3/src/main/kotlin/dagger/hilt/android/plugin/util/ComponentCompatApi83Impl.kt +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (C) 2023 The Dagger Authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dagger.hilt.android.plugin.util - -import com.android.build.api.instrumentation.AsmClassVisitorFactory -import com.android.build.api.instrumentation.FramesComputationMode -import com.android.build.api.instrumentation.InstrumentationParameters -import com.android.build.api.instrumentation.InstrumentationScope -import com.android.build.api.variant.Component -import java.io.File -import org.gradle.api.Project - -internal class ComponentCompatApi83Impl(private val component: Component) : ComponentCompat() { - - override val name: String - get() = component.name - - override fun transformClassesWith( - classVisitorFactoryImplClass: Class>, - scope: InstrumentationScope, - instrumentationParamsConfig: (ParamT) -> Unit - ) { - component.instrumentation.transformClassesWith( - classVisitorFactoryImplClass, - scope, - instrumentationParamsConfig - ) - } - - override fun setAsmFramesComputationMode(mode: FramesComputationMode) { - component.instrumentation.setAsmFramesComputationMode(mode) - } - - override fun getJavaCompileClassesDir(project: Project): File { - // TODO(kuanyingchou): replace hardcoded path with Artifacts API: - // https://developer.android.com/reference/tools/gradle-api/8.1/com/android/build/api/artifact/Artifacts - val task = "compile${component.name.replaceFirstChar { it.uppercase() }}JavaWithJavac" - return project.layout.buildDirectory.dir( - "intermediates/javac/${component.name}/${task}/classes" - ).get().asFile - } -} diff --git a/java/dagger/hilt/android/plugin/agp-wrapper-impl/build.gradle b/java/dagger/hilt/android/plugin/agp-wrapper-impl/build.gradle index 12bf8c742d3..f270efb9f4e 100644 --- a/java/dagger/hilt/android/plugin/agp-wrapper-impl/build.gradle +++ b/java/dagger/hilt/android/plugin/agp-wrapper-impl/build.gradle @@ -13,7 +13,6 @@ dependencies { implementation project(':agp-wrapper-7-0') implementation project(':agp-wrapper-7-1') implementation project(':agp-wrapper-7-2') - implementation project(':agp-wrapper-8-3') compileOnly gradleApi() compileOnly "com.android.tools.build:gradle:$agp_version" diff --git a/java/dagger/hilt/android/plugin/agp-wrapper-impl/src/main/kotlin/dagger/hilt/android/plugin/util/AGPVersionCompat.kt b/java/dagger/hilt/android/plugin/agp-wrapper-impl/src/main/kotlin/dagger/hilt/android/plugin/util/AGPVersionCompat.kt index 802afe6bfda..3ddd4841afd 100644 --- a/java/dagger/hilt/android/plugin/agp-wrapper-impl/src/main/kotlin/dagger/hilt/android/plugin/util/AGPVersionCompat.kt +++ b/java/dagger/hilt/android/plugin/agp-wrapper-impl/src/main/kotlin/dagger/hilt/android/plugin/util/AGPVersionCompat.kt @@ -21,9 +21,6 @@ import org.gradle.api.Project fun getAndroidComponentsExtension(project: Project): AndroidComponentsExtensionCompat { val version = SimpleAGPVersion.ANDROID_GRADLE_PLUGIN_VERSION return when { - version >= SimpleAGPVersion(8, 3) -> { - AndroidComponentsExtensionCompatApi83Impl(project) - } version >= SimpleAGPVersion(7, 2) -> { AndroidComponentsExtensionCompatApi72Impl(project) } diff --git a/java/dagger/hilt/android/plugin/agp-wrapper/src/main/kotlin/dagger/hilt/android/plugin/util/ComponentCompat.kt b/java/dagger/hilt/android/plugin/agp-wrapper/src/main/kotlin/dagger/hilt/android/plugin/util/ComponentCompat.kt index 7ec83057484..1f0d589a265 100644 --- a/java/dagger/hilt/android/plugin/agp-wrapper/src/main/kotlin/dagger/hilt/android/plugin/util/ComponentCompat.kt +++ b/java/dagger/hilt/android/plugin/agp-wrapper/src/main/kotlin/dagger/hilt/android/plugin/util/ComponentCompat.kt @@ -42,7 +42,4 @@ abstract class ComponentCompat { /** Redeclaration of [com.android.build.api.variant.Component.setAsmFramesComputationMode] */ abstract fun setAsmFramesComputationMode(mode: FramesComputationMode) - - /** Return the directory that contains the classes from JavaCompile task */ - abstract fun getJavaCompileClassesDir(project: Project): File } diff --git a/java/dagger/hilt/android/plugin/main/src/main/kotlin/dagger/hilt/android/plugin/AndroidEntryPointClassVisitor.kt b/java/dagger/hilt/android/plugin/main/src/main/kotlin/dagger/hilt/android/plugin/AndroidEntryPointClassVisitor.kt index da5fb3c3c41..16e4af9c059 100644 --- a/java/dagger/hilt/android/plugin/main/src/main/kotlin/dagger/hilt/android/plugin/AndroidEntryPointClassVisitor.kt +++ b/java/dagger/hilt/android/plugin/main/src/main/kotlin/dagger/hilt/android/plugin/AndroidEntryPointClassVisitor.kt @@ -36,15 +36,10 @@ import org.objectweb.asm.Opcodes class AndroidEntryPointClassVisitor( private val apiVersion: Int, nextClassVisitor: ClassVisitor, - private val additionalClasses: File + private val classContext: ClassContext ) : ClassVisitor(apiVersion, nextClassVisitor) { - interface AndroidEntryPointParams : InstrumentationParameters { - @get:Internal - val additionalClassesDir: Property - } - - abstract class Factory : AsmClassVisitorFactory { + abstract class Factory : AsmClassVisitorFactory { override fun createClassVisitor( classContext: ClassContext, nextClassVisitor: ClassVisitor @@ -52,7 +47,7 @@ class AndroidEntryPointClassVisitor( return AndroidEntryPointClassVisitor( apiVersion = instrumentationContext.apiVersion.get(), nextClassVisitor = nextClassVisitor, - additionalClasses = parameters.get().additionalClassesDir.get() + classContext = classContext ) } @@ -198,34 +193,21 @@ class AndroidEntryPointClassVisitor( } /** - * Check if Hilt generated class is a BroadcastReceiver with the marker field which means + * Check if Hilt generated class is a BroadcastReceiver with the marker annotation which means * a super.onReceive invocation has to be inserted in the implementation. */ - private fun hasOnReceiveBytecodeInjectionMarker() = - findAdditionalClassFile(newSuperclassName).inputStream().use { - var hasMarker = false - ClassReader(it).accept( - object : ClassVisitor(apiVersion) { - override fun visitField( - access: Int, - name: String, - descriptor: String, - signature: String?, - value: Any? - ): FieldVisitor? { - if (name == "onReceiveBytecodeInjectionMarker") { - hasMarker = true - } - return null - } - }, - ClassReader.SKIP_CODE or ClassReader.SKIP_DEBUG or ClassReader.SKIP_FRAMES - ) - return@use hasMarker - } + private fun hasOnReceiveBytecodeInjectionMarker(): Boolean { + val newSuperclassFQName = newSuperclassName.toFQName() + return classContext.loadClassData(newSuperclassFQName) + ?.classAnnotations?.contains(ON_RECEIVE_MARKER_ANNOTATION) + ?: error("Cannot load class $newSuperclassFQName!") + } - private fun findAdditionalClassFile(className: String) = - File(additionalClasses, "$className.class") + /** + * Return a fully qualified name from an internal name. + * See https://asm.ow2.io/javadoc/org/objectweb/asm/Type.html#getInternalName() + */ + private fun String.toFQName() = this.replace('/', '.') companion object { val ANDROID_ENTRY_POINT_ANNOTATIONS = setOf( @@ -235,5 +217,6 @@ class AndroidEntryPointClassVisitor( const val ON_RECEIVE_METHOD_NAME = "onReceive" const val ON_RECEIVE_METHOD_DESCRIPTOR = "(Landroid/content/Context;Landroid/content/Intent;)V" + const val ON_RECEIVE_MARKER_ANNOTATION = "dagger.hilt.android.internal.OnReceiveBytecodeInjectionMarker" } } diff --git a/java/dagger/hilt/android/plugin/main/src/main/kotlin/dagger/hilt/android/plugin/HiltGradlePlugin.kt b/java/dagger/hilt/android/plugin/main/src/main/kotlin/dagger/hilt/android/plugin/HiltGradlePlugin.kt index c5a6b510648..7b03e434a99 100644 --- a/java/dagger/hilt/android/plugin/main/src/main/kotlin/dagger/hilt/android/plugin/HiltGradlePlugin.kt +++ b/java/dagger/hilt/android/plugin/main/src/main/kotlin/dagger/hilt/android/plugin/HiltGradlePlugin.kt @@ -245,11 +245,9 @@ class HiltGradlePlugin @Inject constructor( fun registerTransform(androidComponent: ComponentCompat) { androidComponent.transformClassesWith( classVisitorFactoryImplClass = AndroidEntryPointClassVisitor.Factory::class.java, - scope = InstrumentationScope.PROJECT - ) { params -> - val classesDir = androidComponent.getJavaCompileClassesDir(project) - params.additionalClassesDir.set(classesDir) - } + scope = InstrumentationScope.PROJECT, + instrumentationParamsConfig = {} + ) androidComponent.setAsmFramesComputationMode( FramesComputationMode.COMPUTE_FRAMES_FOR_INSTRUMENTED_METHODS ) diff --git a/java/dagger/hilt/android/plugin/settings.gradle b/java/dagger/hilt/android/plugin/settings.gradle index f54282e4ebb..778bf22e455 100644 --- a/java/dagger/hilt/android/plugin/settings.gradle +++ b/java/dagger/hilt/android/plugin/settings.gradle @@ -21,4 +21,4 @@ include ':agp-wrapper-impl' include ':agp-wrapper-7-0' include ':agp-wrapper-7-1' include ':agp-wrapper-7-2' -include ':agp-wrapper-8-3' + diff --git a/java/dagger/hilt/android/processor/internal/androidentrypoint/BroadcastReceiverGenerator.java b/java/dagger/hilt/android/processor/internal/androidentrypoint/BroadcastReceiverGenerator.java index 156842bbd60..78a7976d1dc 100644 --- a/java/dagger/hilt/android/processor/internal/androidentrypoint/BroadcastReceiverGenerator.java +++ b/java/dagger/hilt/android/processor/internal/androidentrypoint/BroadcastReceiverGenerator.java @@ -30,13 +30,12 @@ import androidx.room.compiler.processing.XTypeParameterElement; import com.google.common.collect.ImmutableSet; import com.squareup.javapoet.ClassName; -import com.squareup.javapoet.FieldSpec; import com.squareup.javapoet.JavaFile; import com.squareup.javapoet.MethodSpec; import com.squareup.javapoet.ParameterSpec; -import com.squareup.javapoet.TypeName; import com.squareup.javapoet.TypeSpec; import dagger.hilt.android.processor.internal.AndroidClassNames; +import dagger.hilt.processor.internal.ClassNames; import dagger.hilt.processor.internal.Processors; import dagger.internal.codegen.xprocessing.XExecutableTypes; import java.io.IOException; @@ -69,6 +68,13 @@ public void generate() throws IOException { .addModifiers(metadata.generatedClassModifiers()) .addMethod(onReceiveMethod()); + // Add an annotation used as a marker to let the bytecode injector know this receiver + // will need to be injected with a super.onReceive call. This is only necessary if no concrete + // onReceive call is implemented in any of the super classes. + if (metadata.requiresBytecodeInjection() && !isOnReceiveImplemented(metadata.baseElement())) { + builder.addAnnotation(ClassNames.ON_RECEIVE_BYTECODE_INJECTION_MARKER); + } + JavaPoetExtKt.addOriginatingElement(builder, metadata.element()); Generators.addGeneratedBaseClassJavadoc(builder, AndroidClassNames.ANDROID_ENTRY_POINT); Processors.addGeneratedAnnotation(builder, env, getClass()); @@ -82,20 +88,6 @@ public void generate() throws IOException { Generators.copyLintAnnotations(metadata.element(), builder); Generators.copySuppressAnnotations(metadata.element(), builder); - // Add an unused field used as a marker to let the bytecode injector know this receiver will - // need to be injected with a super.onReceive call. This is only necessary if no concrete - // onReceive call is implemented in any of the super classes. - if (metadata.requiresBytecodeInjection() && !isOnReceiveImplemented(metadata.baseElement())) { - builder.addField( - FieldSpec.builder( - TypeName.BOOLEAN, - "onReceiveBytecodeInjectionMarker", - Modifier.PRIVATE, - Modifier.FINAL) - .initializer("false") - .build()); - } - env.getFiler() .write( JavaFile.builder(generatedClassName.packageName(), builder.build()).build(), diff --git a/java/dagger/hilt/processor/internal/ClassNames.java b/java/dagger/hilt/processor/internal/ClassNames.java index 890b404ae53..bc0591cb0ff 100644 --- a/java/dagger/hilt/processor/internal/ClassNames.java +++ b/java/dagger/hilt/processor/internal/ClassNames.java @@ -215,6 +215,9 @@ public final class ClassNames { public static final ClassName SUPPRESS_WARNINGS = get("java.lang", "SuppressWarnings"); public static final ClassName KOTLIN_SUPPRESS = get("kotlin", "Suppress"); + public static final ClassName ON_RECEIVE_BYTECODE_INJECTION_MARKER = + get("dagger.hilt.android.internal", "OnReceiveBytecodeInjectionMarker"); + // Kotlin-specific class names public static final ClassName KOTLIN_METADATA = get("kotlin", "Metadata");