From 7803a3ebcabf99041df82b000b1580526385c20f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Feb 2026 04:45:48 +0000 Subject: [PATCH 01/12] Bump kotlin_version from 2.2.21 to 2.3.10 Bumps `kotlin_version` from 2.2.21 to 2.3.10. Updates `org.jetbrains.kotlin:kotlin-reflect` from 2.2.21 to 2.3.10 - [Release notes](https://github.com/JetBrains/kotlin/releases) - [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md) - [Commits](https://github.com/JetBrains/kotlin/compare/v2.2.21...v2.3.10) Updates `org.jetbrains.kotlin:kotlin-gradle-plugin` from 2.2.21 to 2.3.10 - [Release notes](https://github.com/JetBrains/kotlin/releases) - [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md) - [Commits](https://github.com/JetBrains/kotlin/compare/v2.2.21...v2.3.10) Updates `org.jetbrains.kotlin.android` from 2.2.21 to 2.3.10 - [Release notes](https://github.com/JetBrains/kotlin/releases) - [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md) - [Commits](https://github.com/JetBrains/kotlin/compare/v2.2.21...v2.3.10) Updates `org.jetbrains.kotlin.plugin.serialization` from 2.2.21 to 2.3.10 - [Release notes](https://github.com/JetBrains/kotlin/releases) - [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md) - [Commits](https://github.com/JetBrains/kotlin/compare/v2.2.21...v2.3.10) --- updated-dependencies: - dependency-name: org.jetbrains.kotlin:kotlin-reflect dependency-version: 2.3.10 dependency-type: direct:production update-type: version-update:semver-minor - dependency-name: org.jetbrains.kotlin:kotlin-gradle-plugin dependency-version: 2.3.10 dependency-type: direct:production update-type: version-update:semver-minor - dependency-name: org.jetbrains.kotlin.android dependency-version: 2.3.10 dependency-type: direct:production update-type: version-update:semver-minor - dependency-name: org.jetbrains.kotlin.plugin.serialization dependency-version: 2.3.10 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index f61c7da928..98a9f9d76d 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,5 +1,5 @@ [versions] -kotlin_version = "2.2.21" +kotlin_version = "2.3.10" kotlin_coroutine_version = "1.11.0" ksp_version = "2.3.5" kotlin_serialization_version = "1.11.0" From cbfe979bc809b6569d453ca46696512bcc4dcaa8 Mon Sep 17 00:00:00 2001 From: Melad Raouf Date: Tue, 10 Feb 2026 21:05:21 +0000 Subject: [PATCH 02/12] Update realm_version to 4.0.2 in libs.versions.toml --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 98a9f9d76d..34589ad157 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -81,7 +81,7 @@ uiAutomator_version = "2.3.0" jacoco_version = "0.8.14" sonar_plugin_version = "7.2.3.7755" -realm_version = "4.0.1" +realm_version = "4.0.2" protobuf_plugin_version = "0.10.0" deps_graph_version = "0.8.0" tink_version = "1.21.0" From a2f0389c8da62a795e90018b8d96f9ff168871ad Mon Sep 17 00:00:00 2001 From: Melad Raouf Date: Tue, 10 Feb 2026 21:49:24 +0000 Subject: [PATCH 03/12] Update dependencies and remove unused Kotlin Android plugin - Update `kotlin_serialization_version` to 1.10.0 - Update `android_gradlePlugin_version` to 9.0.0 - Update `hilt_version` to 2.59.1 - Update `play_publisher_version` to 4.0.0 - Remove `kotlin-android` plugin definition from `libs.versions.toml` --- build.gradle.kts | 1 - gradle/libs.versions.toml | 7 +++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index f4b7c81e2e..9b30094afd 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -3,7 +3,6 @@ plugins { alias(libs.plugins.android.application) apply false alias(libs.plugins.android.library) apply false alias(libs.plugins.android.test) apply false - alias(libs.plugins.kotlin.android) apply false alias(libs.plugins.kotlin.serialization) apply false alias(libs.plugins.ksp) apply false diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 34589ad157..ede7b0577e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -4,7 +4,7 @@ kotlin_coroutine_version = "1.11.0" ksp_version = "2.3.5" kotlin_serialization_version = "1.11.0" -android_gradlePlugin_version = "8.13.2" +android_gradlePlugin_version = "9.0.0" androidx_version = "1.7.0" androidx_core_version = "1.18.0" androidx_app_compat_version = "1.7.1" @@ -27,14 +27,14 @@ androidx_annotation_version = "1.10.0" androidx_arch_core_version = "2.2.0" material_version = "1.13.0" -hilt_version = "2.57.2" +hilt_version = "2.59.1" hilt_androidx_version = "1.3.0" play_base_services_version = "18.10.0" play_location_services_version = "21.3.0" play_integrity_version = "1.6.0" gsm_plugin_version = "4.4.4" -play_publisher_version = "3.13.0" +play_publisher_version = "4.0.0" play_barcode_version = "18.3.1" ml_entity_extraction_version = "16.0.1" @@ -269,7 +269,6 @@ plugin-room = { group = "androidx.room", name = "room-gradle-plugin", version.re android-application = { id = "com.android.application", version.ref = "android_gradlePlugin_version" } android-library = { id = "com.android.library", version.ref = "android_gradlePlugin_version" } android-test = { id = "com.android.test", version.ref = "android_gradlePlugin_version" } -kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin_version" } kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin_version" } ksp = { id = "com.google.devtools.ksp", version.ref = "ksp_version" } gms = { id = "com.google.gms.google-services", version.ref = "gsm_plugin_version" } From 910ca34d11cb2f5ce5db3487623971de560da1f2 Mon Sep 17 00:00:00 2001 From: Melad Raouf Date: Tue, 10 Feb 2026 21:49:56 +0000 Subject: [PATCH 04/12] Refactor Android build logic by splitting `configureKotlinAndroid` into specific application and library configuration functions. - Replace `CommonExtension` with `ApplicationExtension` and `LibraryExtension` in `KotlinAndroid.kt`. - Extract Kotlin compiler options configuration into a standalone `configureKotlinCompiler` function using `KotlinCompile` tasks. - Simplify plugin application in `AndroidApplicationConventionPlugin` and `AndroidLibraryConventionPlugin`. --- .../AndroidApplicationConventionPlugin.kt | 5 +- .../kotlin/AndroidLibraryConventionPlugin.kt | 5 +- .../src/main/kotlin/common/KotlinAndroid.kt | 60 +++++++++++-------- 3 files changed, 40 insertions(+), 30 deletions(-) diff --git a/build-logic/convention/src/main/kotlin/AndroidApplicationConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidApplicationConventionPlugin.kt index 88d8ff2cf2..3c73f14b4b 100644 --- a/build-logic/convention/src/main/kotlin/AndroidApplicationConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/AndroidApplicationConventionPlugin.kt @@ -1,7 +1,7 @@ import com.android.build.api.dsl.ApplicationExtension import common.BuildTypes import common.SdkVersions -import common.configureKotlinAndroid +import common.configureAndroidApplication import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.kotlin.dsl.apply @@ -23,7 +23,6 @@ class AndroidApplicationConventionPlugin : Plugin { with(pluginManager) { apply("com.android.application") - apply("org.jetbrains.kotlin.android") apply("simprints.library.hilt") apply("com.google.firebase.firebase-perf") @@ -34,7 +33,7 @@ class AndroidApplicationConventionPlugin : Plugin { } extensions.configure { - configureKotlinAndroid(this) + configureAndroidApplication(this) defaultConfig { targetSdk = SdkVersions.TARGET diff --git a/build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt index a14ac0f9e8..4211c11a6e 100644 --- a/build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt @@ -1,7 +1,7 @@ import com.android.build.api.dsl.LibraryExtension import common.BuildTypes +import common.configureAndroidLibrary import common.configureDebugModeBuildTypes -import common.configureKotlinAndroid import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.kotlin.dsl.configure @@ -13,13 +13,12 @@ class AndroidLibraryConventionPlugin : Plugin { with(target) { with(pluginManager) { apply("com.android.library") - apply("org.jetbrains.kotlin.android") apply("simprints.ci.jacoco") } extensions.configure { - configureKotlinAndroid(this) + configureAndroidLibrary(this) packaging { // remove mockk duplicated files diff --git a/build-logic/convention/src/main/kotlin/common/KotlinAndroid.kt b/build-logic/convention/src/main/kotlin/common/KotlinAndroid.kt index 32ed085fdc..4cae4e6d37 100644 --- a/build-logic/convention/src/main/kotlin/common/KotlinAndroid.kt +++ b/build-logic/convention/src/main/kotlin/common/KotlinAndroid.kt @@ -1,15 +1,26 @@ package common -import com.android.build.api.dsl.CommonExtension -import com.android.build.api.variant.AndroidComponentsExtension +import com.android.build.api.dsl.ApplicationExtension +import com.android.build.api.dsl.LibraryExtension import org.gradle.api.Project -import org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile -/** - * Configure base Kotlin with Android options - */ -internal fun Project.configureKotlinAndroid(commonExtension: CommonExtension<*, *, *, *, *, *>) { - commonExtension.apply { +internal fun Project.configureKotlinCompiler() { + tasks.withType(KotlinCompile::class.java).configureEach { + compilerOptions { + freeCompilerArgs.addAll( + "-Xnew-inference", + "-opt-in=kotlin.RequiresOptIn", + "-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi", + "-opt-in=kotlinx.coroutines.FlowPreview", + "-opt-in=kotlin.Experimental", + ) + } + } +} + +internal fun Project.configureAndroidApplication(extension: ApplicationExtension) { + extension.apply { compileSdk = SdkVersions.TARGET defaultConfig { @@ -20,23 +31,24 @@ internal fun Project.configureKotlinAndroid(commonExtension: CommonExtension<*, sourceCompatibility = SdkVersions.JAVA_TARGET targetCompatibility = SdkVersions.JAVA_TARGET } + } + + configureKotlinCompiler() +} + +internal fun Project.configureAndroidLibrary(extension: LibraryExtension) { + extension.apply { + compileSdk = SdkVersions.TARGET - extensions.getByType(AndroidComponentsExtension::class.java).onVariants { variant -> - afterEvaluate { - val variantName = variant.name.replaceFirstChar { it.uppercaseChar() } - val compileTaskName = "compile${variantName}Kotlin" - - tasks.named(compileTaskName, KotlinJvmCompile::class.java) { - compilerOptions.freeCompilerArgs.addAll( - "-Xnew-inference", - "-opt-in=kotlin.RequiresOptIn", - // Enable experimental coroutines APIs, including Flow - "-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi", - "-opt-in=kotlinx.coroutines.FlowPreview", - "-opt-in=kotlin.Experimental", - ) - } - } + defaultConfig { + minSdk = SdkVersions.MIN + } + + compileOptions { + sourceCompatibility = SdkVersions.JAVA_TARGET + targetCompatibility = SdkVersions.JAVA_TARGET } } + + configureKotlinCompiler() } From 92142c5ccb10b9840c448121e599faa9a19a66a4 Mon Sep 17 00:00:00 2001 From: Melad Raouf Date: Mon, 20 Apr 2026 21:33:04 +0100 Subject: [PATCH 05/12] Update dependencies and refactor WorkManager configuration - Bump Kotlin to 2.3.20, AGP to 9.1.1, and update various library versions (Firebase, Hilt, SQLCipher, etc.) - Refactor `Application` to override `getWorkManagerConfiguration()` method - Add missing `androidx.core` and `work-runtime` dependencies to infra modules - Change `simface` dependency visibility from `api` to `implementation` - Remove redundant Kotlin Android plugin from `data-generator` module --- face/infra/simface/build.gradle.kts | 2 +- gradle/libs.versions.toml | 16 ++++++++-------- id/src/main/java/com/simprints/id/Application.kt | 9 ++++----- .../repository/build.gradle.kts | 1 + infra/logging/build.gradle.kts | 1 + testing/data-generator/build.gradle.kts | 1 - 6 files changed, 15 insertions(+), 15 deletions(-) diff --git a/face/infra/simface/build.gradle.kts b/face/infra/simface/build.gradle.kts index 0f351d9c64..24211c45ec 100644 --- a/face/infra/simface/build.gradle.kts +++ b/face/infra/simface/build.gradle.kts @@ -8,5 +8,5 @@ android { dependencies { implementation(project(":face:infra:base-bio-sdk")) - api(libs.simface) + implementation(libs.simface) } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index ede7b0577e..0214b26f68 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,10 +1,10 @@ [versions] -kotlin_version = "2.3.10" +kotlin_version = "2.3.20" kotlin_coroutine_version = "1.11.0" ksp_version = "2.3.5" kotlin_serialization_version = "1.11.0" -android_gradlePlugin_version = "9.0.0" +android_gradlePlugin_version = "9.1.1" androidx_version = "1.7.0" androidx_core_version = "1.18.0" androidx_app_compat_version = "1.7.1" @@ -27,7 +27,7 @@ androidx_annotation_version = "1.10.0" androidx_arch_core_version = "2.2.0" material_version = "1.13.0" -hilt_version = "2.59.1" +hilt_version = "2.59.2" hilt_androidx_version = "1.3.0" play_base_services_version = "18.10.0" @@ -43,22 +43,22 @@ firebase_auth_version = "24.0.1" firebase_storage_version = "22.0.1" firebase_crashlytics_version = "20.0.6" firebase_analytics_version = "23.2.0" -firebase_perf_version = "22.0.4" -firebase_crashlyticsPlugin_version = "3.0.6" +firebase_perf_version = "22.0.5" +firebase_crashlyticsPlugin_version = "3.0.7" firebase_perfPlugin_version = "2.0.2" retrofit_version = "3.0.0" okttp_version = "5.3.2" chuck_version = "4.3.1" -sqlCipher_version = "4.13.0" +sqlCipher_version = "4.14.1" fuzzywuzzy_version = "1.4.0" rootbeer_version = "0.1.2" commons_io_version = "2.21.0" kronos_version = "0.0.1-alpha11" protobuf_version = "4.34.1" circleImageView_version = "3.1.0" -kermit_version = "2.0.8" +kermit_version = "2.1.0" zip4j_version = "2.11.6" libsimprints_version = "2026.1.0" @@ -81,7 +81,7 @@ uiAutomator_version = "2.3.0" jacoco_version = "0.8.14" sonar_plugin_version = "7.2.3.7755" -realm_version = "4.0.2" +realm_version = "4.0.3" protobuf_plugin_version = "0.10.0" deps_graph_version = "0.8.0" tink_version = "1.21.0" diff --git a/id/src/main/java/com/simprints/id/Application.kt b/id/src/main/java/com/simprints/id/Application.kt index 691fa6ffe8..8c37db5fe3 100644 --- a/id/src/main/java/com/simprints/id/Application.kt +++ b/id/src/main/java/com/simprints/id/Application.kt @@ -72,11 +72,10 @@ open class Application : appScope.cancel() } - override val workManagerConfiguration: Configuration - get() = Configuration - .Builder() - .setWorkerFactory(workerFactory) - .build() + override fun getWorkManagerConfiguration(): Configuration = Configuration + .Builder() + .setWorkerFactory(workerFactory) + .build() open fun initApplication() { SimberBuilder.initialize(this) diff --git a/infra/enrolment-records/repository/build.gradle.kts b/infra/enrolment-records/repository/build.gradle.kts index a74d847f55..77e4f3a566 100644 --- a/infra/enrolment-records/repository/build.gradle.kts +++ b/infra/enrolment-records/repository/build.gradle.kts @@ -22,4 +22,5 @@ dependencies { implementation(libs.libsimprints) implementation(libs.testing.androidX.room) + implementation(libs.workManager.work) } diff --git a/infra/logging/build.gradle.kts b/infra/logging/build.gradle.kts index d51c4157e1..7de615662a 100644 --- a/infra/logging/build.gradle.kts +++ b/infra/logging/build.gradle.kts @@ -47,6 +47,7 @@ dependencies { exclude(group = "com.google.firebase", module = "protolite-well-known-types") } implementation(libs.kermit) + implementation(libs.androidX.core) implementation(libs.kermit.io) testImplementation(libs.testing.junit) diff --git a/testing/data-generator/build.gradle.kts b/testing/data-generator/build.gradle.kts index cfc32b8092..accafbb9fd 100644 --- a/testing/data-generator/build.gradle.kts +++ b/testing/data-generator/build.gradle.kts @@ -1,7 +1,6 @@ plugins { id("simprints.feature") id("kotlin-parcelize") - alias(libs.plugins.kotlin.android) } android { From 036f61dedcc5a33cbd7e2061c7b90a55016a0265 Mon Sep 17 00:00:00 2001 From: Melad Raouf Date: Sat, 25 Apr 2026 19:31:48 +0100 Subject: [PATCH 06/12] Rename roc-v3 module reference in libs.versions.toml --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 0214b26f68..285290c82f 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -198,7 +198,7 @@ simmatcher = { module = "com.simprints:libsimmatcher", version.ref = "simmatcher # roc v1 sdk hosted in https://github.com/Simprints/lib-roc-wrapper roc-v1 = { module = "com.simprints:rocwrapper", version.ref = "roc_wrapper_version" } # roc v3 sdk hosted in https://github.com/Simprints/lib-roc-wrapper-v3 -roc-v3 = { module = "com.simprints:rocwrapper-v3", version.ref = "roc_wrapper-v3_version" } +roc-v3 = { module = "com.simprints:roc-v3", version.ref = "roc_wrapper-v3_version" } # secugen sdk hosted in https://github.com/Simprints/secugen-wrapper secugen = { module = "com.simprints:secugenwrapper", version.ref = "secugen_version" } simface = { module = "com.simprints.biometrics:simface", version.ref = "simface" } From ca2cd54d021e24b363536ce9d2eb5d71cf0833a8 Mon Sep 17 00:00:00 2001 From: Melad Raouf Date: Sun, 31 May 2026 17:43:49 +0100 Subject: [PATCH 07/12] Update other dependency versions --- gradle/libs.versions.toml | 19 +++++++++---------- gradle/wrapper/gradle-wrapper.properties | 4 +++- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 285290c82f..43518d9e93 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,10 +1,10 @@ [versions] -kotlin_version = "2.3.20" +kotlin_version = "2.3.21" kotlin_coroutine_version = "1.11.0" ksp_version = "2.3.5" kotlin_serialization_version = "1.11.0" -android_gradlePlugin_version = "9.1.1" +android_gradlePlugin_version = "9.2.1" androidx_version = "1.7.0" androidx_core_version = "1.18.0" androidx_app_compat_version = "1.7.1" @@ -25,7 +25,7 @@ androidx_viewpager_version = "1.1.0" androidx_security_version = "1.1.0" androidx_annotation_version = "1.10.0" androidx_arch_core_version = "2.2.0" -material_version = "1.13.0" +material_version = "1.14.0" hilt_version = "2.59.2" hilt_androidx_version = "1.3.0" @@ -39,8 +39,7 @@ play_barcode_version = "18.3.1" ml_entity_extraction_version = "16.0.1" -firebase_auth_version = "24.0.1" -firebase_storage_version = "22.0.1" +firebase_auth_version = "24.1.0" firebase_crashlytics_version = "20.0.6" firebase_analytics_version = "23.2.0" firebase_perf_version = "22.0.5" @@ -51,12 +50,12 @@ retrofit_version = "3.0.0" okttp_version = "5.3.2" chuck_version = "4.3.1" -sqlCipher_version = "4.14.1" +sqlCipher_version = "4.16.0" fuzzywuzzy_version = "1.4.0" rootbeer_version = "0.1.2" -commons_io_version = "2.21.0" +commons_io_version = "2.22.0" kronos_version = "0.0.1-alpha11" -protobuf_version = "4.34.1" +protobuf_version = "4.35.0" circleImageView_version = "3.1.0" kermit_version = "2.1.0" zip4j_version = "2.11.6" @@ -72,7 +71,7 @@ junit_version = "4.13.2" junit_ext_version = "1.3.0" truth_version = "1.4.5" livedata_testing_version = "1.3.0" -mockk_version = "1.14.9" +mockk_version = "1.14.11" robolectric_version = "4.16.1" espresso_version = "3.7.0" espresso_accessibility_version = "4.1.1" @@ -80,7 +79,7 @@ barista_version = "4.3.0" uiAutomator_version = "2.3.0" jacoco_version = "0.8.14" -sonar_plugin_version = "7.2.3.7755" +sonar_plugin_version = "7.3.0.8198" realm_version = "4.0.3" protobuf_plugin_version = "0.10.0" deps_graph_version = "0.8.0" diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 78dfb562f5..e816efb2ac 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,8 @@ +#Sun May 31 16:43:21 BST 2026 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.1-bin.zip +distributionSha256Sum=2ab2958f2a1e51120c326cad6f385153bb11ee93b3c216c5fccebfdfbb7ec6cb +distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.1-bin.zip networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists From e76cf9ede16b3e0a7ddf8548ca011abc5fc6d611 Mon Sep 17 00:00:00 2001 From: Melad Raouf Date: Sun, 31 May 2026 17:44:27 +0100 Subject: [PATCH 08/12] Add simface dependency to bio-sdk-resolver build configuration --- face/infra/bio-sdk-resolver/build.gradle.kts | 1 + 1 file changed, 1 insertion(+) diff --git a/face/infra/bio-sdk-resolver/build.gradle.kts b/face/infra/bio-sdk-resolver/build.gradle.kts index 55f0b9b37f..191296e22c 100644 --- a/face/infra/bio-sdk-resolver/build.gradle.kts +++ b/face/infra/bio-sdk-resolver/build.gradle.kts @@ -11,4 +11,5 @@ dependencies { implementation(project(":face:infra:roc-v1")) api(project(":face:infra:roc-v3")) implementation(project(":face:infra:simface")) + implementation(libs.simface) } From 5724b82e63b0e06a9500f33ba8bbe46cb3ee5e33 Mon Sep 17 00:00:00 2001 From: Melad Raouf Date: Sun, 31 May 2026 17:44:41 +0100 Subject: [PATCH 09/12] Disable unique package name check to resolve build conflicts with TensorFlow libraries after AGP 9 upgrade --- gradle.properties | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/gradle.properties b/gradle.properties index f43e1cce8d..79bbc2572b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -17,3 +17,7 @@ org.gradle.daemon=true android.useAndroidX=true android.nonTransitiveRClass=true org.gradle.configuration-cache=true +# After agp 9 upgrade, the uniquePackageNames property is enabled by default, which causes the build to fail if there are duplicate package names in the project. Setting it to false allows the build to proceed even if there are duplicate package names. +# this should be removed after the duplicate tensor flow support package names are resolved. +# See this issue for more details:https://github.com/tensorflow/tensorflow/issues/109508 +android.uniquePackageNames=false From c77f8ca2b93ae192da16b004d3c5407dfd91b96a Mon Sep 17 00:00:00 2001 From: Melad Raouf Date: Sun, 31 May 2026 18:38:21 +0100 Subject: [PATCH 10/12] Replace kotlin.test.Test imports with org.junit.Test across multiple modules --- .../mappers/request/extractors/ActionRequestExtractorTest.kt | 2 +- .../troubleshooting/overview/usecase/ExportLogsUseCaseTest.kt | 2 +- .../test/java/com/simprints/core/tools/utils/MapUtilKtTest.kt | 2 +- .../RealmEnrolmentRecordLocalDataSourceIntegrationTest.kt | 4 ++-- .../records/room/store/migration/Migration1to2Test.kt | 2 +- .../models/samples/ApiEventSampleUpSyncRequestPayloadTest.kt | 2 +- .../event/usecases/TokenizeEventPayloadFieldsUseCaseTest.kt | 2 +- .../images/remote/signedurl/SignedUrlSampleUploaderTest.kt | 2 +- .../com/simprints/infra/logging/LogDirectoryProviderTest.kt | 2 +- 9 files changed, 10 insertions(+), 10 deletions(-) diff --git a/feature/client-api/src/test/java/com/simprints/feature/clientapi/mappers/request/extractors/ActionRequestExtractorTest.kt b/feature/client-api/src/test/java/com/simprints/feature/clientapi/mappers/request/extractors/ActionRequestExtractorTest.kt index 4b00f3f1b4..304c5c29c6 100644 --- a/feature/client-api/src/test/java/com/simprints/feature/clientapi/mappers/request/extractors/ActionRequestExtractorTest.kt +++ b/feature/client-api/src/test/java/com/simprints/feature/clientapi/mappers/request/extractors/ActionRequestExtractorTest.kt @@ -3,7 +3,7 @@ package com.simprints.feature.clientapi.mappers.request.extractors import com.google.common.truth.Truth.assertThat import com.simprints.libsimprints.Constants.SIMPRINTS_METADATA import com.simprints.libsimprints.Constants.SIMPRINTS_SUBJECT_AGE -import kotlin.test.Test +import org.junit.Test internal class ActionRequestExtractorTest { // Concrete subclass for testing diff --git a/feature/troubleshooting/src/test/java/com/simprints/feature/troubleshooting/overview/usecase/ExportLogsUseCaseTest.kt b/feature/troubleshooting/src/test/java/com/simprints/feature/troubleshooting/overview/usecase/ExportLogsUseCaseTest.kt index dd69b2b964..13b02c6f48 100644 --- a/feature/troubleshooting/src/test/java/com/simprints/feature/troubleshooting/overview/usecase/ExportLogsUseCaseTest.kt +++ b/feature/troubleshooting/src/test/java/com/simprints/feature/troubleshooting/overview/usecase/ExportLogsUseCaseTest.kt @@ -14,9 +14,9 @@ import kotlinx.coroutines.flow.toList import kotlinx.coroutines.test.runTest import org.junit.After import org.junit.Before +import org.junit.Test import java.io.File import java.text.SimpleDateFormat -import kotlin.test.Test class ExportLogsUseCaseTest { @MockK diff --git a/infra/core/src/test/java/com/simprints/core/tools/utils/MapUtilKtTest.kt b/infra/core/src/test/java/com/simprints/core/tools/utils/MapUtilKtTest.kt index 90539d004d..1f27035cb6 100644 --- a/infra/core/src/test/java/com/simprints/core/tools/utils/MapUtilKtTest.kt +++ b/infra/core/src/test/java/com/simprints/core/tools/utils/MapUtilKtTest.kt @@ -7,7 +7,7 @@ import kotlinx.serialization.json.add import kotlinx.serialization.json.buildJsonArray import kotlinx.serialization.json.buildJsonObject import kotlinx.serialization.json.put -import kotlin.test.Test +import org.junit.Test import kotlin.test.assertEquals class MapUtilKtTest { diff --git a/infra/enrolment-records/repository/src/androidTest/kotlin/com/simprints/infra/enrolment/records/repository/local/RealmEnrolmentRecordLocalDataSourceIntegrationTest.kt b/infra/enrolment-records/repository/src/androidTest/kotlin/com/simprints/infra/enrolment/records/repository/local/RealmEnrolmentRecordLocalDataSourceIntegrationTest.kt index f88b7489ab..6b9a7bd4ad 100644 --- a/infra/enrolment-records/repository/src/androidTest/kotlin/com/simprints/infra/enrolment/records/repository/local/RealmEnrolmentRecordLocalDataSourceIntegrationTest.kt +++ b/infra/enrolment-records/repository/src/androidTest/kotlin/com/simprints/infra/enrolment/records/repository/local/RealmEnrolmentRecordLocalDataSourceIntegrationTest.kt @@ -3,11 +3,11 @@ package com.simprints.infra.enrolment.records.repository.local import androidx.test.core.app.* import com.google.common.truth.Truth.* import com.simprints.core.domain.common.Modality +import com.simprints.core.domain.common.TemplateIdentifier import com.simprints.core.domain.externalcredential.ExternalCredential import com.simprints.core.domain.externalcredential.ExternalCredentialType import com.simprints.core.domain.reference.BiometricReference import com.simprints.core.domain.reference.BiometricTemplate -import com.simprints.core.domain.common.TemplateIdentifier import com.simprints.core.domain.tokenization.asTokenizableEncrypted import com.simprints.core.domain.tokenization.asTokenizableRaw import com.simprints.core.tools.time.TimeHelper @@ -36,8 +36,8 @@ import kotlinx.coroutines.test.runTest import org.junit.After import org.junit.Before import org.junit.Rule +import org.junit.Test import java.util.UUID -import kotlin.test.Test @HiltAndroidTest class RealmEnrolmentRecordLocalDataSourceIntegrationTest { diff --git a/infra/enrolment-records/room-store/src/test/java/com/simprints/infra/enrolment/records/room/store/migration/Migration1to2Test.kt b/infra/enrolment-records/room-store/src/test/java/com/simprints/infra/enrolment/records/room/store/migration/Migration1to2Test.kt index f59ef08f03..1a828c3b53 100644 --- a/infra/enrolment-records/room-store/src/test/java/com/simprints/infra/enrolment/records/room/store/migration/Migration1to2Test.kt +++ b/infra/enrolment-records/room-store/src/test/java/com/simprints/infra/enrolment/records/room/store/migration/Migration1to2Test.kt @@ -6,8 +6,8 @@ import androidx.test.platform.app.* import com.google.common.truth.Truth.* import com.simprints.infra.enrolment.records.room.store.SubjectsDatabase import org.junit.Rule +import org.junit.Test import org.junit.runner.RunWith -import kotlin.test.Test @RunWith(AndroidJUnit4::class) class Migration1to2Test { diff --git a/infra/event-sync/src/test/java/com/simprints/infra/eventsync/event/remote/models/samples/ApiEventSampleUpSyncRequestPayloadTest.kt b/infra/event-sync/src/test/java/com/simprints/infra/eventsync/event/remote/models/samples/ApiEventSampleUpSyncRequestPayloadTest.kt index 2ecba61b00..97145968ab 100644 --- a/infra/event-sync/src/test/java/com/simprints/infra/eventsync/event/remote/models/samples/ApiEventSampleUpSyncRequestPayloadTest.kt +++ b/infra/event-sync/src/test/java/com/simprints/infra/eventsync/event/remote/models/samples/ApiEventSampleUpSyncRequestPayloadTest.kt @@ -4,7 +4,7 @@ import com.google.common.truth.Truth.* import com.simprints.infra.config.store.models.TokenKeyType import com.simprints.infra.eventsync.event.remote.models.ApiEventSampleUpSyncRequestPayload import io.mockk.* -import kotlin.test.Test +import org.junit.Test class ApiEventSampleUpSyncRequestPayloadTest { @Test diff --git a/infra/event-sync/src/test/java/com/simprints/infra/eventsync/event/usecases/TokenizeEventPayloadFieldsUseCaseTest.kt b/infra/event-sync/src/test/java/com/simprints/infra/eventsync/event/usecases/TokenizeEventPayloadFieldsUseCaseTest.kt index 0b575405b0..8681e88490 100644 --- a/infra/event-sync/src/test/java/com/simprints/infra/eventsync/event/usecases/TokenizeEventPayloadFieldsUseCaseTest.kt +++ b/infra/event-sync/src/test/java/com/simprints/infra/eventsync/event/usecases/TokenizeEventPayloadFieldsUseCaseTest.kt @@ -8,7 +8,7 @@ import com.simprints.infra.events.event.domain.models.Event import io.mockk.* import io.mockk.impl.annotations.MockK import org.junit.Before -import kotlin.test.Test +import org.junit.Test internal class TokenizeEventPayloadFieldsUseCaseTest { @MockK diff --git a/infra/images/src/test/java/com/simprints/infra/images/remote/signedurl/SignedUrlSampleUploaderTest.kt b/infra/images/src/test/java/com/simprints/infra/images/remote/signedurl/SignedUrlSampleUploaderTest.kt index 6292be777b..41115bb060 100644 --- a/infra/images/src/test/java/com/simprints/infra/images/remote/signedurl/SignedUrlSampleUploaderTest.kt +++ b/infra/images/src/test/java/com/simprints/infra/images/remote/signedurl/SignedUrlSampleUploaderTest.kt @@ -17,7 +17,7 @@ import io.mockk.impl.annotations.MockK import kotlinx.coroutines.test.runTest import okio.IOException import org.junit.Before -import kotlin.test.Test +import org.junit.Test internal class SignedUrlSampleUploaderTest { @MockK diff --git a/infra/logging/src/test/java/com/simprints/infra/logging/LogDirectoryProviderTest.kt b/infra/logging/src/test/java/com/simprints/infra/logging/LogDirectoryProviderTest.kt index c1f759023d..e9c8ed53f9 100644 --- a/infra/logging/src/test/java/com/simprints/infra/logging/LogDirectoryProviderTest.kt +++ b/infra/logging/src/test/java/com/simprints/infra/logging/LogDirectoryProviderTest.kt @@ -3,8 +3,8 @@ package com.simprints.infra.logging import android.content.Context import io.mockk.every import io.mockk.mockk +import org.junit.Test import java.io.File -import kotlin.test.Test import kotlin.test.assertEquals class LogDirectoryProviderTest { From 83a22406508f9812c19fcd6996b1f71e8974370a Mon Sep 17 00:00:00 2001 From: meladRaouf Date: Sun, 31 May 2026 18:06:43 +0000 Subject: [PATCH 11/12] fix: replace removed ResponseBody.EMPTY usage in backend-api tests --- .../com/simprints/infra/backendapi/BackendApiClientTest.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/infra/backend-api/src/test/java/com/simprints/infra/backendapi/BackendApiClientTest.kt b/infra/backend-api/src/test/java/com/simprints/infra/backendapi/BackendApiClientTest.kt index 117cb8dea7..9f0ab3a45b 100644 --- a/infra/backend-api/src/test/java/com/simprints/infra/backendapi/BackendApiClientTest.kt +++ b/infra/backend-api/src/test/java/com/simprints/infra/backendapi/BackendApiClientTest.kt @@ -9,6 +9,7 @@ import io.mockk.impl.annotations.MockK import kotlinx.coroutines.CancellationException import kotlinx.coroutines.test.runTest import okhttp3.ResponseBody +import okhttp3.ResponseBody.Companion.toResponseBody import org.junit.Before import org.junit.Test import retrofit2.Response @@ -62,7 +63,7 @@ internal class BackendApiClientTest { @Test fun `executeCall returns Success when api client returns successful response`() = runTest { coEvery { apiClient.executeCall(any Response>()) } returns - Response.success(ResponseBody.EMPTY) + Response.success("".toResponseBody()) val result = subject.executeCall(TestRemoteInterface::class) { "ignored" } @@ -75,7 +76,7 @@ internal class BackendApiClientTest { @Test fun `executeCall returns Failure when api client returns failed response`() = runTest { coEvery { apiClient.executeCall(any Response>()) } returns - Response.error(426, ResponseBody.EMPTY) + Response.error(426, "".toResponseBody()) val result = subject.executeCall(TestRemoteInterface::class) { "ignored" } From a9542db2170161707666bb80d22ba7a79bc11616 Mon Sep 17 00:00:00 2001 From: Melad Raouf Date: Sun, 31 May 2026 19:27:45 +0100 Subject: [PATCH 12/12] Update RealmWrapperImplTest to verify startForegroundService call --- .../infra/enrolment/records/realm/store/RealmWrapperImplTest.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/enrolment-records/realm-store/src/test/java/com/simprints/infra/enrolment/records/realm/store/RealmWrapperImplTest.kt b/infra/enrolment-records/realm-store/src/test/java/com/simprints/infra/enrolment/records/realm/store/RealmWrapperImplTest.kt index 45662685ca..7e9d507004 100644 --- a/infra/enrolment-records/realm-store/src/test/java/com/simprints/infra/enrolment/records/realm/store/RealmWrapperImplTest.kt +++ b/infra/enrolment-records/realm-store/src/test/java/com/simprints/infra/enrolment/records/realm/store/RealmWrapperImplTest.kt @@ -113,7 +113,7 @@ class RealmWrapperImplTest { verify { Realm.deleteRealm(configuration) secureLocalDbKeyProviderMock.recreateLocalDatabaseKey(PROJECT_ID) - context.startService(any()) // Start ResetDownSyncService service + context.startForegroundService(any()) // Start ResetDownSyncService service } verify(exactly = 2) { Realm.open(configuration) } }