From d3db3f239369969d35c01bba9c583ca3132ceedc Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 21 Jul 2026 18:48:58 +0000 Subject: [PATCH 1/5] chore: update dependency com.android.tools.build:gradle to v9 --- mobile/config/libs.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mobile/config/libs.toml b/mobile/config/libs.toml index ee656f8..33f5370 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" From dac94c541b97f03f09ad54a6ba2413b7f962b237 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matej=20Drobni=C4=8D?= Date: Wed, 22 Jul 2026 09:29:18 +0200 Subject: [PATCH 2/5] build: update configs for AGP 9 --- mobile/app/build.gradle.kts | 12 +++++----- .../kotlin/android-module-commons.gradle.kts | 24 +++++++++---------- .../src/main/kotlin/checks.gradle.kts | 2 +- .../buildSrc/src/main/kotlin/util/Android.kt | 20 ++-------------- mobile/config/libs.toml | 2 +- 5 files changed, 21 insertions(+), 39 deletions(-) diff --git a/mobile/app/build.gradle.kts b/mobile/app/build.gradle.kts index 77a1d55..98b8038 100644 --- a/mobile/app/build.gradle.kts +++ b/mobile/app/build.gradle.kts @@ -61,12 +61,12 @@ android { } } - applicationVariants.all { - outputs.all { - val output = this as com.android.build.gradle.internal.api.ApkVariantOutputImpl - output.outputFileName = "notificationcenter-mobile.apk" - } - } + // applicationVariants.all { + // outputs.all { + // val output = this as com.android.build.gradle.internal.api.ApkVariantOutputImpl + // output.outputFileName = "notificationcenter-mobile.apk" + // } + // } } afterEvaluate { 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 d935ffa..2c7d0cf 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 8996c99..b7b402a 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 bdaa6f4..2b65122 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/libs.toml b/mobile/config/libs.toml index 33f5370..8ec504b 100644 --- a/mobile/config/libs.toml +++ b/mobile/config/libs.toml @@ -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] From 57fd95586be3bef43236daabb43719c76d86c567 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matej=20Drobni=C4=8D?= Date: Wed, 22 Jul 2026 10:20:16 +0200 Subject: [PATCH 3/5] ci: disable release tests they are not there anymore with the AGP 9 --- .github/workflows/develop.yaml | 2 +- .github/workflows/verifyPr.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/develop.yaml b/.github/workflows/develop.yaml index 99703bc..9f87021 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 06b0577..9ab7421 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" From b5ab41b8b7c6df27545937caa8c5d4440cf4beec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matej=20Drobni=C4=8D?= Date: Wed, 22 Jul 2026 10:56:11 +0200 Subject: [PATCH 4/5] build: fix output file name declaration --- mobile/app/build.gradle.kts | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/mobile/app/build.gradle.kts b/mobile/app/build.gradle.kts index 98b8038..867bb33 100644 --- a/mobile/app/build.gradle.kts +++ b/mobile/app/build.gradle.kts @@ -61,12 +61,13 @@ 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") + } + } + } } afterEvaluate { From 249b7d4a6b1e6b7cafe444ed2741f52dc16773c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matej=20Drobni=C4=8D?= Date: Wed, 22 Jul 2026 09:55:10 +0200 Subject: [PATCH 5/5] build: suppress QueryPermissionNeeded lint check --- mobile/config/android-lint.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mobile/config/android-lint.xml b/mobile/config/android-lint.xml index fddd794..fa57398 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 + + +