diff --git a/.github/actions/test-gradle-plugin/action.yml b/.github/actions/test-gradle-plugin/action.yml index 55232789b53..bd5747294e9 100644 --- a/.github/actions/test-gradle-plugin/action.yml +++ b/.github/actions/test-gradle-plugin/action.yml @@ -4,11 +4,11 @@ description: 'Tests the Hilt Gradle plugin.' runs: using: "composite" steps: - - name: 'Install Java ${{ env.USE_JAVA_VERSION }}' + - name: 'Install Java ${{ env.USE_JAVA_VERSION_FOR_PLUGIN }}' uses: actions/setup-java@v3 with: distribution: '${{ env.USE_JAVA_DISTRIBUTION }}' - java-version: '${{ env.USE_JAVA_VERSION }}' + java-version: '${{ env.USE_JAVA_VERSION_FOR_PLUGIN }}' - name: 'Check out repository' uses: actions/checkout@v3 - name: 'Cache local Maven repository' diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4311b0d3ada..409ac1d52c5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,6 +11,8 @@ on: env: USE_JAVA_DISTRIBUTION: 'zulu' USE_JAVA_VERSION: '11' + # This is required by AGP 8.3+. + USE_JAVA_VERSION_FOR_PLUGIN: '17' # Our Bazel builds currently rely on 6.3.2. The version is set via # baselisk by USE_BAZEL_VERSION: https://github.com/bazelbuild/bazelisk. USE_BAZEL_VERSION: '6.3.2' diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 50ea1c7b1c5..8f6d3fc965b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -10,6 +10,8 @@ on: env: USE_JAVA_DISTRIBUTION: 'zulu' USE_JAVA_VERSION: '11' + # This is required by AGP 8.3+. + USE_JAVA_VERSION_FOR_PLUGIN: '17' # Our Bazel builds currently rely on 6.3.2. The version is set via # baselisk by USE_BAZEL_VERSION: https://github.com/bazelbuild/bazelisk. USE_BAZEL_VERSION: '6.3.2' diff --git a/java/dagger/hilt/android/plugin/agp-wrapper-7-0/build.gradle b/java/dagger/hilt/android/plugin/agp-wrapper-7-0/build.gradle index 3c034956504..5509261c5f5 100644 --- a/java/dagger/hilt/android/plugin/agp-wrapper-7-0/build.gradle +++ b/java/dagger/hilt/android/plugin/agp-wrapper-7-0/build.gradle @@ -2,8 +2,10 @@ plugins { id 'org.jetbrains.kotlin.jvm' } -kotlin { - jvmToolchain(11) +compileKotlin { + kotlinOptions { + jvmTarget = 11 + } } dependencies { 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 36c7d77a6f5..71adf51137a 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,6 +21,8 @@ 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() { @@ -40,4 +42,7 @@ 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/build.gradle b/java/dagger/hilt/android/plugin/agp-wrapper-7-1/build.gradle index 5bc8d3d1c7d..982949a4978 100644 --- a/java/dagger/hilt/android/plugin/agp-wrapper-7-1/build.gradle +++ b/java/dagger/hilt/android/plugin/agp-wrapper-7-1/build.gradle @@ -2,8 +2,10 @@ plugins { id 'org.jetbrains.kotlin.jvm' } -kotlin { - jvmToolchain(11) +compileKotlin { + kotlinOptions { + jvmTarget = 11 + } } dependencies { 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 d7c96581b6c..d70ef3437ae 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,6 +21,8 @@ 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() { @@ -38,4 +40,7 @@ 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/build.gradle b/java/dagger/hilt/android/plugin/agp-wrapper-7-2/build.gradle index a4133019651..e0331c2a878 100644 --- a/java/dagger/hilt/android/plugin/agp-wrapper-7-2/build.gradle +++ b/java/dagger/hilt/android/plugin/agp-wrapper-7-2/build.gradle @@ -2,8 +2,10 @@ plugins { id 'org.jetbrains.kotlin.jvm' } -kotlin { - jvmToolchain(11) +compileKotlin { + kotlinOptions { + jvmTarget = 11 + } } dependencies { 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 ac4abf52310..1a063cd0503 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,6 +21,8 @@ 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() { @@ -42,4 +44,7 @@ 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 new file mode 100644 index 00000000000..8d60bbea548 --- /dev/null +++ b/java/dagger/hilt/android/plugin/agp-wrapper-8-3/build.gradle @@ -0,0 +1,15 @@ +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 new file mode 100644 index 00000000000..f48d7d2ea04 --- /dev/null +++ b/java/dagger/hilt/android/plugin/agp-wrapper-8-3/src/main/kotlin/dagger/hilt/android/plugin/util/AndroidComponentsExtensionCompatApi83Impl.kt @@ -0,0 +1,36 @@ +/* + * 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 new file mode 100644 index 00000000000..53d88d8c40d --- /dev/null +++ b/java/dagger/hilt/android/plugin/agp-wrapper-8-3/src/main/kotlin/dagger/hilt/android/plugin/util/ComponentCompatApi83Impl.kt @@ -0,0 +1,56 @@ +/* + * 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 3ad558a8af9..12bf8c742d3 100644 --- a/java/dagger/hilt/android/plugin/agp-wrapper-impl/build.gradle +++ b/java/dagger/hilt/android/plugin/agp-wrapper-impl/build.gradle @@ -2,8 +2,10 @@ plugins { id 'org.jetbrains.kotlin.jvm' } -kotlin { - jvmToolchain(11) +compileKotlin { + kotlinOptions { + jvmTarget = 11 + } } dependencies { @@ -11,6 +13,7 @@ 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 3ddd4841afd..802afe6bfda 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,6 +21,9 @@ 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/build.gradle b/java/dagger/hilt/android/plugin/agp-wrapper/build.gradle index 71ea7242403..d8238e8f1e3 100644 --- a/java/dagger/hilt/android/plugin/agp-wrapper/build.gradle +++ b/java/dagger/hilt/android/plugin/agp-wrapper/build.gradle @@ -2,8 +2,10 @@ plugins { id 'org.jetbrains.kotlin.jvm' } -kotlin { - jvmToolchain(11) +compileKotlin { + kotlinOptions { + jvmTarget = 11 + } } dependencies { 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 acc59e79d7f..7ec83057484 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 @@ -20,6 +20,8 @@ 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 java.io.File +import org.gradle.api.Project /** * Compatibility version of [com.android.build.api.variant.Component] @@ -40,4 +42,7 @@ 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/build.gradle b/java/dagger/hilt/android/plugin/main/build.gradle index 4300eb717a9..cadf4fb3567 100644 --- a/java/dagger/hilt/android/plugin/main/build.gradle +++ b/java/dagger/hilt/android/plugin/main/build.gradle @@ -85,14 +85,11 @@ tasks.withType(PluginUnderTestMetadata.class).named("pluginUnderTestMetadata").c it.pluginClasspath.from(configurations.testPluginCompile) } -kotlin { - jvmToolchain(11) -} - compileKotlin { kotlinOptions { allWarningsAsErrors = true freeCompilerArgs += [ "-opt-in=kotlin.ExperimentalStdlibApi" ] + jvmTarget = 11 } } 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 4e2b8788a4f..c5a6b510648 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 @@ -38,7 +38,6 @@ import dagger.hilt.android.plugin.util.getKaptConfigName import dagger.hilt.android.plugin.util.getKspConfigName import dagger.hilt.android.plugin.util.isKspTask import dagger.hilt.processor.internal.optionvalues.GradleProjectType -import java.io.File import javax.inject.Inject import org.gradle.api.JavaVersion import org.gradle.api.Plugin @@ -248,8 +247,7 @@ class HiltGradlePlugin @Inject constructor( classVisitorFactoryImplClass = AndroidEntryPointClassVisitor.Factory::class.java, scope = InstrumentationScope.PROJECT ) { params -> - val classesDir = - File(project.buildDir, "intermediates/javac/${androidComponent.name}/classes") + val classesDir = androidComponent.getJavaCompileClassesDir(project) params.additionalClassesDir.set(classesDir) } androidComponent.setAsmFramesComputationMode( diff --git a/java/dagger/hilt/android/plugin/main/src/test/data/simple-project-for-agp-test/app/build.gradle b/java/dagger/hilt/android/plugin/main/src/test/data/simple-project-for-agp-test/app/build.gradle index 2173a828023..5b344f4556f 100644 --- a/java/dagger/hilt/android/plugin/main/src/test/data/simple-project-for-agp-test/app/build.gradle +++ b/java/dagger/hilt/android/plugin/main/src/test/data/simple-project-for-agp-test/app/build.gradle @@ -21,7 +21,7 @@ plugins { android { compileSdkVersion 32 - buildToolsVersion "32.0.0" + namespace "simple.app" defaultConfig { applicationId "simple.app" diff --git a/java/dagger/hilt/android/plugin/main/src/test/data/simple-project-for-agp-test/app/src/main/AndroidManifest.xml b/java/dagger/hilt/android/plugin/main/src/test/data/simple-project-for-agp-test/app/src/main/AndroidManifest.xml index da45ecc46c0..ce521fba8fd 100644 --- a/java/dagger/hilt/android/plugin/main/src/test/data/simple-project-for-agp-test/app/src/main/AndroidManifest.xml +++ b/java/dagger/hilt/android/plugin/main/src/test/data/simple-project-for-agp-test/app/src/main/AndroidManifest.xml @@ -16,5 +16,7 @@ + + \ No newline at end of file diff --git a/java/dagger/hilt/android/plugin/main/src/test/data/simple-project-for-agp-test/app/src/main/java/simple/app/SimpleReceiver.java b/java/dagger/hilt/android/plugin/main/src/test/data/simple-project-for-agp-test/app/src/main/java/simple/app/SimpleReceiver.java new file mode 100644 index 00000000000..ce483add8f0 --- /dev/null +++ b/java/dagger/hilt/android/plugin/main/src/test/data/simple-project-for-agp-test/app/src/main/java/simple/app/SimpleReceiver.java @@ -0,0 +1,28 @@ +/* + * 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 simple.app; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import dagger.hilt.android.AndroidEntryPoint; + +@AndroidEntryPoint +class SimpleReceiver extends BroadcastReceiver { + @Override + public void onReceive(Context context, Intent intent) {} +} diff --git a/java/dagger/hilt/android/plugin/main/src/test/data/simple-project-for-agp-test/feature/build.gradle b/java/dagger/hilt/android/plugin/main/src/test/data/simple-project-for-agp-test/feature/build.gradle index e19f1d5713c..ade0606e25f 100644 --- a/java/dagger/hilt/android/plugin/main/src/test/data/simple-project-for-agp-test/feature/build.gradle +++ b/java/dagger/hilt/android/plugin/main/src/test/data/simple-project-for-agp-test/feature/build.gradle @@ -21,7 +21,7 @@ plugins { android { compileSdkVersion 32 - buildToolsVersion "32.0.0" + namespace "simple.library" defaultConfig { minSdkVersion 16 diff --git a/java/dagger/hilt/android/plugin/main/src/test/kotlin/AGPCompatibilityTest.kt b/java/dagger/hilt/android/plugin/main/src/test/kotlin/AGPCompatibilityTest.kt index d5bc488025b..f488fb33228 100644 --- a/java/dagger/hilt/android/plugin/main/src/test/kotlin/AGPCompatibilityTest.kt +++ b/java/dagger/hilt/android/plugin/main/src/test/kotlin/AGPCompatibilityTest.kt @@ -26,11 +26,13 @@ import org.junit.rules.TemporaryFolder import org.junit.runner.RunWith import org.junit.runners.Parameterized -const val TASK = ":app:hiltJavaCompileDebug" +// `hiltJavaCompileDebug` gets to run as well as `transformDebugClassesWithAsm` depends on it. +const val TASK = ":app:transformDebugClassesWithAsm" @RunWith(Parameterized::class) class AGPCompatibilityTest( - private val agpVersion: String + private val agpVersion: String, + private val gradleVersion: String ) { @get:Rule val testProjectDir = TemporaryFolder() @@ -75,18 +77,21 @@ class AGPCompatibilityTest( GradleRunner.create() .withProjectDir(testProjectDir.root) .withArguments(*args) + .withGradleVersion(gradleVersion) .forwardOutput() return gradleRunner.build() } companion object { @JvmStatic - @Parameterized.Parameters(name = "agpVersion = {0}") + @Parameterized.Parameters(name = "agpVersion = {0}, gradleVersion = {1}") fun parameters() = listOf( - arrayOf("7.2.0"), - arrayOf("7.1.0"), - arrayOf("7.0.0"), + // AGP 8.3 requires Gradle 8.4 and JDK 17. + arrayOf("8.3.0-alpha11", "8.4"), + arrayOf("7.2.0", "7.4.2"), + arrayOf("7.1.0", "7.4.2"), + arrayOf("7.0.0", "7.4.2"), ) } } diff --git a/java/dagger/hilt/android/plugin/settings.gradle b/java/dagger/hilt/android/plugin/settings.gradle index 55724bf4832..f54282e4ebb 100644 --- a/java/dagger/hilt/android/plugin/settings.gradle +++ b/java/dagger/hilt/android/plugin/settings.gradle @@ -21,3 +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/javatests/artifacts/dagger-android/simple/gradle/wrapper/gradle-wrapper.properties b/javatests/artifacts/dagger-android/simple/gradle/wrapper/gradle-wrapper.properties index 00e33edef69..98debb84d51 100644 --- a/javatests/artifacts/dagger-android/simple/gradle/wrapper/gradle-wrapper.properties +++ b/javatests/artifacts/dagger-android/simple/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/javatests/artifacts/dagger-ksp/gradle/wrapper/gradle-wrapper.properties b/javatests/artifacts/dagger-ksp/gradle/wrapper/gradle-wrapper.properties index 0f80bbf516c..98debb84d51 100644 --- a/javatests/artifacts/dagger-ksp/gradle/wrapper/gradle-wrapper.properties +++ b/javatests/artifacts/dagger-ksp/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/javatests/artifacts/dagger/gradle/wrapper/gradle-wrapper.properties b/javatests/artifacts/dagger/gradle/wrapper/gradle-wrapper.properties index 0f80bbf516c..98debb84d51 100644 --- a/javatests/artifacts/dagger/gradle/wrapper/gradle-wrapper.properties +++ b/javatests/artifacts/dagger/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/javatests/artifacts/hilt-android/pluginMarker/gradle/wrapper/gradle-wrapper.properties b/javatests/artifacts/hilt-android/pluginMarker/gradle/wrapper/gradle-wrapper.properties index 0f80bbf516c..98debb84d51 100644 --- a/javatests/artifacts/hilt-android/pluginMarker/gradle/wrapper/gradle-wrapper.properties +++ b/javatests/artifacts/hilt-android/pluginMarker/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/javatests/artifacts/hilt-android/simple/gradle/wrapper/gradle-wrapper.properties b/javatests/artifacts/hilt-android/simple/gradle/wrapper/gradle-wrapper.properties index 00e33edef69..98debb84d51 100644 --- a/javatests/artifacts/hilt-android/simple/gradle/wrapper/gradle-wrapper.properties +++ b/javatests/artifacts/hilt-android/simple/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/javatests/artifacts/hilt-android/simpleKotlin/gradle/wrapper/gradle-wrapper.properties b/javatests/artifacts/hilt-android/simpleKotlin/gradle/wrapper/gradle-wrapper.properties index 00e33edef69..98debb84d51 100644 --- a/javatests/artifacts/hilt-android/simpleKotlin/gradle/wrapper/gradle-wrapper.properties +++ b/javatests/artifacts/hilt-android/simpleKotlin/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists