Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -23,7 +23,6 @@ class AndroidApplicationConventionPlugin : Plugin<Project> {

with(pluginManager) {
apply("com.android.application")
apply("org.jetbrains.kotlin.android")
apply("simprints.library.hilt")

apply("com.google.firebase.firebase-perf")
Expand All @@ -34,7 +33,7 @@ class AndroidApplicationConventionPlugin : Plugin<Project> {
}
Comment thread
meladRaouf marked this conversation as resolved.

extensions.configure<ApplicationExtension> {
configureKotlinAndroid(this)
configureAndroidApplication(this)

defaultConfig {
targetSdk = SdkVersions.TARGET
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -13,13 +13,12 @@ class AndroidLibraryConventionPlugin : Plugin<Project> {
with(target) {
with(pluginManager) {
apply("com.android.library")
apply("org.jetbrains.kotlin.android")

apply("simprints.ci.jacoco")
}
Comment on lines 14 to 18

extensions.configure<LibraryExtension> {
configureKotlinAndroid(this)
configureAndroidLibrary(this)

packaging {
// remove mockk duplicated files
Expand Down
60 changes: 36 additions & 24 deletions build-logic/convention/src/main/kotlin/common/KotlinAndroid.kt
Original file line number Diff line number Diff line change
@@ -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 {
Expand All @@ -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()
}
1 change: 0 additions & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
1 change: 1 addition & 0 deletions face/infra/bio-sdk-resolver/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
2 changes: 1 addition & 1 deletion face/infra/simface/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,5 @@ android {

dependencies {
implementation(project(":face:infra:base-bio-sdk"))
api(libs.simface)
implementation(libs.simface)
}
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 4 additions & 0 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -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
Comment thread
meladRaouf marked this conversation as resolved.
android.uniquePackageNames=false
34 changes: 16 additions & 18 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
[versions]
kotlin_version = "2.2.21"
kotlin_version = "2.3.21"
kotlin_coroutine_version = "1.11.0"
ksp_version = "2.3.5"
kotlin_serialization_version = "1.11.0"
Comment thread
meladRaouf marked this conversation as resolved.

android_gradlePlugin_version = "8.13.2"
android_gradlePlugin_version = "9.2.1"
androidx_version = "1.7.0"
androidx_core_version = "1.18.0"
androidx_app_compat_version = "1.7.1"
Expand All @@ -25,40 +25,39 @@ 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.57.2"
hilt_version = "2.59.2"
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"

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.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.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.0.8"
kermit_version = "2.1.0"
zip4j_version = "2.11.6"

libsimprints_version = "2026.1.0"
Expand All @@ -72,16 +71,16 @@ 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"
barista_version = "4.3.0"
uiAutomator_version = "2.3.0"
jacoco_version = "0.8.14"

sonar_plugin_version = "7.2.3.7755"
realm_version = "4.0.1"
sonar_plugin_version = "7.3.0.8198"
realm_version = "4.0.3"
protobuf_plugin_version = "0.10.0"
deps_graph_version = "0.8.0"
tink_version = "1.21.0"
Expand Down Expand Up @@ -198,7 +197,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" }
Expand Down Expand Up @@ -269,7 +268,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" }
Expand Down
4 changes: 3 additions & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -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
Comment thread
meladRaouf marked this conversation as resolved.
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
9 changes: 4 additions & 5 deletions id/src/main/java/com/simprints/id/Application.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -62,7 +63,7 @@ internal class BackendApiClientTest {
@Test
fun `executeCall returns Success when api client returns successful response`() = runTest {
coEvery { apiClient.executeCall(any<suspend (TestRemoteInterface) -> Response<ResponseBody>>()) } returns
Response<ResponseBody>.success(ResponseBody.EMPTY)
Response<ResponseBody>.success("".toResponseBody())

val result = subject.executeCall(TestRemoteInterface::class) { "ignored" }

Expand All @@ -75,7 +76,7 @@ internal class BackendApiClientTest {
@Test
fun `executeCall returns Failure when api client returns failed response`() = runTest {
coEvery { apiClient.executeCall(any<suspend (TestRemoteInterface) -> Response<ResponseBody>>()) } returns
Response<ResponseBody>.error(426, ResponseBody.EMPTY)
Response<ResponseBody>.error(426, "".toResponseBody())

val result = subject.executeCall(TestRemoteInterface::class) { "ignored" }

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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) }
}
Expand Down
1 change: 1 addition & 0 deletions infra/enrolment-records/repository/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,5 @@ dependencies {

implementation(libs.libsimprints)
implementation(libs.testing.androidX.room)
implementation(libs.workManager.work)
}
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Loading
Loading