diff --git a/WordPress/build.gradle b/WordPress/build.gradle index 175a865f6b33..f52cde4f419f 100644 --- a/WordPress/build.gradle +++ b/WordPress/build.gradle @@ -3,7 +3,6 @@ import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { alias(libs.plugins.android.application) - alias(libs.plugins.kotlin.android) alias(libs.plugins.kotlin.compose) alias(libs.plugins.kotlin.parcelize) alias(libs.plugins.kotlin.allopen) @@ -90,6 +89,10 @@ allOpen { annotation 'org.wordpress.android.testing.OpenClassAnnotation' } +base { + archivesName = "org.wordpress.android" +} + android { useLibrary 'android.test.runner' @@ -100,16 +103,16 @@ android { def versionProperties = loadPropertiesFromFile(file("${rootDir}/version.properties")) + compileSdk rootProject.compileSdkVersion + defaultConfig { applicationId "org.wordpress.android" - archivesBaseName = "$applicationId" versionName project.findProperty("prototypeBuildVersionName") ?: versionProperties.getProperty("versionName") versionCode versionProperties.getProperty("versionCode").toInteger() minSdkVersion rootProject.minSdkVersion targetSdkVersion rootProject.targetSdkVersion - compileSdk rootProject.compileSdkVersion testInstrumentationRunner 'org.wordpress.android.WordPressTestRunner' @@ -252,7 +255,7 @@ android { // Proguard is used to shrink our apk, and reduce the number of methods in our final apk, // but we don't obfuscate the bytecode. minifyEnabled true - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard.cfg' + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard.cfg' buildConfigField "boolean", "ENABLE_DEBUG_SETTINGS", "false" } @@ -599,14 +602,24 @@ tasks.register("printVersionName") { } } -tasks.register("printAllVersions") { - def versions = android.applicationVariants.collect { - [it.name, it.versionName, it.versionCode] +def allVariantVersions = [] + +androidComponents { + onVariants(selector().all()) { variant -> + variant.outputs.each { output -> + allVariantVersions.add([ + name: variant.name, + versionName: output.versionName, + versionCode: output.versionCode + ]) + } } +} +tasks.register("printAllVersions") { doLast { - versions.each { name, versionName, versionCode -> - println "$name: $versionName ($versionCode)" + allVariantVersions.each { data -> + println "${data.name}: ${data.versionName.get()} (${data.versionCode.get()})" } } } @@ -629,25 +642,36 @@ android { androidResources { generateLocaleConfig = true } +} - // Copy React Native JavaScript bundle and source map so they can be upload it to the Crash logging - // service during the build process. - applicationVariants.configureEach { variant -> - def variantAssets = variant.mergeAssetsProvider.get().outputDir.get() - - tasks.register("delete${variant.name.capitalize()}ReactNativeBundleSourceMap", Delete) { - delete(fileTree(dir: variantAssets, includes: ['**/*.bundle.map'])) +// Copy React Native JavaScript bundle and source map so they can be uploaded to the Crash logging +// service during the build process. +androidComponents { + onVariants(selector().all()) { variant -> + def capitalizedName = variant.name.capitalize() + def assetsDir = variant.artifacts.get( + com.android.build.api.artifact.SingleArtifact.ASSETS.INSTANCE + ) + + def deleteTask = tasks.register( + "delete${capitalizedName}ReactNativeBundleSourceMap", Delete + ) { + delete(fileTree(dir: assetsDir, includes: ['**/*.bundle.map'])) } - tasks.register("copy${variant.name.capitalize()}ReactNativeBundleSourceMap", Copy) { - from(variantAssets) - into("${buildDir}/react-native-bundle-source-map") + def copyTask = tasks.register( + "copy${capitalizedName}ReactNativeBundleSourceMap", Copy + ) { + from(assetsDir) + into(layout.buildDirectory.dir("react-native-bundle-source-map")) include("*.bundle", "*.bundle.map") - finalizedBy("delete${variant.name.capitalize()}ReactNativeBundleSourceMap") + finalizedBy(deleteTask) } - variant.mergeAssetsProvider.configure { - finalizedBy("copy${variant.name.capitalize()}ReactNativeBundleSourceMap") + afterEvaluate { + tasks.named("merge${capitalizedName}Assets").configure { + finalizedBy(copyTask) + } } } } diff --git a/build.gradle b/build.gradle index 8e252bffc3d4..535421a56291 100644 --- a/build.gradle +++ b/build.gradle @@ -14,13 +14,12 @@ plugins { alias(libs.plugins.android.library).apply(false) alias(libs.plugins.google.services).apply(false) alias(libs.plugins.kotlin.allopen).apply(false) - alias(libs.plugins.kotlin.android).apply(false) alias(libs.plugins.kotlin.compose).apply(false) alias(libs.plugins.kotlin.jvm).apply(false) alias(libs.plugins.kotlin.parcelize).apply(false) alias(libs.plugins.kotlin.serialization).apply(false) alias(libs.plugins.ksp).apply(false) - alias(libs.plugins.kapt).apply(false) + alias(libs.plugins.legacy.kapt).apply(false) alias(libs.plugins.room).apply(false) } @@ -98,7 +97,7 @@ allprojects { subprojects { plugins.withType(com.android.build.gradle.AppPlugin) { android { - lintOptions { + lint { warningsAsErrors = true checkDependencies true checkGeneratedSources = true @@ -114,7 +113,7 @@ subprojects { } plugins.withType(com.android.build.gradle.LibraryPlugin) { android { - lintOptions { + lint { checkDependencies false lintConfig file("${project.rootDir}/config/lint/lint.xml") } diff --git a/gradle.properties b/gradle.properties index 18fcd989917a..e01cf8d6db55 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,8 +4,6 @@ org.gradle.configureondemand=true org.gradle.caching=true org.gradle.configuration-cache=true -android.useAndroidX=true -android.enableJetifier=false android.nonTransitiveRClass=true android.nonFinalResIds=true android.enableR8.fullMode=false diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index d4a7e4070f6c..ff98e6de9dfe 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,5 +1,5 @@ [versions] -agp = '8.10.1' +agp = '9.0.1' airbnb-lottie = '6.7.1' android-desugar = '2.1.5' android-installreferrer = '2.2' @@ -56,9 +56,9 @@ dependency-analysis = '3.6.1' facebook-react = '0.73.3' facebook-shimmer = '0.5.0' fastlane-screengrab = '2.1.1' -fladle = '0.19.0' +fladle = '0.21.0' google-autoservice = '1.1.1' -google-dagger = '2.58' +google-dagger = '2.59.2' google-exoplayer = '2.13.3' google-firebase-bom = '34.10.0' google-firebase-iid = '21.1.0' @@ -281,10 +281,9 @@ detekt = { id = "io.gitlab.arturbosch.detekt", version.ref = "detekt" } fladle = { id = "com.osacky.fladle", version.ref = "fladle" } google-dagger-hilt = { id = "com.google.dagger.hilt.android", version.ref = "google-dagger" } google-services = { id = "com.google.gms.google-services", version.ref = "google-services" } -kapt = { id = "org.jetbrains.kotlin.kapt", version.ref = "kotlin-main" } kotlin-allopen = { id = "org.jetbrains.kotlin.plugin.allopen", version.ref = "kotlin-main" } -kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin-main" } kotlin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin-main" } +legacy-kapt = { id = "com.android.legacy-kapt", version.ref = "agp" } kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin-main" } kotlin-parcelize = { id = "org.jetbrains.kotlin.plugin.parcelize", version.ref = "kotlin-main" } kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin-main" } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index b8cea9f02a5b..6bf62392cf2d 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,7 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionSha256Sum=296742a352f0b20ec14b143fb684965ad66086c7810b7b255dee216670716175 -distributionUrl=https\://services.gradle.org/distributions/gradle-8.12.1-all.zip +distributionSha256Sum=b84e04fa845fecba48551f425957641074fcc00a88a84d2aae5808743b35fc85 +distributionUrl=https\://services.gradle.org/distributions/gradle-9.1.0-all.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/libs/annotations/build.gradle b/libs/annotations/build.gradle index d4a8488c3d99..3d90f22f47ce 100644 --- a/libs/annotations/build.gradle +++ b/libs/annotations/build.gradle @@ -5,7 +5,7 @@ plugins { alias(libs.plugins.dependency.analysis) } -kotlin { +java { sourceCompatibility = JvmTarget.fromTarget(libs.versions.java.get()).target targetCompatibility = JvmTarget.fromTarget(libs.versions.java.get()).target } diff --git a/libs/editor/build.gradle b/libs/editor/build.gradle index 741a84b0b39f..89c4c547820c 100644 --- a/libs/editor/build.gradle +++ b/libs/editor/build.gradle @@ -2,7 +2,6 @@ import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { alias(libs.plugins.android.library) - alias(libs.plugins.kotlin.android) alias(libs.plugins.kotlin.parcelize) alias(libs.plugins.kotlinx.kover) alias(libs.plugins.dependency.analysis) diff --git a/libs/fluxc/build.gradle b/libs/fluxc/build.gradle index bf279d3f5cea..bcbde42c88a9 100644 --- a/libs/fluxc/build.gradle +++ b/libs/fluxc/build.gradle @@ -3,9 +3,8 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { alias(libs.plugins.android.library) - alias(libs.plugins.kotlin.android) alias(libs.plugins.kotlin.parcelize) - alias(libs.plugins.kapt) + alias(libs.plugins.legacy.kapt) alias(libs.plugins.ksp) alias(libs.plugins.room) alias(libs.plugins.kotlinx.kover) diff --git a/libs/image-editor/build.gradle b/libs/image-editor/build.gradle index 9a81591dc3d0..87ad3e9ea4ae 100644 --- a/libs/image-editor/build.gradle +++ b/libs/image-editor/build.gradle @@ -2,7 +2,6 @@ import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { alias(libs.plugins.android.library) - alias(libs.plugins.kotlin.android) alias(libs.plugins.kotlin.parcelize) alias(libs.plugins.androidx.navigation.safeargs) alias(libs.plugins.kotlinx.kover) diff --git a/libs/login/build.gradle b/libs/login/build.gradle index d813a14c7c51..3bf7ac237029 100644 --- a/libs/login/build.gradle +++ b/libs/login/build.gradle @@ -2,7 +2,6 @@ import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { alias(libs.plugins.android.library) - alias(libs.plugins.kotlin.android) alias(libs.plugins.kotlinx.kover) alias(libs.plugins.ksp) alias(libs.plugins.dependency.analysis) diff --git a/libs/posttypes/build.gradle b/libs/posttypes/build.gradle index ec731c6e2b94..d3a52e5b820e 100644 --- a/libs/posttypes/build.gradle +++ b/libs/posttypes/build.gradle @@ -2,7 +2,6 @@ import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { alias(libs.plugins.android.library) - alias(libs.plugins.kotlin.android) alias(libs.plugins.kotlin.compose) alias(libs.plugins.kotlin.parcelize) alias(libs.plugins.google.dagger.hilt) diff --git a/libs/posttypes/src/main/AndroidManifest.xml b/libs/posttypes/src/main/AndroidManifest.xml index b69d73104e70..8a85733538f7 100644 --- a/libs/posttypes/src/main/AndroidManifest.xml +++ b/libs/posttypes/src/main/AndroidManifest.xml @@ -6,7 +6,6 @@