From 37e6c87046486fe56d2191a6689cbe496af8e80f Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Thu, 25 May 2023 22:19:58 +0530 Subject: [PATCH] feat: move up to AGP 8.2.x --- build-logic/build.gradle.kts | 1 + build-logic/settings.gradle.kts | 14 ++++++- .../claw/gradle/AndroidCommonPlugin.kt | 5 ++- common/build.gradle.kts | 4 +- gradle.properties | 39 ++++++------------- gradle/libs.versions.toml | 3 +- settings.gradle.kts | 16 +++++++- 7 files changed, 48 insertions(+), 34 deletions(-) diff --git a/build-logic/build.gradle.kts b/build-logic/build.gradle.kts index 6303de81..358cc3e2 100644 --- a/build-logic/build.gradle.kts +++ b/build-logic/build.gradle.kts @@ -78,6 +78,7 @@ dependencies { implementation(libs.build.agp) implementation(libs.build.cachefix) implementation(libs.build.kotlin.gradle) + implementation(libs.build.r8) implementation(libs.build.semver) implementation(libs.build.sentry) implementation(libs.build.spotless) diff --git a/build-logic/settings.gradle.kts b/build-logic/settings.gradle.kts index 651f25a8..3d7425f3 100644 --- a/build-logic/settings.gradle.kts +++ b/build-logic/settings.gradle.kts @@ -15,7 +15,6 @@ dependencyResolutionManagement { filter { includeGroup("androidx.databinding") includeGroup("com.android") - includeGroup("com.android.tools") includeGroup("com.android.tools.analytics-library") includeGroup("com.android.tools.build") includeGroup("com.android.tools.build.jetifier") @@ -25,6 +24,15 @@ dependencyResolutionManagement { includeGroup("com.android.tools.lint") includeGroup("com.android.tools.utp") includeGroup("com.google.testing.platform") + includeModule("com.android.tools", "annotations") + includeModule("com.android.tools", "common") + includeModule("com.android.tools", "desugar_jdk_libs") + includeModule("com.android.tools", "desugar_jdk_libs_configuration") + includeModule("com.android.tools", "dvlib") + includeModule("com.android.tools", "play-sdk-proto") + includeModule("com.android.tools", "repository") + includeModule("com.android.tools", "sdklib") + includeModule("com.android.tools", "sdk-common") } } exclusiveContent { @@ -35,6 +43,10 @@ dependencyResolutionManagement { includeModule("gradle.plugin.org.gradle.android", "android-cache-fix-gradle-plugin") } } + exclusiveContent { + forRepository { maven("https://storage.googleapis.com/r8-releases/raw") } + filter { includeModule("com.android.tools", "r8") } + } mavenCentral() } versionCatalogs { create("libs") { from(files("../gradle/libs.versions.toml")) } } diff --git a/build-logic/src/main/kotlin/dev/msfjarvis/claw/gradle/AndroidCommonPlugin.kt b/build-logic/src/main/kotlin/dev/msfjarvis/claw/gradle/AndroidCommonPlugin.kt index 6158610c..5a760efc 100644 --- a/build-logic/src/main/kotlin/dev/msfjarvis/claw/gradle/AndroidCommonPlugin.kt +++ b/build-logic/src/main/kotlin/dev/msfjarvis/claw/gradle/AndroidCommonPlugin.kt @@ -11,6 +11,7 @@ package dev.msfjarvis.claw.gradle import com.android.build.api.dsl.ApplicationExtension import com.android.build.api.dsl.LibraryExtension import com.android.build.api.variant.ApplicationAndroidComponentsExtension +import com.android.build.api.variant.HasUnitTestBuilder import com.android.build.api.variant.LibraryAndroidComponentsExtension import com.android.build.gradle.BaseExtension import dev.msfjarvis.claw.gradle.LintConfig.configureLint @@ -73,7 +74,7 @@ private fun Project.configureSlimTests() { // Disable unit test tasks on the release build type for Android Library projects extensions.findByType()?.run { beforeVariants(selector().withBuildType("release")) { - it.enableUnitTest = false + (it as HasUnitTestBuilder).enableUnitTest = false it.enableAndroidTest = false } } @@ -81,7 +82,7 @@ private fun Project.configureSlimTests() { // Disable unit test tasks on the release build type for Android Application projects. extensions.findByType()?.run { beforeVariants(selector().withBuildType("release")) { - it.enableUnitTest = false + (it as HasUnitTestBuilder).enableUnitTest = false it.enableAndroidTest = false } } diff --git a/common/build.gradle.kts b/common/build.gradle.kts index 648850e0..f77e8fb8 100644 --- a/common/build.gradle.kts +++ b/common/build.gradle.kts @@ -6,6 +6,8 @@ */ @file:Suppress("UnstableApiUsage") +import com.android.build.api.variant.HasUnitTestBuilder + plugins { id("dev.msfjarvis.claw.android-library") id("dev.msfjarvis.claw.kotlin-android") @@ -25,7 +27,7 @@ android { namespace = "dev.msfjarvis.claw.common" } -androidComponents { beforeVariants { it.enableUnitTest = false } } +androidComponents { beforeVariants { (it as HasUnitTestBuilder).enableUnitTest = false } } anvil { generateDaggerFactories.set(true) } diff --git a/gradle.properties b/gradle.properties index 90c9579e..74487f2e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -12,6 +12,9 @@ systemProp.org.gradle.android.cache-fix.ignoreVersionCheck=true org.gradle.configuration-cache=true org.gradle.configuration-cache-problems=warn +# Enable kotlin-assignment plugin +systemProp.org.gradle.unsafe.kotlin.assignment=true + # Enable Kotlin incremental compilation kotlin.incremental=true @@ -24,48 +27,30 @@ kapt.incremental.apt=true # Turn off AP discovery in compile path to enable compile avoidance kapt.include.compile.classpath=false -# Force disable testOnly flag in manifest -android.injected.testOnly=false - # New incremental compilation for Kotlin kotlin.incremental.useClasspathSnapshot=true kotlin.build.report.output=file -# Use R8 instead of ProGuard for code shrinking. -android.enableR8.fullMode=false - # Enable AndroidX android.useAndroidX=true -# Enable non-transitive R class namespacing where each library only contains -# references to the resources it declares instead of declarations plus all -# transitive dependency references. -android.nonTransitiveRClass=true - -# Only keep the single relevant constructor for types mentioned in XML files -# instead of using a parameter wildcard which keeps them all. -android.useMinimalKeepRules=true - -# Default Android build features -android.defaults.buildfeatures.buildconfig=false -android.defaults.buildfeatures.aidl=false -android.defaults.buildfeatures.renderscript=false +# Disable mostly unused default Android build features android.defaults.buildfeatures.resvalues=false android.defaults.buildfeatures.shaders=false +android.library.defaults.buildfeatures.androidresources=false -# Experimental features +# Disallow resolution of dependencies at configuration time +android.dependencyResolutionAtConfigurationTime.disallow=true + +# Disallow parsing the manifest too early in the build process android.disableEarlyManifestParsing=true -android.enablePartialRIncrementalBuilds=true -android.experimental.testOptions.uninstallIncompatibleApks=true -android.enableBuildConfigAsBytecode=true -android.experimental.enableNewResourceShrinker.preciseShrinking=true -# Disable warnings about unsupported features, we know what we're doing -android.suppressUnsupportedOptionWarnings=android.disableEarlyManifestParsing,android.enablePartialRIncrementalBuilds,android.experimental.testOptions.uninstallIncompatibleApks,android.enableBuildConfigAsBytecode,android.experimental.enableNewResourceShrinker.preciseShrinking,android.suppressUnsupportedOptionWarnings +# Disable warnings about unsupported features +android.suppressUnsupportedOptionWarnings=android.dependencyResolutionAtConfigurationTime.disallow,android.disableEarlyManifestParsing,android.suppressUnsupportedOptionWarnings # Add opens for KAPT # https://youtrack.jetbrains.com/issue/KT-45545#focus=Comments-27-4862682.0-0 -org.gradle.jvmargs=-Xmx2048m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 \ +org.gradle.jvmargs=-Dfile.encoding=UTF-8 \ --add-opens=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED \ --add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED \ --add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED \ diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 15b42b0b..2f6e47a3 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,6 +1,6 @@ [versions] accompanist = "0.30.1" -agp = "8.0.2" +agp = "8.2.0-alpha04" coil = "2.4.0" # @keep used for kotlinCompilerExtensionVersion composeCompiler = "1.4.4" @@ -48,6 +48,7 @@ androidx-work-runtime-ktx = { module = "androidx.work:work-runtime-ktx", version build-agp = { module = "com.android.tools.build:gradle", version.ref = "agp" } build-cachefix = "org.gradle.android.cache-fix:org.gradle.android.cache-fix.gradle.plugin:2.7.1" build-kotlin-gradle = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" } +build-r8 = "com.android.tools:r8:8.2.8-dev" build-semver = "com.vdurmont:semver4j:3.1.0" build-sentry = "io.sentry.android.gradle:io.sentry.android.gradle.gradle.plugin:3.7.0" build-spotless = "com.diffplug.spotless:spotless-plugin-gradle:6.19.0" diff --git a/settings.gradle.kts b/settings.gradle.kts index 707da83d..76db08b5 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -13,7 +13,7 @@ pluginManagement { filter { includeGroup("androidx.databinding") includeGroup("com.android") - includeGroup("com.android.tools") + includeModule("com.android.test", "com.android.test.gradle.plugin") includeGroup("com.android.tools.analytics-library") includeGroup("com.android.tools.build") includeGroup("com.android.tools.build.jetifier") @@ -23,7 +23,15 @@ pluginManagement { includeGroup("com.android.tools.lint") includeGroup("com.android.tools.utp") includeGroup("com.google.testing.platform") - includeModule("com.android.test", "com.android.test.gradle.plugin") + includeModule("com.android.tools", "annotations") + includeModule("com.android.tools", "common") + includeModule("com.android.tools", "desugar_jdk_libs") + includeModule("com.android.tools", "desugar_jdk_libs_configuration") + includeModule("com.android.tools", "dvlib") + includeModule("com.android.tools", "play-sdk-proto") + includeModule("com.android.tools", "repository") + includeModule("com.android.tools", "sdklib") + includeModule("com.android.tools", "sdk-common") } } exclusiveContent { @@ -40,6 +48,10 @@ pluginManagement { forRepository { maven("https://oss.sonatype.org/content/repositories/snapshots/") } filter { includeGroup("dev.msfjarvis.whetstone") } } + exclusiveContent { + forRepository { maven("https://storage.googleapis.com/r8-releases/raw") } + filter { includeModule("com.android.tools", "r8") } + } includeBuild("build-logic") mavenCentral() }