diff --git a/.github/workflows/develop.yaml b/.github/workflows/develop.yaml index 99703bce..9f87021f 100644 --- a/.github/workflows/develop.yaml +++ b/.github/workflows/develop.yaml @@ -186,7 +186,7 @@ jobs: # Tests - name: Compile Unit Tests - run: "./gradlew compileDebugUnitTestSources compileReleaseUnitTestSources" + run: "./gradlew compileDebugUnitTestSources" working-directory: mobile if: "${{ env.BUILD_MOBILE == 'true' }}" - name: Lint diff --git a/.github/workflows/verifyPr.yaml b/.github/workflows/verifyPr.yaml index 06b0577e..9ab74211 100644 --- a/.github/workflows/verifyPr.yaml +++ b/.github/workflows/verifyPr.yaml @@ -64,7 +64,7 @@ jobs: # Tests - name: Compile Unit Tests - run: "./gradlew compileDebugUnitTestSources compileReleaseUnitTestSources" + run: "./gradlew compileDebugUnitTestSources" working-directory: mobile - name: Lint run: "./gradlew lintRelease runDebugDetekt assertModuleGraph buildHealth detectTooManyFiles :bucketsync:data:verifyDebugDatabaseMigration reportMerge --continue" diff --git a/mobile/app/build.gradle.kts b/mobile/app/build.gradle.kts index 77a1d55f..867bb33f 100644 --- a/mobile/app/build.gradle.kts +++ b/mobile/app/build.gradle.kts @@ -61,10 +61,11 @@ android { } } - applicationVariants.all { - outputs.all { - val output = this as com.android.build.gradle.internal.api.ApkVariantOutputImpl - output.outputFileName = "notificationcenter-mobile.apk" + androidComponents.apply { + onVariants { variant -> + variant.outputs.forEach { output -> + output.outputFileName.set("notificationcenter-mobile.apk") + } } } } diff --git a/mobile/buildSrc/src/main/kotlin/android-module-commons.gradle.kts b/mobile/buildSrc/src/main/kotlin/android-module-commons.gradle.kts index d935ffa4..2c7d0cf7 100644 --- a/mobile/buildSrc/src/main/kotlin/android-module-commons.gradle.kts +++ b/mobile/buildSrc/src/main/kotlin/android-module-commons.gradle.kts @@ -4,15 +4,13 @@ import com.android.build.gradle.tasks.asJavaVersion import dev.detekt.gradle.extensions.DetektExtension import jacoco.setupJacocoMergingAndroid import org.gradle.accessors.dm.LibrariesForLibs -import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension +import org.jetbrains.kotlin.gradle.dsl.KotlinAndroidProjectExtension import util.commonAndroid import util.commonAndroidComponents val libs = the() plugins { - id("org.jetbrains.kotlin.android") - id("all-modules-commons") id("org.gradle.android.cache-fix") } @@ -28,20 +26,20 @@ commonAndroid { compileSdk = 36 - compileOptions { + compileOptions.apply { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 isCoreLibraryDesugaringEnabled = true } - defaultConfig { + defaultConfig.apply { minSdk = 24 testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } - testOptions { + testOptions.apply { unitTests.all { it.useJUnitPlatform() @@ -55,13 +53,13 @@ commonAndroid { } } - packaging { + packaging.apply { resources { excludes += "/META-INF/{AL2.0,LGPL2.1}" } } - buildFeatures { + buildFeatures.apply { buildConfig = false resValues = false shaders = false @@ -72,18 +70,18 @@ commonAndroid { androidResources.enable = false } - compileOptions { + compileOptions.apply { // Android still creates java tasks, even with 100% Kotlin. // Ensure that target compatiblity is equal to kotlin's jvmToolchain lateinit var javaVersion: JavaVersion - the().jvmToolchain { javaVersion = this.languageVersion.get().asJavaVersion() } + project.the().jvmToolchain { javaVersion = this.languageVersion.get().asJavaVersion() } targetCompatibility = javaVersion } - buildTypes { - debug { - testCoverage { + buildTypes.apply { + getByName("debug") { + testCoverage.apply { jacocoVersion = libs.versions.jacoco.get() } diff --git a/mobile/buildSrc/src/main/kotlin/checks.gradle.kts b/mobile/buildSrc/src/main/kotlin/checks.gradle.kts index 8996c99e..b7b402a6 100644 --- a/mobile/buildSrc/src/main/kotlin/checks.gradle.kts +++ b/mobile/buildSrc/src/main/kotlin/checks.gradle.kts @@ -17,7 +17,7 @@ apply(plugin = "dev.detekt") if (isAndroidProject()) { commonAndroid { - lint { + lint.apply { lintConfig = file("$rootDir/config/android-lint.xml") abortOnError = true diff --git a/mobile/buildSrc/src/main/kotlin/util/Android.kt b/mobile/buildSrc/src/main/kotlin/util/Android.kt index bdaa6f41..2b65122b 100644 --- a/mobile/buildSrc/src/main/kotlin/util/Android.kt +++ b/mobile/buildSrc/src/main/kotlin/util/Android.kt @@ -1,16 +1,9 @@ package util -import com.android.build.api.dsl.AndroidResources -import com.android.build.api.dsl.BuildFeatures -import com.android.build.api.dsl.BuildType import com.android.build.api.dsl.CommonExtension -import com.android.build.api.dsl.DefaultConfig -import com.android.build.api.dsl.Installation -import com.android.build.api.dsl.ProductFlavor import com.android.build.api.variant.AndroidComponentsExtension import com.android.build.api.variant.Variant import com.android.build.api.variant.VariantBuilder -import com.android.build.gradle.internal.utils.KOTLIN_ANDROID_PLUGIN_ID import org.gradle.api.Action import org.gradle.api.Project @@ -18,22 +11,13 @@ import org.gradle.api.Project * android {} block that can be used without applying specific android plugin */ fun Project.commonAndroid( - block: Action< - CommonExtension< - BuildFeatures, - BuildType, - DefaultConfig, - ProductFlavor, - AndroidResources, - Installation - > - >, + block: CommonExtension.() -> Unit, ) { (this as org.gradle.api.plugins.ExtensionAware).extensions.configure("android", block) } fun Project.isAndroidProject(): Boolean { - return pluginManager.hasPlugin(KOTLIN_ANDROID_PLUGIN_ID) + return pluginManager.hasPlugin("com.android.base") } /** diff --git a/mobile/config/android-lint.xml b/mobile/config/android-lint.xml index fddd7940..fa57398d 100644 --- a/mobile/config/android-lint.xml +++ b/mobile/config/android-lint.xml @@ -42,4 +42,7 @@ Ignore unknown issue id to allow us to configure issues in this file that + + + diff --git a/mobile/config/libs.toml b/mobile/config/libs.toml index ee656f81..8ec504b2 100644 --- a/mobile/config/libs.toml +++ b/mobile/config/libs.toml @@ -3,7 +3,7 @@ accompanist = "0.37.3" android-securityLints = "1.0.4" # See https://developer.android.com/jetpack/androidx/releases/compose-kotlin androidGradleCacheFix = "3.0.3" -androidGradlePlugin = "8.13.2" +androidGradlePlugin = "9.3.0" androidx-activity-compose = "1.13.0" androidx-compose-material3 = "1.4.0" androidx-compose-runtime = "1.11.3" @@ -49,7 +49,7 @@ sqldelight = "2.3.2" tinylog = "2.7.0" turbine = "1.2.1" unmock-androidJar = "16-robolectric-13921718" -unmock-plugin = "0.9.0" +unmock-plugin = "0.11.0" versionCatalogUpdate = "1.1.0" [libraries]