diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index 5a82ae72844e..750b98aa6740 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -33,7 +33,7 @@ android { compileSdk = Versions.Android.compileSdkVersion defaultConfig { - val localProperties = gradleLocalProperties(rootProject.projectDir) + val localProperties = gradleLocalProperties(rootProject.projectDir, providers) applicationId = "net.mullvad.mullvadvpn" minSdk = Versions.Android.minSdkVersion @@ -114,7 +114,7 @@ android { sourceSets { getByName("main") { val changelogDir = - gradleLocalProperties(rootProject.projectDir) + gradleLocalProperties(rootProject.projectDir, providers) .getOrDefault("OVERRIDE_CHANGELOG_DIR", defaultChangelogAssetsDirectory) assets.srcDirs(extraAssetsDirectory, changelogDir) @@ -181,13 +181,13 @@ android { applicationVariants.configureEach { val alwaysShowChangelog = - gradleLocalProperties(rootProject.projectDir).getProperty("ALWAYS_SHOW_CHANGELOG") + gradleLocalProperties(rootProject.projectDir, providers).getProperty("ALWAYS_SHOW_CHANGELOG") ?: "false" buildConfigField("boolean", "ALWAYS_SHOW_CHANGELOG", alwaysShowChangelog) val enableInAppVersionNotifications = - gradleLocalProperties(rootProject.projectDir) + gradleLocalProperties(rootProject.projectDir, providers) .getProperty("ENABLE_IN_APP_VERSION_NOTIFICATIONS") ?: "true" @@ -304,13 +304,6 @@ afterEvaluate { play { serviceAccountCredentials.set(file("play-api-key.json")) } -configurations.all { - resolutionStrategy { - // Hold back emoji2 since newer versions require api level 34 which is not yet stable. - force("androidx.emoji2:emoji2:1.3.0") - } -} - dependencies { implementation(project(Dependencies.Mullvad.vpnService)) implementation(project(Dependencies.Mullvad.tileService)) diff --git a/android/buildSrc/src/main/kotlin/Versions.kt b/android/buildSrc/src/main/kotlin/Versions.kt index 8076f2496aa6..606ed2e57547 100644 --- a/android/buildSrc/src/main/kotlin/Versions.kt +++ b/android/buildSrc/src/main/kotlin/Versions.kt @@ -1,17 +1,17 @@ object Versions { const val commonsValidator = "1.8.0" - const val jodaTime = "2.12.5" - const val junit = "5.10.0" + const val jodaTime = "2.12.7" + const val junit = "5.10.2" const val jvmTarget = "17" - const val konsist = "0.13.0" + const val konsist = "0.14.0" const val kotlin = "1.9.22" const val kotlinCompilerExtensionVersion = "1.5.10" - const val kotlinx = "1.7.3" - const val leakCanary = "2.12" - const val mockk = "1.13.8" + const val kotlinx = "1.8.0" + const val leakCanary = "2.13" + const val mockk = "1.13.10" const val mockWebserver = "4.12.0" const val turbine = "1.0.0" - const val billingClient = "6.0.1" + const val billingClient = "6.2.0" object Android { const val compileSdkVersion = 34 @@ -26,7 +26,7 @@ object Versions { const val coreKtx = "1.12.0" const val espresso = "3.5.1" const val lifecycle = "2.7.0" - const val fragment = "1.6.1" + const val fragment = "1.6.2" const val test = "1.5.0" const val testMonitor = "1.6.1" const val testOrchestrator = "1.4.2" @@ -35,25 +35,25 @@ object Versions { } object Compose { - const val destinations = "1.10.1" - const val base = "1.6.2" + const val destinations = "1.10.2" + const val base = "1.6.3" const val constrainLayout = "1.0.1" const val foundation = base - const val material3 = "1.2.0" + const val material3 = "1.2.1" } object Plugin { // The androidAapt plugin version must be in sync with the android plugin version. // Required for Gradle metadata verification to work properly, see: // https://github.com/gradle/gradle/issues/19228 - const val android = "8.2.1" - const val androidAapt = "$android-10154469" - const val playPublisher = "3.8.4" - const val dependencyCheck = "8.3.1" - const val detekt = "1.23.4" - const val gradleVersions = "0.47.0" + const val android = "8.3.0" + const val androidAapt = "$android-10880808" + const val playPublisher = "3.9.0" + const val dependencyCheck = "9.0.9" + const val detekt = "1.23.5" + const val gradleVersions = "0.51.0" const val junit5 = "1.10.0.0" - const val ktfmt = "0.16.0" + const val ktfmt = "0.17.0" // Ksp version is linked with kotlin version, find matching release here: // https://github.com/google/ksp/releases const val ksp = "${kotlin}-1.0.17" diff --git a/android/config/dependency-check-suppression.xml b/android/config/dependency-check-suppression.xml index c7ec54a5e86d..b8712349edc7 100644 --- a/android/config/dependency-check-suppression.xml +++ b/android/config/dependency-check-suppression.xml @@ -60,4 +60,12 @@ ^pkg:maven/com\.google\.devtools\.ksp/symbol\-processing.*@.*$ CVE-2018-1000840 + + + ^pkg:maven/androidx\.test\.services/storage@.*$ + CVE-2014-9152 + diff --git a/android/gradle.properties b/android/gradle.properties index 912e0912ff83..74c277e3a155 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -3,4 +3,3 @@ android.nonTransitiveRClass=false android.useAndroidX=true kotlin.code.style=official org.gradle.jvmargs=-Xmx8192M -Dkotlin.daemon.jvm.options\="-Xmx8192M" -android.experimental.lint.version=8.3.0-beta02 diff --git a/android/gradle/verification-metadata.xml b/android/gradle/verification-metadata.xml index d214b64f7f62..13a615352c3b 100644 --- a/android/gradle/verification-metadata.xml +++ b/android/gradle/verification-metadata.xml @@ -15,7 +15,7 @@ - Comments after the verification-metadata opening tag will automatically be removed by gradle when generating components. --> - + true false @@ -32,6 +32,14 @@ + + + + + + + + @@ -281,11 +289,11 @@ - - - + + + - + @@ -297,12 +305,12 @@ - - - + + + - + @@ -318,11 +326,11 @@ - - - + + + - + @@ -334,12 +342,12 @@ - - - + + + - + @@ -347,20 +355,20 @@ - - + + - - + + - - + + - - + + @@ -379,11 +387,11 @@ - - - + + + - + @@ -395,20 +403,20 @@ - - - + + + - + - - - + + + - - + + @@ -424,11 +432,11 @@ - - - + + + - + @@ -440,20 +448,20 @@ - - - + + + - + - - + + - - + + @@ -540,28 +548,28 @@ - - - + + + - + - - - + + + - + - - - + + + - - + + @@ -579,76 +587,76 @@ - - - + + + - + - - - + + + - + - - - + + + - - + + - - - + + + - + - - - + + + - + - - + + - - + + - - - + + + - + - - - + + + - + - - + + - - + + @@ -656,28 +664,28 @@ - - - + + + - + - - - + + + - + - - + + - - + + @@ -685,62 +693,62 @@ - - - + + + - + - - - + + + - + - - + + - - + + - - - + + + - - - + + + - + - - - + + + - - - + + + - + - - - + + + - - + + @@ -753,100 +761,100 @@ - - - + + + - + - - - + + + - + - - + + - - + + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - - + + - - + + - - + + - - + + - - - + + + - + - - - + + + - + - - + + - - + + @@ -854,28 +862,28 @@ - - - + + + - + - - - + + + - + - - + + - - + + @@ -883,28 +891,28 @@ - - - + + + - + - - - + + + - + - - + + - - + + @@ -944,6 +952,11 @@ + + + + + @@ -1004,14 +1017,14 @@ - - + + - - - + + + @@ -1051,6 +1064,11 @@ + + + + + @@ -1059,14 +1077,6 @@ - - - - - - - - @@ -1075,14 +1085,6 @@ - - - - - - - - @@ -1091,14 +1093,6 @@ - - - - - - - - @@ -1107,14 +1101,6 @@ - - - - - - - - @@ -1232,6 +1218,9 @@ + + + @@ -1329,6 +1318,14 @@ + + + + + + + + @@ -1403,6 +1400,14 @@ + + + + + + + + @@ -1472,6 +1477,14 @@ + + + + + + + + @@ -1566,6 +1579,9 @@ + + + @@ -1716,6 +1732,11 @@ + + + + + @@ -1758,251 +1779,182 @@ - - + + - - + + - - - + + + - - - + + + - - + + - - + + - - - - - - - - + + + - - - - - - - + + - - - - - - - + + - - - - - - - + + - - - - - - - + + - - - - - - - + + - - - - - - - - + + + - - + + - - - - - - - + + - - - - - - - + + - - - + + + - - + + - - + + - - - + + + - - + + - - - + + + - - + + - - - - - - - - - - + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - - - - - - - - - - - - - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + @@ -2026,214 +1978,199 @@ - - - - - - - + + - - - + + + - - + + - - + + - - + + - - - - - - - + + - - + + - - + + - - - + + + - - + + - - - - - - - + + - - - - - - - + + - - - + + + - - + + - - - + + + - - - + + + - - + + - - - + + + - - - + + + - - + + - - - + + + - - - + + + - - + + - - - + + + - - - + + + - - + + - - - + + + - - - + + + - - + + - - - + + + - - - + + + - - + + - - - + + + - - - + + + - - + + - - - + + + - - - + + + - - + + - - - + + + - - - + + + + + + - - + + + + - - - + + + @@ -2257,65 +2194,73 @@ - - - + + + + + + + + + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + @@ -2328,36 +2273,36 @@ - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + @@ -2385,34 +2330,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + @@ -2425,11 +2395,6 @@ - - - - - @@ -2479,16 +2444,16 @@ - - - - - + + + + + @@ -2519,11 +2484,6 @@ - - - - - @@ -2534,6 +2494,14 @@ + + + + + + + + @@ -2544,24 +2512,19 @@ - - - + + + - - - + + + - - - - - - - - + + + @@ -2579,49 +2542,44 @@ - - - - - - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + @@ -2649,12 +2607,12 @@ - - - + + + - - + + @@ -2670,12 +2628,17 @@ - - - + + + + + + - - + + + + @@ -2701,124 +2664,124 @@ - - + + - - + + - - - + + + - - + + - - + + - - + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + @@ -2910,11 +2873,6 @@ - - - - - @@ -2950,9 +2908,9 @@ - - - + + + @@ -3039,260 +2997,271 @@ - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + + + + + + @@ -3359,155 +3328,155 @@ - - - + + + - + - - - + + + - + - - - + + + - - + + - - - + + + - + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - + - - - + + + - - + + - - - + + + - + - - - + + + - - + + - - - + + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + @@ -3520,12 +3489,12 @@ - - - + + + - - + + @@ -3533,6 +3502,11 @@ + + + + + @@ -3568,9 +3542,9 @@ - - - + + + @@ -3628,34 +3602,34 @@ - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + @@ -3678,6 +3652,21 @@ + + + + + + + + + + + + + + + @@ -3741,14 +3730,6 @@ - - - - - - - - @@ -3757,14 +3738,22 @@ + + + + + + + + - - - + + + @@ -3792,12 +3781,12 @@ - - - + + + - - + + @@ -3851,9 +3840,9 @@ - - - + + + @@ -3866,17 +3855,22 @@ - - - + + + + + + - - - + + + - - + + + + @@ -3884,24 +3878,29 @@ + + + + + + + + + + - - - - - - - - + + + @@ -3909,9 +3908,9 @@ - - - + + + @@ -3919,9 +3918,9 @@ - - - + + + @@ -3929,9 +3928,9 @@ - - - + + + @@ -3939,19 +3938,14 @@ - - - - - - - - + + + @@ -3959,12 +3953,12 @@ - - - + + + - - + + @@ -3975,9 +3969,9 @@ - - - + + + @@ -3985,15 +3979,15 @@ - - - + + + - - + + - - + + @@ -4004,12 +3998,12 @@ - - - + + + - - + + @@ -4020,9 +4014,9 @@ - - - + + + @@ -4030,12 +4024,12 @@ - - - + + + - - + + @@ -4046,9 +4040,9 @@ - - - + + + @@ -4056,9 +4050,9 @@ - - - + + + @@ -4066,9 +4060,9 @@ - - - + + + @@ -4076,9 +4070,9 @@ - - - + + + @@ -4096,9 +4090,9 @@ - - - + + + @@ -4111,11 +4105,6 @@ - - - - - @@ -4126,27 +4115,22 @@ - - - - - - - - + + + - - + + - - - + + + @@ -4154,14 +4138,9 @@ - - - - - - - - + + + @@ -4169,9 +4148,14 @@ - - - + + + + + + + + @@ -4179,9 +4163,9 @@ - - - + + + @@ -4189,9 +4173,9 @@ - - - + + + @@ -4199,9 +4183,9 @@ - - - + + + @@ -4224,12 +4208,10 @@ - - - - - + + + @@ -4238,9 +4220,6 @@ - - - @@ -4256,6 +4235,14 @@ + + + + + + + + @@ -4271,9 +4258,9 @@ - - - + + + @@ -4286,6 +4273,16 @@ + + + + + + + + + + @@ -4331,6 +4328,16 @@ + + + + + + + + + + @@ -4371,6 +4378,11 @@ + + + + + @@ -4423,9 +4435,9 @@ - - - + + + @@ -4433,9 +4445,9 @@ - - - + + + @@ -4443,9 +4455,9 @@ - - - + + + @@ -4469,12 +4481,12 @@ - - - + + + - - + + @@ -4509,12 +4521,12 @@ - - - + + + - - + + @@ -4530,9 +4542,9 @@ - - - + + + @@ -4543,12 +4555,12 @@ - - - + + + - - + + @@ -4567,12 +4579,12 @@ - - - + + + - - + + @@ -4583,12 +4595,12 @@ - - - + + + - - + + @@ -4596,12 +4608,12 @@ - - - + + + - - + + @@ -4609,20 +4621,20 @@ - - - + + + - - + + - - - + + + - - + + @@ -4672,9 +4684,9 @@ - - - + + + @@ -4687,9 +4699,9 @@ - - - + + + @@ -4697,26 +4709,11 @@ - - - - - - - - - - - - - - - @@ -4732,12 +4729,12 @@ - - - + + + - - + + @@ -4745,20 +4742,20 @@ - - - + + + - - + + - - - + + + - - + + @@ -4766,12 +4763,12 @@ - - - + + + - - + + @@ -4782,51 +4779,79 @@ - - - + + + - - + + - - - + + + + + + + + - - - + + + + + + + + + + + + + + + + - - - - - - + + + + + + + + + + + + + + + + @@ -4845,34 +4870,19 @@ - - - - - - - - - - - - - - - - - - + + + @@ -4880,32 +4890,32 @@ - - - + + + - - - + + + - - - + + + - - + + - - - + + + - - - + + + @@ -4953,29 +4963,14 @@ - - - - - - - - - - - - - - - - - - + + + - - - + + + diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index e6919610b914..94abb13345c0 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -2,6 +2,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.2.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip # Retrieved from: https://gradle.org/release-checksums/ -distributionSha256Sum=03ec176d388f2aa99defcadc3ac6adf8dd2bce5145a129659537c0874dea5ad1 +distributionSha256Sum=9631d53cf3e74bfa726893aee1f8994fee4e060c401335946dba2156f440f24c diff --git a/android/lib/theme/build.gradle.kts b/android/lib/theme/build.gradle.kts index 687184c5c0ac..dbf80a3b9820 100644 --- a/android/lib/theme/build.gradle.kts +++ b/android/lib/theme/build.gradle.kts @@ -27,13 +27,6 @@ android { } } -configurations.all { - resolutionStrategy { - // Hold back emoji2 since newer versions require api level 34 which is not yet stable. - force("androidx.emoji2:emoji2:1.3.0") - } -} - dependencies { implementation(Dependencies.Compose.material3) implementation(Dependencies.Compose.ui) diff --git a/android/test/arch/src/test/kotlin/net/mullvad/mullvadvpn/test/arch/classes/DataClassTest.kt b/android/test/arch/src/test/kotlin/net/mullvad/mullvadvpn/test/arch/classes/DataClassTest.kt index e1162e11d369..1732fb48d657 100644 --- a/android/test/arch/src/test/kotlin/net/mullvad/mullvadvpn/test/arch/classes/DataClassTest.kt +++ b/android/test/arch/src/test/kotlin/net/mullvad/mullvadvpn/test/arch/classes/DataClassTest.kt @@ -12,6 +12,6 @@ class DataClassTest { Konsist.scopeFromProject() .classes(includeNested = true) .withDataModifier() - .properties(includeNested = false, includeLocal = false) + .properties(includeNested = false) .assertFalse { it.hasVarModifier } } diff --git a/android/test/arch/src/test/kotlin/net/mullvad/mullvadvpn/test/arch/classes/ValueClassTest.kt b/android/test/arch/src/test/kotlin/net/mullvad/mullvadvpn/test/arch/classes/ValueClassTest.kt index 2b45d4481618..737a639b60f7 100644 --- a/android/test/arch/src/test/kotlin/net/mullvad/mullvadvpn/test/arch/classes/ValueClassTest.kt +++ b/android/test/arch/src/test/kotlin/net/mullvad/mullvadvpn/test/arch/classes/ValueClassTest.kt @@ -9,7 +9,7 @@ class ValueClassTest { @Test fun `ensure value classes property is named value`() { Konsist.scopeFromProject().classes(includeNested = true).withValueModifier().assertTrue { - it.properties(includeNested = false, includeLocal = false).firstOrNull { property -> + it.properties(includeNested = false).firstOrNull { property -> property.name == "value" } != null } diff --git a/android/test/e2e/build.gradle.kts b/android/test/e2e/build.gradle.kts index 7d9a78cda6ea..161e73b510f9 100644 --- a/android/test/e2e/build.gradle.kts +++ b/android/test/e2e/build.gradle.kts @@ -33,7 +33,7 @@ android { fun MutableMap.addOptionalPropertyAsArgument(name: String) { val value = rootProject.properties.getOrDefault(name, null) as? String - ?: gradleLocalProperties(rootProject.projectDir).getProperty(name) + ?: gradleLocalProperties(rootProject.projectDir, providers).getProperty(name) if (value != null) { put(name, value) diff --git a/android/test/test-suppression.xml b/android/test/test-suppression.xml index f92e67c0dbce..5932bda92e90 100644 --- a/android/test/test-suppression.xml +++ b/android/test/test-suppression.xml @@ -110,4 +110,12 @@ ^pkg:maven/com\.squareup\.okhttp3/.*@.*$ CVE-2023-3782 + + + ^pkg:maven/androidx\.test\.services/storage@.*$ + CVE-2014-9152 +