diff --git a/build-logic/convention/build.gradle.kts b/build-logic/convention/build.gradle.kts index 2f8cf70e..d91b281d 100644 --- a/build-logic/convention/build.gradle.kts +++ b/build-logic/convention/build.gradle.kts @@ -29,6 +29,8 @@ dependencies { compileOnly(libs.ktlint.gradlePlugin) compileOnly(libs.spotless.gradle) implementation(libs.truth) + compileOnly(libs.firebase.crashlytics.gradlePlugin) + compileOnly(libs.firebase.performance.gradlePlugin) } tasks { @@ -55,18 +57,29 @@ gradlePlugin { implementationClass = "AndroidApplicationFlavorsConventionPlugin" } + register("androidFirebase") { + id = "org.convention.android.application.firebase" + implementationClass = "AndroidApplicationFirebaseConventionPlugin" + } + + register("androidLint") { + id = "org.convention.android.application.lint" + implementationClass = "AndroidLintConventionPlugin" + } + // KMP & CMP Plugins register("cmpFeature") { - id = "mifospay.cmp.feature" + id = "org.convention.cmp.feature" implementationClass = "CMPFeatureConventionPlugin" } register("kmpKoin") { - id = "mifospay.kmp.koin" + id = "org.convention.kmp.koin" implementationClass = "KMPKoinConventionPlugin" } + register("kmpLibrary") { - id = "mifospay.kmp.library" + id = "org.convention.kmp.library" implementationClass = "KMPLibraryConventionPlugin" } diff --git a/build-logic/convention/src/main/kotlin/AndroidApplicationConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidApplicationConventionPlugin.kt index 92787bc3..250688b0 100644 --- a/build-logic/convention/src/main/kotlin/AndroidApplicationConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/AndroidApplicationConventionPlugin.kt @@ -6,6 +6,7 @@ import org.gradle.api.Project import org.gradle.kotlin.dsl.configure import org.gradle.kotlin.dsl.getByType import org.mifospay.configureBadgingTasks +import org.mifospay.configureGradleManagedDevices import org.mifospay.configureKotlinAndroid import org.mifospay.configurePrintApksTask @@ -19,6 +20,8 @@ class AndroidApplicationConventionPlugin : Plugin { apply("mifos.detekt.plugin") apply("mifos.spotless.plugin") apply("mifos.git.hooks") + apply("org.convention.android.application.lint") + apply("org.convention.android.application.firebase") } extensions.configure { @@ -26,6 +29,7 @@ class AndroidApplicationConventionPlugin : Plugin { defaultConfig.targetSdk = 34 @Suppress("UnstableApiUsage") testOptions.animationsDisabled = true + configureGradleManagedDevices(this) } extensions.configure { configurePrintApksTask(this) diff --git a/build-logic/convention/src/main/kotlin/AndroidApplicationFirebaseConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidApplicationFirebaseConventionPlugin.kt new file mode 100644 index 00000000..63f74c81 --- /dev/null +++ b/build-logic/convention/src/main/kotlin/AndroidApplicationFirebaseConventionPlugin.kt @@ -0,0 +1,51 @@ +/* + * Copyright 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import com.android.build.api.dsl.ApplicationExtension +import com.google.firebase.crashlytics.buildtools.gradle.CrashlyticsExtension +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.kotlin.dsl.apply +import org.gradle.kotlin.dsl.configure +import org.gradle.kotlin.dsl.dependencies +import org.mifospay.libs + +class AndroidApplicationFirebaseConventionPlugin : Plugin { + override fun apply(target: Project) { + with(target) { + apply(plugin = "com.google.gms.google-services") + apply(plugin = "com.google.firebase.crashlytics") + + dependencies { + val bom = libs.findLibrary("firebase-bom").get() + "implementation"(platform(bom)) + "implementation"(libs.findLibrary("firebase.analytics").get()) + "implementation"(libs.findLibrary("firebase.crashlytics").get()) + } + + extensions.configure { + buildTypes.configureEach { + // Disable the Crashlytics mapping file upload. This feature should only be + // enabled if a Firebase backend is available and configured in + // google-services.json. + configure { + mappingFileUploadEnabled = true + } + } + } + } + } +} diff --git a/build-logic/convention/src/main/kotlin/AndroidLintConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidLintConventionPlugin.kt new file mode 100644 index 00000000..884d6f07 --- /dev/null +++ b/build-logic/convention/src/main/kotlin/AndroidLintConventionPlugin.kt @@ -0,0 +1,49 @@ +/* + * Copyright 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import com.android.build.api.dsl.ApplicationExtension +import com.android.build.api.dsl.LibraryExtension +import com.android.build.api.dsl.Lint +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.kotlin.dsl.apply +import org.gradle.kotlin.dsl.configure + +class AndroidLintConventionPlugin : Plugin { + override fun apply(target: Project) { + with(target) { + when { + pluginManager.hasPlugin("com.android.application") -> + configure { lint(Lint::configure) } + + pluginManager.hasPlugin("com.android.library") -> + configure { lint(Lint::configure) } + + else -> { + apply(plugin = "com.android.lint") + configure(Lint::configure) + } + } + } + } +} + +private fun Lint.configure() { + xmlReport = true + sarifReport = true + checkDependencies = true + disable += "GradleDependency" +} diff --git a/build-logic/convention/src/main/kotlin/CMPFeatureConventionPlugin.kt b/build-logic/convention/src/main/kotlin/CMPFeatureConventionPlugin.kt index 5dd3b580..8885f673 100644 --- a/build-logic/convention/src/main/kotlin/CMPFeatureConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/CMPFeatureConventionPlugin.kt @@ -8,8 +8,8 @@ class CMPFeatureConventionPlugin : Plugin { override fun apply(target: Project) { with(target) { pluginManager.apply { - apply("mifospay.kmp.library") - apply("mifospay.kmp.koin") + apply("org.convention.kmp.library") + apply("org.convention.kmp.koin") apply("org.jetbrains.kotlin.plugin.compose") apply("org.jetbrains.compose") apply("org.jetbrains.kotlin.plugin.serialization") diff --git a/build-logic/convention/src/main/kotlin/FieldSkippingClassVisitor.kt b/build-logic/convention/src/main/kotlin/FieldSkippingClassVisitor.kt new file mode 100644 index 00000000..b632c04f --- /dev/null +++ b/build-logic/convention/src/main/kotlin/FieldSkippingClassVisitor.kt @@ -0,0 +1,47 @@ +import com.android.build.api.instrumentation.AsmClassVisitorFactory +import com.android.build.api.instrumentation.ClassContext +import com.android.build.api.instrumentation.ClassData +import com.android.build.api.instrumentation.InstrumentationParameters +import org.gradle.api.provider.SetProperty +import org.gradle.api.tasks.Input +import org.objectweb.asm.ClassVisitor +import org.objectweb.asm.FieldVisitor + +class FieldSkippingClassVisitor( + apiVersion: Int, + nextClassVisitor: ClassVisitor, +) : ClassVisitor(apiVersion, nextClassVisitor) { + + // Returning null from this method will cause the ClassVisitor to strip all fields from the class. + override fun visitField( + access: Int, + name: String?, + descriptor: String?, + signature: String?, + value: Any? + ): FieldVisitor? = null + + abstract class Factory : AsmClassVisitorFactory { + + private val excludedClasses + get() = parameters.get().classes.get() + + override fun isInstrumentable(classData: ClassData): Boolean = + classData.className in excludedClasses + + override fun createClassVisitor( + classContext: ClassContext, + nextClassVisitor: ClassVisitor, + ): ClassVisitor { + return FieldSkippingClassVisitor( + apiVersion = instrumentationContext.apiVersion.get(), + nextClassVisitor = nextClassVisitor, + ) + } + } + + abstract class Parameters : InstrumentationParameters { + @get:Input + abstract val classes: SetProperty + } +} \ No newline at end of file diff --git a/build-logic/convention/src/main/kotlin/KMPLibraryConventionPlugin.kt b/build-logic/convention/src/main/kotlin/KMPLibraryConventionPlugin.kt index 23d0a891..5aeceee6 100644 --- a/build-logic/convention/src/main/kotlin/KMPLibraryConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/KMPLibraryConventionPlugin.kt @@ -15,7 +15,7 @@ class KMPLibraryConventionPlugin: Plugin { with(pluginManager) { apply("com.android.library") apply("org.jetbrains.kotlin.multiplatform") - apply("mifospay.kmp.koin") + apply("org.convention.kmp.koin") apply("mifos.detekt.plugin") apply("mifos.spotless.plugin") } diff --git a/build-logic/convention/src/main/kotlin/org/mifospay/MifosBuildType.kt b/build-logic/convention/src/main/kotlin/org/mifospay/AppBuildType.kt similarity index 69% rename from build-logic/convention/src/main/kotlin/org/mifospay/MifosBuildType.kt rename to build-logic/convention/src/main/kotlin/org/mifospay/AppBuildType.kt index 9ee74517..c1f948f0 100644 --- a/build-logic/convention/src/main/kotlin/org/mifospay/MifosBuildType.kt +++ b/build-logic/convention/src/main/kotlin/org/mifospay/AppBuildType.kt @@ -3,7 +3,7 @@ package org.mifospay /** * This is shared between :app and :benchmarks module to provide configurations type safety. */ -enum class MifosBuildType(val applicationIdSuffix: String? = null) { +enum class AppBuildType(val applicationIdSuffix: String? = null) { DEBUG(".debug"), RELEASE, } diff --git a/build-logic/convention/src/main/kotlin/org/mifospay/MifosFlavor.kt b/build-logic/convention/src/main/kotlin/org/mifospay/AppFlavor.kt similarity index 85% rename from build-logic/convention/src/main/kotlin/org/mifospay/MifosFlavor.kt rename to build-logic/convention/src/main/kotlin/org/mifospay/AppFlavor.kt index 86eefa26..a3d0c49f 100644 --- a/build-logic/convention/src/main/kotlin/org/mifospay/MifosFlavor.kt +++ b/build-logic/convention/src/main/kotlin/org/mifospay/AppFlavor.kt @@ -14,19 +14,19 @@ enum class FlavorDimension { // purposes, or from a production backend server which supplies up-to-date, real content. // These two product flavors reflect this behaviour. @Suppress("EnumEntryName") -enum class MifosFlavor(val dimension: FlavorDimension, val applicationIdSuffix: String? = null) { +enum class AppFlavor(val dimension: FlavorDimension, val applicationIdSuffix: String? = null) { demo(FlavorDimension.contentType, applicationIdSuffix = ".demo"), prod(FlavorDimension.contentType) } fun configureFlavors( commonExtension: CommonExtension<*, *, *, *, *, *>, - flavorConfigurationBlock: ProductFlavor.(flavor: MifosFlavor) -> Unit = {} + flavorConfigurationBlock: ProductFlavor.(flavor: AppFlavor) -> Unit = {} ) { commonExtension.apply { flavorDimensions += FlavorDimension.contentType.name productFlavors { - MifosFlavor.values().forEach { + AppFlavor.values().forEach { create(it.name) { dimension = it.dimension.name flavorConfigurationBlock(this, it) diff --git a/build-logic/convention/src/main/kotlin/org/mifospay/GradleManagedDevices.kt b/build-logic/convention/src/main/kotlin/org/mifospay/GradleManagedDevices.kt new file mode 100644 index 00000000..422b7eb2 --- /dev/null +++ b/build-logic/convention/src/main/kotlin/org/mifospay/GradleManagedDevices.kt @@ -0,0 +1,70 @@ +/* + * Copyright 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.mifospay + +import com.android.build.api.dsl.CommonExtension +import com.android.build.api.dsl.ManagedVirtualDevice +import org.gradle.kotlin.dsl.get +import org.gradle.kotlin.dsl.invoke + +/** + * Configure project for Gradle managed devices + */ +internal fun configureGradleManagedDevices( + commonExtension: CommonExtension<*, *, *, *, *, *>, +) { + val pixel4 = DeviceConfig("Pixel 4", 30, "aosp-atd") + val pixel6 = DeviceConfig("Pixel 6", 31, "aosp") + val pixelC = DeviceConfig("Pixel C", 30, "aosp-atd") + + val localDevices = listOf(pixel4, pixel6, pixelC) + val ciDevices = listOf(pixel4, pixelC) + + commonExtension.testOptions { + managedDevices { + allDevices { + localDevices.forEach { deviceConfig -> + maybeCreate(deviceConfig.taskName, ManagedVirtualDevice::class.java).apply { + device = deviceConfig.device + apiLevel = deviceConfig.apiLevel + systemImageSource = deviceConfig.systemImageSource + } + } + } + groups { + maybeCreate("ci").apply { + ciDevices.forEach { deviceConfig -> + targetDevices.add(allDevices[deviceConfig.taskName]) + } + } + } + } + } +} + +private data class DeviceConfig( + val device: String, + val apiLevel: Int, + val systemImageSource: String, +) { + val taskName = buildString { + append(device.lowercase().replace(" ", "")) + append("api") + append(apiLevel.toString()) + append(systemImageSource.replace("-", "")) + } +} diff --git a/build-logic/convention/src/main/kotlin/org/mifospay/HierarchyTemplate.kt b/build-logic/convention/src/main/kotlin/org/mifospay/HierarchyTemplate.kt new file mode 100644 index 00000000..eff4e316 --- /dev/null +++ b/build-logic/convention/src/main/kotlin/org/mifospay/HierarchyTemplate.kt @@ -0,0 +1,179 @@ +/** + * Kotlin Multiplatform project hierarchy template configuration. + * + * This file defines a structured hierarchy for organizing source sets in Kotlin Multiplatform + * projects. It establishes a logical grouping of platform targets that enables efficient code + * sharing across platforms with similar characteristics. + * + * The hierarchy template creates the following logical groupings: + * - `common`: Base shared code for all platforms + * - `nonAndroid`: Code shared between JVM, JS, and native platforms, excluding Android + * - `jsCommon`: Code shared between JavaScript and WebAssembly JavaScript targets + * - `nonJsCommon`: Code shared between JVM and native platforms, excluding JS platforms + * - `jvmCommon`: Code shared between Android and JVM targets + * - `nonJvmCommon`: Code shared between JS and native platforms, excluding JVM platforms + * - `native`: Code shared across all native platforms + * - `apple`: Code shared across Apple platforms (iOS, macOS) + * - `ios`: iOS-specific code + * - `macos`: macOS-specific code + * - `nonNative`: Code shared between JS and JVM platforms + * + * This template applies to both main and test source sets, establishing a consistent + * structure throughout the project. + * + * Note: This implementation uses experimental Kotlin Gradle plugin APIs and may be subject + * to change in future Kotlin releases. + */ +@file:OptIn(ExperimentalKotlinGradlePluginApi::class) + +package org.mifospay + +import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi +import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension +import org.jetbrains.kotlin.gradle.plugin.KotlinHierarchyBuilder +import org.jetbrains.kotlin.gradle.plugin.KotlinHierarchyTemplate +import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSetTree + +/** + * Defines the hierarchical structure for source set organization. + * + * This template establishes the relationships between different platform targets, + * creating logical groupings based on platform similarities to facilitate code sharing. + */ +private val hierarchyTemplate = KotlinHierarchyTemplate { + withSourceSetTree( + KotlinSourceSetTree.main, + KotlinSourceSetTree.test, + ) + + common { + withCompilations { true } + + groupNonAndroid() + groupJsCommon() + groupNonJsCommon() + groupJvmCommon() + groupNonJvmCommon() + groupNative() + groupNonNative() + groupJvmJsCommon() + groupMobile() + } +} + +/** + * Creates a group of non-Android platforms (JVM, JS, and native). + */ +private fun KotlinHierarchyBuilder.groupNonAndroid() { + group("nonAndroid") { + withJvm() + groupJsCommon() + groupNative() + } +} + +/** + * Creates a group of JavaScript-related platforms (JS and WebAssembly JS). + */ +private fun KotlinHierarchyBuilder.groupJsCommon() { + group("jsCommon") { + withJs() + withWasmJs() + } +} + +/** + * Creates a group of non-JavaScript platforms (JVM-based and native). + */ +private fun KotlinHierarchyBuilder.groupNonJsCommon() { + group("nonJsCommon") { + groupJvmCommon() + groupNative() + } +} + +/** + * Creates a group of JVM-based platforms (Android and JVM). + */ +private fun KotlinHierarchyBuilder.groupJvmCommon() { + group("jvmCommon") { + withAndroidTarget() + withJvm() + } +} + +/** + * Creates a group of non-JVM platforms (JavaScript and native). + */ +private fun KotlinHierarchyBuilder.groupNonJvmCommon() { + group("nonJvmCommon") { + groupJsCommon() + groupNative() + } +} + +/** + * Creates a group of JVM, JS platforms (JavaScript and JVM). + */ +private fun KotlinHierarchyBuilder.groupJvmJsCommon() { + group("jvmJsCommon") { + groupJsCommon() + withJvm() + } +} + +/** + * Creates a hierarchical group of native platforms with subgroups for Apple platforms. + */ +private fun KotlinHierarchyBuilder.groupNative() { + group("native") { + withNative() + + group("apple") { + withApple() + + group("ios") { + withIos() + } + + group("macos") { + withMacos() + } + } + } +} + +/** + * Creates a group of non-native platforms (JavaScript and JVM-based). + */ +private fun KotlinHierarchyBuilder.groupNonNative() { + group("nonNative") { + groupJsCommon() + groupJvmCommon() + } +} + +private fun KotlinHierarchyBuilder.groupMobile() { + group("mobile") { + withAndroidTarget() + withApple() + } +} + +/** + * Applies the predefined hierarchy template to a Kotlin Multiplatform project. + * + * This extension function should be called within the `kotlin` block of a Multiplatform + * project's build script to establish the source set hierarchy defined in this file. + * + * Example usage: + * ``` + * kotlin { + * applyProjectHierarchyTemplate() + * // Configure targets... + * } + * ``` + */ +fun KotlinMultiplatformExtension.applyProjectHierarchyTemplate() { + applyHierarchyTemplate(hierarchyTemplate) +} \ No newline at end of file diff --git a/build-logic/convention/src/main/kotlin/org/mifospay/Jacoco.kt b/build-logic/convention/src/main/kotlin/org/mifospay/Jacoco.kt new file mode 100644 index 00000000..7459049b --- /dev/null +++ b/build-logic/convention/src/main/kotlin/org/mifospay/Jacoco.kt @@ -0,0 +1,134 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.mifospay + +import com.android.build.api.artifact.ScopedArtifact +import com.android.build.api.variant.AndroidComponentsExtension +import com.android.build.api.variant.ScopedArtifacts +import com.android.build.api.variant.SourceDirectories +import org.gradle.api.Project +import org.gradle.api.file.Directory +import org.gradle.api.file.RegularFile +import org.gradle.api.provider.ListProperty +import org.gradle.api.provider.Provider +import org.gradle.api.tasks.testing.Test +import org.gradle.kotlin.dsl.assign +import org.gradle.kotlin.dsl.configure +import org.gradle.kotlin.dsl.register +import org.gradle.kotlin.dsl.withType +import org.gradle.testing.jacoco.plugins.JacocoPluginExtension +import org.gradle.testing.jacoco.plugins.JacocoTaskExtension +import org.gradle.testing.jacoco.tasks.JacocoReport +import java.util.Locale + +private val coverageExclusions = listOf( + // Android + "**/R.class", + "**/R\$*.class", + "**/BuildConfig.*", + "**/Manifest*.*", + "**/*_Hilt*.class", + "**/Hilt_*.class", +) + +private fun String.capitalize() = replaceFirstChar { + if (it.isLowerCase()) it.titlecase(Locale.getDefault()) else it.toString() +} + +/** + * Creates a new task that generates a combined coverage report with data from local and + * instrumented tests. + * + * `create{variant}CombinedCoverageReport` + * + * Note that coverage data must exist before running the task. This allows us to run device + * tests on CI using a different Github Action or an external device farm. + */ +internal fun Project.configureJacoco( + androidComponentsExtension: AndroidComponentsExtension<*, *, *>, +) { + configure { + toolVersion = libs.findVersion("jacoco").get().toString() + } + + androidComponentsExtension.onVariants { variant -> + val myObjFactory = project.objects + val buildDir = layout.buildDirectory.get().asFile + val allJars: ListProperty = myObjFactory.listProperty(RegularFile::class.java) + val allDirectories: ListProperty = + myObjFactory.listProperty(Directory::class.java) + val reportTask = + tasks.register( + "create${variant.name.capitalize()}CombinedCoverageReport", + JacocoReport::class, + ) { + + classDirectories.setFrom( + allJars, + allDirectories.map { dirs -> + dirs.map { dir -> + myObjFactory.fileTree().setDir(dir).exclude(coverageExclusions) + } + }, + ) + reports { + xml.required = true + html.required = true + } + + fun SourceDirectories.Flat?.toFilePaths(): Provider> = this + ?.all + ?.map { directories -> directories.map { it.asFile.path } } + ?: provider { emptyList() } + sourceDirectories.setFrom( + files( + variant.sources.java.toFilePaths(), + variant.sources.kotlin.toFilePaths() + ), + ) + + executionData.setFrom( + project.fileTree("$buildDir/outputs/unit_test_code_coverage/${variant.name}UnitTest") + .matching { include("**/*.exec") }, + + project.fileTree("$buildDir/outputs/code_coverage/${variant.name}AndroidTest") + .matching { include("**/*.ec") }, + ) + } + + + variant.artifacts.forScope(ScopedArtifacts.Scope.PROJECT) + .use(reportTask) + .toGet( + ScopedArtifact.CLASSES, + { _ -> allJars }, + { _ -> allDirectories }, + ) + } + + tasks.withType().configureEach { + configure { + // Required for JaCoCo + Robolectric + // https://github.com/robolectric/robolectric/issues/2230 + isIncludeNoLocationClasses = true + + // Required for JDK 11 with the above + // https://github.com/gradle/gradle/issues/5184#issuecomment-391982009 + excludes = listOf("jdk.internal.*") + } + } +} diff --git a/build-logic/convention/src/main/kotlin/org/mifospay/KotlinMultiplatform.kt b/build-logic/convention/src/main/kotlin/org/mifospay/KotlinMultiplatform.kt index 689c48cc..46fc5f15 100644 --- a/build-logic/convention/src/main/kotlin/org/mifospay/KotlinMultiplatform.kt +++ b/build-logic/convention/src/main/kotlin/org/mifospay/KotlinMultiplatform.kt @@ -9,7 +9,7 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension @OptIn(ExperimentalWasmDsl::class, ExperimentalKotlinGradlePluginApi::class) internal fun Project.configureKotlinMultiplatform() { extensions.configure { - applyDefaultHierarchyTemplate() + applyProjectHierarchyTemplate() jvm("desktop") androidTarget() diff --git a/ci-prepush.bat b/ci-prepush.bat index 49298e3e..863930a8 100644 --- a/ci-prepush.bat +++ b/ci-prepush.bat @@ -13,8 +13,8 @@ call :run_gradle_task "check -p build-logic" call :run_gradle_task "spotlessApply --no-configuration-cache" call :run_gradle_task "dependencyGuardBaseline" call :run_gradle_task "detekt" -call :run_gradle_task ":mifospay-android:build" -call :run_gradle_task ":mifospay-android:updateProdReleaseBadging" +call :run_gradle_task ":cmp-android:build" +call :run_gradle_task ":cmp-android:updateProdReleaseBadging" echo All checks and tests completed successfully. exit /b 0 diff --git a/cmp-android/build.gradle.kts b/cmp-android/build.gradle.kts index 9e211dd1..b1160ccd 100644 --- a/cmp-android/build.gradle.kts +++ b/cmp-android/build.gradle.kts @@ -8,7 +8,7 @@ * See https://github.com/openMF/mobile-wallet/blob/master/LICENSE.md */ import com.google.gms.googleservices.GoogleServicesPlugin.GoogleServicesPluginConfig -import org.mifospay.MifosBuildType +import org.mifospay.AppBuildType import org.mifospay.dynamicVersion plugins { @@ -45,14 +45,14 @@ android { buildTypes { debug { - applicationIdSuffix = MifosBuildType.DEBUG.applicationIdSuffix + applicationIdSuffix = AppBuildType.DEBUG.applicationIdSuffix } // Disabling proguard for now until // https://github.com/openMF/mobile-wallet/issues/1815 this issue is resolved release { isMinifyEnabled = false - applicationIdSuffix = MifosBuildType.RELEASE.applicationIdSuffix + applicationIdSuffix = AppBuildType.RELEASE.applicationIdSuffix isShrinkResources = false isDebuggable = false isJniDebuggable = false diff --git a/cmp-android/dependencies/prodReleaseRuntimeClasspath.tree.txt b/cmp-android/dependencies/prodReleaseRuntimeClasspath.tree.txt index 36d16ee0..5bd6ad61 100644 --- a/cmp-android/dependencies/prodReleaseRuntimeClasspath.tree.txt +++ b/cmp-android/dependencies/prodReleaseRuntimeClasspath.tree.txt @@ -230,6 +230,384 @@ | +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.1.21 (c) | \--- androidx.lifecycle:lifecycle-common-java8:2.9.2 (c) +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 -> 2.1.21 (*) ++--- com.google.firebase:firebase-bom:33.16.0 +| +--- com.google.firebase:firebase-analytics-ktx:22.5.0 (c) +| +--- com.google.firebase:firebase-crashlytics-ktx:19.4.4 (c) +| +--- com.google.firebase:firebase-analytics:22.5.0 (c) +| +--- com.google.firebase:firebase-common:21.0.0 (c) +| +--- com.google.firebase:firebase-common-ktx:21.0.0 (c) +| +--- com.google.firebase:firebase-crashlytics:19.4.4 (c) +| +--- com.google.firebase:firebase-encoders:17.0.0 (c) +| \--- com.google.firebase:firebase-installations:18.0.0 (c) ++--- com.google.firebase:firebase-analytics-ktx -> 22.5.0 +| +--- com.google.firebase:firebase-analytics:22.5.0 +| | +--- com.google.android.gms:play-services-measurement:22.5.0 +| | | +--- androidx.collection:collection:1.0.0 -> 1.5.0 (*) +| | | +--- androidx.legacy:legacy-support-core-utils:1.0.0 +| | | | +--- androidx.annotation:annotation:1.0.0 -> 1.9.1 (*) +| | | | +--- androidx.core:core:1.0.0 -> 1.16.0 +| | | | | +--- androidx.annotation:annotation:1.8.1 -> 1.9.1 (*) +| | | | | +--- androidx.annotation:annotation-experimental:1.4.1 +| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.7.10 -> 2.1.21 (*) +| | | | | +--- androidx.collection:collection:1.4.2 -> 1.5.0 (*) +| | | | | +--- androidx.concurrent:concurrent-futures:1.0.0 -> 1.1.0 (*) +| | | | | +--- androidx.core:core-viewtree:1.0.0 (*) +| | | | | +--- androidx.interpolator:interpolator:1.0.0 +| | | | | | \--- androidx.annotation:annotation:1.0.0 -> 1.9.1 (*) +| | | | | +--- androidx.lifecycle:lifecycle-runtime:2.6.2 -> 2.9.2 (*) +| | | | | +--- androidx.tracing:tracing:1.2.0 -> 1.3.0 (*) +| | | | | +--- androidx.versionedparcelable:versionedparcelable:1.1.1 +| | | | | | +--- androidx.annotation:annotation:1.1.0 -> 1.9.1 (*) +| | | | | | \--- androidx.collection:collection:1.0.0 -> 1.5.0 (*) +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.1.21 (*) +| | | | | +--- org.jspecify:jspecify:1.0.0 +| | | | | +--- androidx.core:core-ktx:1.16.0 (c) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.21 (c) +| | | | +--- androidx.documentfile:documentfile:1.0.0 -> 1.1.0 +| | | | | +--- androidx.annotation:annotation:1.8.1 -> 1.9.1 (*) +| | | | | +--- androidx.core:core:1.7.0 -> 1.16.0 (*) +| | | | | \--- org.jspecify:jspecify:1.0.0 +| | | | +--- androidx.loader:loader:1.0.0 -> 1.1.0 +| | | | | +--- androidx.annotation:annotation:1.0.0 -> 1.9.1 (*) +| | | | | +--- androidx.core:core:1.0.0 -> 1.16.0 (*) +| | | | | +--- androidx.lifecycle:lifecycle-livedata-core:2.0.0 -> 2.9.2 (*) +| | | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.0.0 -> 2.9.2 (*) +| | | | | \--- androidx.collection:collection:1.0.0 -> 1.5.0 (*) +| | | | +--- androidx.localbroadcastmanager:localbroadcastmanager:1.0.0 +| | | | | \--- androidx.annotation:annotation:1.0.0 -> 1.9.1 (*) +| | | | \--- androidx.print:print:1.0.0 +| | | | \--- androidx.annotation:annotation:1.0.0 -> 1.9.1 (*) +| | | +--- com.google.android.gms:play-services-ads-identifier:18.0.0 +| | | | \--- com.google.android.gms:play-services-basement:18.0.0 -> 18.5.0 +| | | | +--- androidx.collection:collection:1.0.0 -> 1.5.0 (*) +| | | | +--- androidx.core:core:1.2.0 -> 1.16.0 (*) +| | | | \--- androidx.fragment:fragment:1.1.0 -> 1.8.8 +| | | | +--- androidx.activity:activity:1.8.1 -> 1.10.1 +| | | | | +--- androidx.annotation:annotation:1.8.1 -> 1.9.1 (*) +| | | | | +--- androidx.core:core-ktx:1.13.0 -> 1.16.0 +| | | | | | +--- androidx.annotation:annotation:1.8.1 -> 1.9.1 (*) +| | | | | | +--- androidx.core:core:1.16.0 (*) +| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.1.21 (*) +| | | | | | +--- androidx.core:core:1.16.0 (c) +| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.21 (c) +| | | | | +--- androidx.core:core-viewtree:1.0.0 (*) +| | | | | +--- androidx.lifecycle:lifecycle-common:2.6.1 -> 2.9.2 (*) +| | | | | +--- androidx.lifecycle:lifecycle-runtime:2.6.1 -> 2.9.2 (*) +| | | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.6.1 -> 2.9.2 (*) +| | | | | +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.6.1 -> 2.9.2 +| | | | | | \--- androidx.lifecycle:lifecycle-viewmodel-savedstate-android:2.9.2 +| | | | | | +--- androidx.annotation:annotation:1.9.1 (*) +| | | | | | +--- androidx.core:core-ktx:1.2.0 -> 1.16.0 (*) +| | | | | | +--- androidx.lifecycle:lifecycle-common:2.9.2 (*) +| | | | | | +--- androidx.lifecycle:lifecycle-livedata-core:2.9.2 (*) +| | | | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.9.2 (*) +| | | | | | +--- androidx.savedstate:savedstate:1.3.1 +| | | | | | | \--- androidx.savedstate:savedstate-android:1.3.1 +| | | | | | | +--- androidx.annotation:annotation:1.8.1 -> 1.9.1 (*) +| | | | | | | +--- androidx.annotation:annotation:1.9.1 (*) +| | | | | | | +--- androidx.core:core-ktx:1.13.1 -> 1.16.0 (*) +| | | | | | | +--- androidx.core:core-viewtree:1.0.0 (*) +| | | | | | | +--- androidx.lifecycle:lifecycle-common:2.9.2 (*) +| | | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.1.21 (*) +| | | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1 -> 1.10.2 (*) +| | | | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3 -> 1.8.0 +| | | | | | | | \--- org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.0 +| | | | | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.0 +| | | | | | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.0 (c) +| | | | | | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0 (c) +| | | | | | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.8.0 (c) +| | | | | | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0 (c) +| | | | | | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json-io-jvm:1.8.0 (c) +| | | | | | | | | \--- org.jetbrains.kotlinx:kotlinx-serialization-json-io:1.8.0 (c) +| | | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 -> 2.1.21 (*) +| | | | | | | +--- androidx.savedstate:savedstate-compose:1.3.1 (c) +| | | | | | | +--- androidx.savedstate:savedstate-ktx:1.3.1 (c) +| | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.1.21 (c) +| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.1.21 (*) +| | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.1 -> 1.10.2 (*) +| | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1 -> 1.10.2 (*) +| | | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3 -> 1.8.0 (*) +| | | | | | +--- androidx.lifecycle:lifecycle-common:2.9.2 (c) +| | | | | | +--- androidx.lifecycle:lifecycle-common-java8:2.9.2 (c) +| | | | | | +--- androidx.lifecycle:lifecycle-livedata:2.9.2 (c) +| | | | | | +--- androidx.lifecycle:lifecycle-livedata-core:2.9.2 (c) +| | | | | | +--- androidx.lifecycle:lifecycle-livedata-core-ktx:2.9.2 (c) +| | | | | | +--- androidx.lifecycle:lifecycle-process:2.9.2 (c) +| | | | | | +--- androidx.lifecycle:lifecycle-runtime:2.9.2 (c) +| | | | | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.9.2 (c) +| | | | | | +--- androidx.lifecycle:lifecycle-runtime-ktx:2.9.2 (c) +| | | | | | +--- androidx.lifecycle:lifecycle-service:2.9.2 (c) +| | | | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.9.2 (c) +| | | | | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.9.2 (c) +| | | | | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.9.2 (c) +| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.1.21 (c) +| | | | | +--- androidx.profileinstaller:profileinstaller:1.4.0 -> 1.4.1 (*) +| | | | | +--- androidx.savedstate:savedstate:1.2.1 -> 1.3.1 (*) +| | | | | +--- androidx.tracing:tracing:1.0.0 -> 1.3.0 (*) +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.1.21 (*) +| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.10.2 (*) +| | | | | +--- androidx.activity:activity-compose:1.10.1 (c) +| | | | | +--- androidx.activity:activity-ktx:1.10.1 (c) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.21 (c) +| | | | +--- androidx.annotation:annotation:1.1.0 -> 1.9.1 (*) +| | | | +--- androidx.annotation:annotation-experimental:1.4.0 -> 1.4.1 (*) +| | | | +--- androidx.collection:collection:1.1.0 -> 1.5.0 (*) +| | | | +--- androidx.core:core-ktx:1.2.0 -> 1.16.0 (*) +| | | | +--- androidx.lifecycle:lifecycle-livedata-core:2.6.1 -> 2.9.2 (*) +| | | | +--- androidx.lifecycle:lifecycle-runtime:2.6.1 -> 2.9.2 (*) +| | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.6.1 -> 2.9.2 (*) +| | | | +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.6.1 -> 2.9.2 (*) +| | | | +--- androidx.loader:loader:1.0.0 -> 1.1.0 (*) +| | | | +--- androidx.profileinstaller:profileinstaller:1.3.1 -> 1.4.1 (*) +| | | | +--- androidx.savedstate:savedstate:1.2.1 -> 1.3.1 (*) +| | | | +--- androidx.viewpager:viewpager:1.0.0 +| | | | | +--- androidx.annotation:annotation:1.0.0 -> 1.9.1 (*) +| | | | | +--- androidx.core:core:1.0.0 -> 1.16.0 (*) +| | | | | \--- androidx.customview:customview:1.0.0 -> 1.1.0 +| | | | | +--- androidx.annotation:annotation:1.1.0 -> 1.9.1 (*) +| | | | | +--- androidx.core:core:1.3.0 -> 1.16.0 (*) +| | | | | \--- androidx.collection:collection:1.1.0 -> 1.5.0 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.21 (*) +| | | | \--- androidx.fragment:fragment-ktx:1.8.8 (c) +| | | +--- com.google.android.gms:play-services-basement:18.5.0 (*) +| | | +--- com.google.android.gms:play-services-measurement-base:22.5.0 +| | | | \--- com.google.android.gms:play-services-basement:18.5.0 (*) +| | | +--- com.google.android.gms:play-services-measurement-impl:22.5.0 +| | | | +--- androidx.collection:collection:1.0.0 -> 1.5.0 (*) +| | | | +--- androidx.core:core:1.9.0 -> 1.16.0 (*) +| | | | +--- androidx.privacysandbox.ads:ads-adservices:1.1.0-beta11 +| | | | | +--- androidx.annotation:annotation:1.8.1 -> 1.9.1 (*) +| | | | | +--- androidx.core:core-ktx:1.8.0 -> 1.16.0 (*) +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.21 (*) +| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.10.2 (*) +| | | | | \--- androidx.privacysandbox.ads:ads-adservices-java:1.1.0-beta11 (c) +| | | | +--- androidx.privacysandbox.ads:ads-adservices-java:1.1.0-beta11 +| | | | | +--- androidx.annotation:annotation:1.8.1 -> 1.9.1 (*) +| | | | | +--- androidx.concurrent:concurrent-futures:1.1.0 (*) +| | | | | +--- androidx.core:core-ktx:1.8.0 -> 1.16.0 (*) +| | | | | +--- androidx.privacysandbox.ads:ads-adservices:1.1.0-beta11 (*) +| | | | | +--- com.google.guava:listenablefuture:1.0 -> 9999.0-empty-to-avoid-conflict-with-guava +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.21 (*) +| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.10.2 (*) +| | | | | \--- androidx.privacysandbox.ads:ads-adservices:1.1.0-beta11 (c) +| | | | +--- com.google.android.gms:play-services-ads-identifier:18.0.0 (*) +| | | | +--- com.google.android.gms:play-services-base:18.5.0 +| | | | | +--- androidx.collection:collection:1.0.0 -> 1.5.0 (*) +| | | | | +--- androidx.core:core:1.2.0 -> 1.16.0 (*) +| | | | | +--- androidx.fragment:fragment:1.0.0 -> 1.8.8 (*) +| | | | | +--- com.google.android.gms:play-services-basement:18.4.0 -> 18.5.0 (*) +| | | | | \--- com.google.android.gms:play-services-tasks:18.2.0 +| | | | | \--- com.google.android.gms:play-services-basement:18.4.0 -> 18.5.0 (*) +| | | | +--- com.google.android.gms:play-services-basement:18.5.0 (*) +| | | | +--- com.google.android.gms:play-services-measurement-base:22.5.0 (*) +| | | | +--- com.google.android.gms:play-services-stats:17.0.2 +| | | | | +--- androidx.legacy:legacy-support-core-utils:1.0.0 (*) +| | | | | \--- com.google.android.gms:play-services-basement:18.0.0 -> 18.5.0 (*) +| | | | +--- com.google.android.gms:play-services-tasks:18.2.0 (*) +| | | | \--- com.google.guava:guava:31.1-android -> 33.4.8-android +| | | | +--- com.google.guava:failureaccess:1.0.3 +| | | | +--- com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava +| | | | +--- org.jspecify:jspecify:1.0.0 +| | | | +--- com.google.errorprone:error_prone_annotations:2.36.0 +| | | | \--- com.google.j2objc:j2objc-annotations:3.0.0 +| | | +--- com.google.android.gms:play-services-measurement-sdk-api:22.5.0 +| | | | +--- com.google.android.gms:play-services-basement:18.5.0 (*) +| | | | \--- com.google.android.gms:play-services-measurement-base:22.5.0 (*) +| | | \--- com.google.android.gms:play-services-stats:17.0.2 (*) +| | +--- com.google.android.gms:play-services-measurement-api:22.5.0 +| | | +--- com.google.android.gms:play-services-ads-identifier:18.0.0 (*) +| | | +--- com.google.android.gms:play-services-basement:18.5.0 (*) +| | | +--- com.google.android.gms:play-services-measurement-base:22.5.0 (*) +| | | +--- com.google.android.gms:play-services-measurement-sdk-api:22.5.0 (*) +| | | +--- com.google.android.gms:play-services-tasks:18.2.0 (*) +| | | +--- com.google.firebase:firebase-common:21.0.0 +| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.6.4 -> 1.10.2 +| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 (*) +| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.10.2 (*) +| | | | | +--- com.google.android.gms:play-services-tasks:16.0.1 -> 18.2.0 (*) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 -> 2.1.21 (*) +| | | | +--- com.google.firebase:firebase-components:18.0.0 +| | | | | +--- com.google.firebase:firebase-annotations:16.2.0 +| | | | | | \--- javax.inject:javax.inject:1 +| | | | | +--- androidx.annotation:annotation:1.5.0 -> 1.9.1 (*) +| | | | | \--- com.google.errorprone:error_prone_annotations:2.26.0 -> 2.36.0 +| | | | +--- com.google.firebase:firebase-annotations:16.2.0 (*) +| | | | +--- androidx.annotation:annotation:1.5.0 -> 1.9.1 (*) +| | | | +--- androidx.concurrent:concurrent-futures:1.1.0 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.21 (*) +| | | | +--- com.google.android.gms:play-services-basement:18.3.0 -> 18.5.0 (*) +| | | | \--- com.google.android.gms:play-services-tasks:18.1.0 -> 18.2.0 (*) +| | | +--- com.google.firebase:firebase-common-ktx:21.0.0 +| | | | +--- com.google.firebase:firebase-common:21.0.0 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.22 +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.21 (*) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.22 -> 1.9.0 +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.0 -> 2.1.21 (*) +| | | | +--- com.google.firebase:firebase-components:18.0.0 (*) +| | | | \--- com.google.firebase:firebase-annotations:16.2.0 (*) +| | | +--- com.google.firebase:firebase-components:18.0.0 (*) +| | | +--- com.google.firebase:firebase-installations:17.0.1 -> 18.0.0 +| | | | +--- com.google.android.gms:play-services-tasks:18.0.1 -> 18.2.0 (*) +| | | | +--- com.google.firebase:firebase-annotations:16.2.0 (*) +| | | | +--- com.google.firebase:firebase-common:21.0.0 (*) +| | | | +--- com.google.firebase:firebase-common-ktx:21.0.0 (*) +| | | | +--- com.google.firebase:firebase-components:18.0.0 (*) +| | | | +--- com.google.firebase:firebase-installations-interop:17.1.1 -> 17.2.0 +| | | | | +--- com.google.android.gms:play-services-tasks:18.0.1 -> 18.2.0 (*) +| | | | | \--- com.google.firebase:firebase-annotations:16.2.0 (*) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.21 (*) +| | | +--- com.google.firebase:firebase-installations-interop:17.0.0 -> 17.2.0 (*) +| | | +--- com.google.firebase:firebase-measurement-connector:19.0.0 -> 20.0.1 +| | | | +--- com.google.android.gms:play-services-basement:18.0.0 -> 18.5.0 (*) +| | | | \--- com.google.firebase:firebase-annotations:16.0.0 -> 16.2.0 (*) +| | | +--- com.google.guava:guava:31.1-android -> 33.4.8-android (*) +| | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.0 -> 2.1.21 (*) +| | \--- com.google.android.gms:play-services-measurement-sdk:22.5.0 +| | +--- androidx.collection:collection:1.0.0 -> 1.5.0 (*) +| | +--- com.google.android.gms:play-services-basement:18.5.0 (*) +| | +--- com.google.android.gms:play-services-measurement-base:22.5.0 (*) +| | \--- com.google.android.gms:play-services-measurement-impl:22.5.0 (*) +| +--- com.google.firebase:firebase-common:21.0.0 (*) +| +--- com.google.firebase:firebase-common-ktx:21.0.0 (*) +| +--- com.google.firebase:firebase-components:18.0.0 (*) +| \--- org.jetbrains.kotlin:kotlin-stdlib:1.7.10 -> 2.1.21 (*) ++--- com.google.firebase:firebase-crashlytics-ktx -> 19.4.4 +| +--- com.google.firebase:firebase-crashlytics:19.4.4 +| | +--- com.google.firebase:firebase-sessions:2.1.2 +| | | +--- com.google.firebase:firebase-common:21.0.0 (*) +| | | +--- com.google.firebase:firebase-common-ktx:21.0.0 (*) +| | | +--- com.google.firebase:firebase-components:18.0.0 (*) +| | | +--- com.google.firebase:firebase-installations-interop:17.2.0 (*) +| | | +--- com.google.firebase:firebase-annotations:16.2.0 (*) +| | | +--- com.google.firebase:firebase-encoders:17.0.0 +| | | | \--- androidx.annotation:annotation:1.1.0 -> 1.9.1 (*) +| | | +--- com.google.firebase:firebase-encoders-json:18.0.1 +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.10 -> 1.8.22 (*) +| | | | +--- androidx.annotation:annotation:1.1.0 -> 1.9.1 (*) +| | | | \--- com.google.firebase:firebase-encoders:17.0.0 (*) +| | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.22 (*) +| | | +--- com.google.firebase:firebase-installations:18.0.0 (*) +| | | +--- com.google.firebase:firebase-datatransport:19.0.0 +| | | | +--- androidx.annotation:annotation:1.1.0 -> 1.9.1 (*) +| | | | +--- com.google.android.datatransport:transport-api:3.1.0 -> 3.2.0 +| | | | | \--- androidx.annotation:annotation:1.1.0 -> 1.9.1 (*) +| | | | +--- com.google.android.datatransport:transport-backend-cct:3.2.0 -> 3.3.0 +| | | | | +--- com.google.android.datatransport:transport-api:3.2.0 (*) +| | | | | +--- com.google.android.datatransport:transport-runtime:3.3.0 +| | | | | | +--- com.google.android.datatransport:transport-api:3.2.0 (*) +| | | | | | +--- androidx.annotation:annotation:1.3.0 -> 1.9.1 (*) +| | | | | | +--- javax.inject:javax.inject:1 +| | | | | | +--- com.google.firebase:firebase-encoders:17.0.0 (*) +| | | | | | \--- com.google.firebase:firebase-encoders-proto:16.0.0 +| | | | | | +--- androidx.annotation:annotation:1.1.0 -> 1.9.1 (*) +| | | | | | \--- com.google.firebase:firebase-encoders:17.0.0 (*) +| | | | | +--- com.google.firebase:firebase-encoders:17.0.0 (*) +| | | | | +--- com.google.firebase:firebase-encoders-json:18.0.0 -> 18.0.1 (*) +| | | | | \--- androidx.annotation:annotation:1.1.0 -> 1.9.1 (*) +| | | | +--- com.google.android.datatransport:transport-runtime:3.2.0 -> 3.3.0 (*) +| | | | \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.22 (*) +| | | +--- com.google.android.datatransport:transport-api:3.2.0 (*) +| | | +--- javax.inject:javax.inject:1 +| | | +--- androidx.annotation:annotation:1.5.0 -> 1.9.1 (*) +| | | \--- androidx.datastore:datastore-preferences:1.1.3 +| | | \--- androidx.datastore:datastore-preferences-android:1.1.3 +| | | +--- androidx.datastore:datastore:1.1.3 +| | | | \--- androidx.datastore:datastore-android:1.1.3 +| | | | +--- androidx.annotation:annotation:1.2.0 -> 1.9.1 (*) +| | | | +--- androidx.datastore:datastore-core:1.1.3 +| | | | | \--- androidx.datastore:datastore-core-android:1.1.3 +| | | | | +--- androidx.annotation:annotation:1.7.0 -> 1.9.1 (*) +| | | | | +--- org.jetbrains.kotlin:kotlin-parcelize-runtime:1.9.22 -> 2.1.20 +| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 -> 2.1.21 (*) +| | | | | | \--- org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.1.20 +| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 -> 2.1.21 (*) +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.21 (*) +| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.10.2 (*) +| | | | | +--- androidx.datastore:datastore:1.1.3 (c) +| | | | | +--- androidx.datastore:datastore-core-okio:1.1.3 (c) +| | | | | +--- androidx.datastore:datastore-preferences:1.1.3 (c) +| | | | | +--- androidx.datastore:datastore-preferences-core:1.1.3 (c) +| | | | | +--- androidx.datastore:datastore-preferences-external-protobuf:1.1.3 (c) +| | | | | \--- androidx.datastore:datastore-preferences-proto:1.1.3 (c) +| | | | +--- androidx.datastore:datastore-core-okio:1.1.3 +| | | | | \--- androidx.datastore:datastore-core-okio-jvm:1.1.3 +| | | | | +--- androidx.datastore:datastore-core:1.1.3 (*) +| | | | | +--- com.squareup.okio:okio:3.4.0 -> 3.15.0 +| | | | | | \--- com.squareup.okio:okio-jvm:3.15.0 +| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.21 (*) +| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.21 (*) +| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.10.2 (*) +| | | | | +--- androidx.datastore:datastore:1.1.3 (c) +| | | | | +--- androidx.datastore:datastore-core:1.1.3 (c) +| | | | | +--- androidx.datastore:datastore-preferences:1.1.3 (c) +| | | | | +--- androidx.datastore:datastore-preferences-core:1.1.3 (c) +| | | | | +--- androidx.datastore:datastore-preferences-external-protobuf:1.1.3 (c) +| | | | | \--- androidx.datastore:datastore-preferences-proto:1.1.3 (c) +| | | | +--- com.squareup.okio:okio:3.4.0 -> 3.15.0 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.21 (*) +| | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.10.2 (*) +| | | | +--- androidx.datastore:datastore-core:1.1.3 (c) +| | | | +--- androidx.datastore:datastore-core-okio:1.1.3 (c) +| | | | +--- androidx.datastore:datastore-preferences:1.1.3 (c) +| | | | +--- androidx.datastore:datastore-preferences-core:1.1.3 (c) +| | | | +--- androidx.datastore:datastore-preferences-proto:1.1.3 (c) +| | | | \--- androidx.datastore:datastore-preferences-external-protobuf:1.1.3 (c) +| | | +--- androidx.datastore:datastore-preferences-core:1.1.3 +| | | | \--- androidx.datastore:datastore-preferences-core-jvm:1.1.3 +| | | | +--- androidx.datastore:datastore-core:1.1.3 (*) +| | | | +--- androidx.datastore:datastore-core-okio:1.1.3 (*) +| | | | +--- androidx.datastore:datastore-preferences-proto:1.1.3 +| | | | | +--- androidx.datastore:datastore-preferences-external-protobuf:1.1.3 +| | | | | | +--- androidx.datastore:datastore:1.1.3 (c) +| | | | | | +--- androidx.datastore:datastore-core:1.1.3 (c) +| | | | | | +--- androidx.datastore:datastore-core-okio:1.1.3 (c) +| | | | | | +--- androidx.datastore:datastore-preferences:1.1.3 (c) +| | | | | | +--- androidx.datastore:datastore-preferences-core:1.1.3 (c) +| | | | | | \--- androidx.datastore:datastore-preferences-proto:1.1.3 (c) +| | | | | +--- androidx.datastore:datastore:1.1.3 (c) +| | | | | +--- androidx.datastore:datastore-core:1.1.3 (c) +| | | | | +--- androidx.datastore:datastore-core-okio:1.1.3 (c) +| | | | | +--- androidx.datastore:datastore-preferences:1.1.3 (c) +| | | | | +--- androidx.datastore:datastore-preferences-core:1.1.3 (c) +| | | | | \--- androidx.datastore:datastore-preferences-external-protobuf:1.1.3 (c) +| | | | +--- com.squareup.okio:okio:3.4.0 -> 3.15.0 (*) +| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.21 (*) +| | | | +--- androidx.datastore:datastore:1.1.3 (c) +| | | | +--- androidx.datastore:datastore-core:1.1.3 (c) +| | | | +--- androidx.datastore:datastore-core-okio:1.1.3 (c) +| | | | +--- androidx.datastore:datastore-preferences:1.1.3 (c) +| | | | +--- androidx.datastore:datastore-preferences-proto:1.1.3 (c) +| | | | \--- androidx.datastore:datastore-preferences-external-protobuf:1.1.3 (c) +| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.21 (*) +| | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.10.2 (*) +| | | +--- androidx.datastore:datastore:1.1.3 (c) +| | | +--- androidx.datastore:datastore-preferences-core:1.1.3 (c) +| | | +--- androidx.datastore:datastore-core:1.1.3 (c) +| | | +--- androidx.datastore:datastore-core-okio:1.1.3 (c) +| | | +--- androidx.datastore:datastore-preferences-proto:1.1.3 (c) +| | | \--- androidx.datastore:datastore-preferences-external-protobuf:1.1.3 (c) +| | +--- com.google.android.gms:play-services-tasks:18.1.0 -> 18.2.0 (*) +| | +--- com.google.firebase:firebase-annotations:16.2.0 (*) +| | +--- com.google.firebase:firebase-common:21.0.0 (*) +| | +--- com.google.firebase:firebase-common-ktx:21.0.0 (*) +| | +--- com.google.firebase:firebase-components:18.0.0 (*) +| | +--- com.google.firebase:firebase-config-interop:16.0.1 +| | | +--- com.google.firebase:firebase-encoders-json:18.0.1 (*) +| | | \--- com.google.firebase:firebase-encoders:17.0.0 (*) +| | +--- com.google.firebase:firebase-encoders:17.0.0 (*) +| | +--- com.google.firebase:firebase-encoders-json:18.0.1 (*) +| | +--- com.google.firebase:firebase-installations:18.0.0 (*) +| | +--- com.google.firebase:firebase-installations-interop:17.2.0 (*) +| | +--- com.google.firebase:firebase-measurement-connector:20.0.1 (*) +| | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.22 (*) +| | +--- com.google.android.datatransport:transport-api:3.2.0 (*) +| | +--- com.google.android.datatransport:transport-backend-cct:3.3.0 (*) +| | +--- com.google.android.datatransport:transport-runtime:3.3.0 (*) +| | \--- androidx.annotation:annotation:1.5.0 -> 1.9.1 (*) +| +--- com.google.firebase:firebase-common:21.0.0 (*) +| +--- com.google.firebase:firebase-common-ktx:21.0.0 (*) +| +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.22 (*) +| \--- com.google.firebase:firebase-components:18.0.0 (*) +--- androidx.compose:compose-bom:2025.07.00 | +--- androidx.compose.material3:material3:1.3.2 (c) | +--- androidx.compose.material3.adaptive:adaptive:1.1.0 (c) @@ -277,8 +655,7 @@ | +--- androidx.annotation:annotation:1.8.1 -> 1.9.1 (*) | +--- androidx.compose.runtime:runtime:1.8.3 | | \--- androidx.compose.runtime:runtime-android:1.8.3 -| | +--- androidx.annotation:annotation-experimental:1.4.1 -| | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.7.10 -> 2.1.21 (*) +| | +--- androidx.annotation:annotation-experimental:1.4.1 (*) | | +--- androidx.collection:collection:1.5.0 (*) | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.1.21 (*) | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3 -> 1.10.2 (*) @@ -319,89 +696,7 @@ | | +--- androidx.compose.ui:ui:1.7.8 -> 1.8.3 | | | \--- androidx.compose.ui:ui-android:1.8.3 | | | +--- androidx.activity:activity-ktx:1.7.0 -> 1.10.1 -| | | | +--- androidx.activity:activity:1.10.1 -| | | | | +--- androidx.annotation:annotation:1.8.1 -> 1.9.1 (*) -| | | | | +--- androidx.core:core-ktx:1.13.0 -> 1.16.0 -| | | | | | +--- androidx.annotation:annotation:1.8.1 -> 1.9.1 (*) -| | | | | | +--- androidx.core:core:1.16.0 -| | | | | | | +--- androidx.annotation:annotation:1.8.1 -> 1.9.1 (*) -| | | | | | | +--- androidx.annotation:annotation-experimental:1.4.1 (*) -| | | | | | | +--- androidx.collection:collection:1.4.2 -> 1.5.0 (*) -| | | | | | | +--- androidx.concurrent:concurrent-futures:1.0.0 -> 1.1.0 (*) -| | | | | | | +--- androidx.core:core-viewtree:1.0.0 (*) -| | | | | | | +--- androidx.interpolator:interpolator:1.0.0 -| | | | | | | | \--- androidx.annotation:annotation:1.0.0 -> 1.9.1 (*) -| | | | | | | +--- androidx.lifecycle:lifecycle-runtime:2.6.2 -> 2.9.2 (*) -| | | | | | | +--- androidx.tracing:tracing:1.2.0 -> 1.3.0 (*) -| | | | | | | +--- androidx.versionedparcelable:versionedparcelable:1.1.1 -| | | | | | | | +--- androidx.annotation:annotation:1.1.0 -> 1.9.1 (*) -| | | | | | | | \--- androidx.collection:collection:1.0.0 -> 1.5.0 (*) -| | | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.1.21 (*) -| | | | | | | +--- org.jspecify:jspecify:1.0.0 -| | | | | | | +--- androidx.core:core-ktx:1.16.0 (c) -| | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.21 (c) -| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.1.21 (*) -| | | | | | +--- androidx.core:core:1.16.0 (c) -| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.21 (c) -| | | | | +--- androidx.core:core-viewtree:1.0.0 (*) -| | | | | +--- androidx.lifecycle:lifecycle-common:2.6.1 -> 2.9.2 (*) -| | | | | +--- androidx.lifecycle:lifecycle-runtime:2.6.1 -> 2.9.2 (*) -| | | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.6.1 -> 2.9.2 (*) -| | | | | +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.6.1 -> 2.9.2 -| | | | | | \--- androidx.lifecycle:lifecycle-viewmodel-savedstate-android:2.9.2 -| | | | | | +--- androidx.annotation:annotation:1.9.1 (*) -| | | | | | +--- androidx.core:core-ktx:1.2.0 -> 1.16.0 (*) -| | | | | | +--- androidx.lifecycle:lifecycle-common:2.9.2 (*) -| | | | | | +--- androidx.lifecycle:lifecycle-livedata-core:2.9.2 (*) -| | | | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.9.2 (*) -| | | | | | +--- androidx.savedstate:savedstate:1.3.1 -| | | | | | | \--- androidx.savedstate:savedstate-android:1.3.1 -| | | | | | | +--- androidx.annotation:annotation:1.8.1 -> 1.9.1 (*) -| | | | | | | +--- androidx.annotation:annotation:1.9.1 (*) -| | | | | | | +--- androidx.core:core-ktx:1.13.1 -> 1.16.0 (*) -| | | | | | | +--- androidx.core:core-viewtree:1.0.0 (*) -| | | | | | | +--- androidx.lifecycle:lifecycle-common:2.9.2 (*) -| | | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.1.21 (*) -| | | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1 -> 1.10.2 (*) -| | | | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3 -> 1.8.0 -| | | | | | | | \--- org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.0 -| | | | | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.0 -| | | | | | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.0 (c) -| | | | | | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0 (c) -| | | | | | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.8.0 (c) -| | | | | | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0 (c) -| | | | | | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json-io-jvm:1.8.0 (c) -| | | | | | | | | \--- org.jetbrains.kotlinx:kotlinx-serialization-json-io:1.8.0 (c) -| | | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 -> 2.1.21 (*) -| | | | | | | +--- androidx.savedstate:savedstate-compose:1.3.1 (c) -| | | | | | | +--- androidx.savedstate:savedstate-ktx:1.3.1 (c) -| | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.1.21 (c) -| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.1.21 (*) -| | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.1 -> 1.10.2 (*) -| | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1 -> 1.10.2 (*) -| | | | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3 -> 1.8.0 (*) -| | | | | | +--- androidx.lifecycle:lifecycle-common:2.9.2 (c) -| | | | | | +--- androidx.lifecycle:lifecycle-common-java8:2.9.2 (c) -| | | | | | +--- androidx.lifecycle:lifecycle-livedata:2.9.2 (c) -| | | | | | +--- androidx.lifecycle:lifecycle-livedata-core:2.9.2 (c) -| | | | | | +--- androidx.lifecycle:lifecycle-livedata-core-ktx:2.9.2 (c) -| | | | | | +--- androidx.lifecycle:lifecycle-process:2.9.2 (c) -| | | | | | +--- androidx.lifecycle:lifecycle-runtime:2.9.2 (c) -| | | | | | +--- androidx.lifecycle:lifecycle-runtime-compose:2.9.2 (c) -| | | | | | +--- androidx.lifecycle:lifecycle-runtime-ktx:2.9.2 (c) -| | | | | | +--- androidx.lifecycle:lifecycle-service:2.9.2 (c) -| | | | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.9.2 (c) -| | | | | | +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.9.2 (c) -| | | | | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.9.2 (c) -| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.1.21 (c) -| | | | | +--- androidx.profileinstaller:profileinstaller:1.4.0 -> 1.4.1 (*) -| | | | | +--- androidx.savedstate:savedstate:1.2.1 -> 1.3.1 (*) -| | | | | +--- androidx.tracing:tracing:1.0.0 -> 1.3.0 (*) -| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.1.21 (*) -| | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.10.2 (*) -| | | | | +--- androidx.activity:activity-compose:1.10.1 (c) -| | | | | +--- androidx.activity:activity-ktx:1.10.1 (c) -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.21 (c) +| | | | +--- androidx.activity:activity:1.10.1 (*) | | | | +--- androidx.lifecycle:lifecycle-runtime-ktx:2.6.1 -> 2.9.2 (*) | | | | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1 -> 2.9.2 | | | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.9.2 (*) @@ -656,40 +951,14 @@ | | | +--- androidx.drawerlayout:drawerlayout:1.0.0 | | | | +--- androidx.annotation:annotation:1.0.0 -> 1.9.1 (*) | | | | +--- androidx.core:core:1.0.0 -> 1.16.0 (*) -| | | | \--- androidx.customview:customview:1.0.0 -> 1.1.0 -| | | | +--- androidx.annotation:annotation:1.1.0 -> 1.9.1 (*) -| | | | +--- androidx.core:core:1.3.0 -> 1.16.0 (*) -| | | | \--- androidx.collection:collection:1.1.0 -> 1.5.0 (*) +| | | | \--- androidx.customview:customview:1.0.0 -> 1.1.0 (*) | | | +--- androidx.emoji2:emoji2:1.3.0 -> 1.4.0 (*) | | | +--- androidx.emoji2:emoji2-views-helper:1.2.0 -> 1.4.0 | | | | +--- androidx.collection:collection:1.1.0 -> 1.5.0 (*) | | | | +--- androidx.core:core:1.3.0 -> 1.16.0 (*) | | | | +--- androidx.emoji2:emoji2:1.4.0 (*) | | | | \--- androidx.emoji2:emoji2:1.4.0 (c) -| | | +--- androidx.fragment:fragment:1.5.4 -> 1.8.8 -| | | | +--- androidx.activity:activity:1.8.1 -> 1.10.1 (*) -| | | | +--- androidx.annotation:annotation:1.1.0 -> 1.9.1 (*) -| | | | +--- androidx.annotation:annotation-experimental:1.4.0 -> 1.4.1 (*) -| | | | +--- androidx.collection:collection:1.1.0 -> 1.5.0 (*) -| | | | +--- androidx.core:core-ktx:1.2.0 -> 1.16.0 (*) -| | | | +--- androidx.lifecycle:lifecycle-livedata-core:2.6.1 -> 2.9.2 (*) -| | | | +--- androidx.lifecycle:lifecycle-runtime:2.6.1 -> 2.9.2 (*) -| | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.6.1 -> 2.9.2 (*) -| | | | +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.6.1 -> 2.9.2 (*) -| | | | +--- androidx.loader:loader:1.0.0 -> 1.1.0 -| | | | | +--- androidx.annotation:annotation:1.0.0 -> 1.9.1 (*) -| | | | | +--- androidx.core:core:1.0.0 -> 1.16.0 (*) -| | | | | +--- androidx.lifecycle:lifecycle-livedata-core:2.0.0 -> 2.9.2 (*) -| | | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.0.0 -> 2.9.2 (*) -| | | | | \--- androidx.collection:collection:1.0.0 -> 1.5.0 (*) -| | | | +--- androidx.profileinstaller:profileinstaller:1.3.1 -> 1.4.1 (*) -| | | | +--- androidx.savedstate:savedstate:1.2.1 -> 1.3.1 (*) -| | | | +--- androidx.viewpager:viewpager:1.0.0 -| | | | | +--- androidx.annotation:annotation:1.0.0 -> 1.9.1 (*) -| | | | | +--- androidx.core:core:1.0.0 -> 1.16.0 (*) -| | | | | \--- androidx.customview:customview:1.0.0 -> 1.1.0 (*) -| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.21 (*) -| | | | \--- androidx.fragment:fragment-ktx:1.8.8 (c) +| | | +--- androidx.fragment:fragment:1.5.4 -> 1.8.8 (*) | | | +--- androidx.lifecycle:lifecycle-runtime:2.6.1 -> 2.9.2 (*) | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.6.1 -> 2.9.2 (*) | | | +--- androidx.profileinstaller:profileinstaller:1.3.1 -> 1.4.1 (*) @@ -1011,9 +1280,7 @@ | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.2 (*) | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 (*) | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib -> 2.1.21 (*) -| | | | | +--- com.squareup.okio:okio:3.11.0 -> 3.15.0 -| | | | | | \--- com.squareup.okio:okio-jvm:3.15.0 -| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.21 (*) +| | | | | +--- com.squareup.okio:okio:3.11.0 -> 3.15.0 (*) | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 -> 2.1.21 (c) | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 -> 2.1.21 (*) | | | +--- io.coil-kt.coil3:coil-core:3.2.0 (*) @@ -1143,10 +1410,7 @@ | | | +--- org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.8 | | | | \--- org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3.8 | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.21 -> 2.1.21 (*) -| | | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.20 -| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 -> 2.1.21 (*) -| | | \--- org.jetbrains.kotlin:kotlin-android-extensions-runtime:2.1.20 -| | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 -> 2.1.21 (*) +| | | \--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.1.20 (*) | | +--- project :core:datastore | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 -> 2.1.21 (*) | | | +--- io.insert-koin:koin-bom:4.1.0 (*) @@ -1188,10 +1452,7 @@ | | | | +--- io.ktor:ktor-client-core:3.1.2 (*) | | | | +--- com.squareup.okhttp3:okhttp:4.12.0 | | | | | +--- com.squareup.okio:okio:3.6.0 -> 3.15.0 (*) -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.21 -> 1.8.22 -| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.21 (*) -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.22 -> 1.9.0 -| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.0 -> 2.1.21 (*) +| | | | | \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.21 -> 1.8.22 (*) | | | | +--- com.squareup.okhttp3:okhttp-sse:4.12.0 | | | | | +--- com.squareup.okhttp3:okhttp:4.12.0 (*) | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.21 -> 1.8.22 (*) @@ -1279,133 +1540,8 @@ | | +--- io.insert-koin:koin-core:4.1.0 (*) | | +--- io.insert-koin:koin-annotations:2.1.0 (*) | | +--- project :core:analytics -| | | +--- com.google.firebase:firebase-bom:33.16.0 -| | | | +--- com.google.firebase:firebase-analytics-ktx:22.5.0 (c) -| | | | +--- com.google.firebase:firebase-encoders:17.0.0 (c) -| | | | +--- com.google.firebase:firebase-analytics:22.5.0 (c) -| | | | +--- com.google.firebase:firebase-common:21.0.0 (c) -| | | | +--- com.google.firebase:firebase-common-ktx:21.0.0 (c) -| | | | \--- com.google.firebase:firebase-installations:18.0.0 (c) -| | | +--- com.google.firebase:firebase-analytics-ktx -> 22.5.0 -| | | | +--- com.google.firebase:firebase-analytics:22.5.0 -| | | | | +--- com.google.android.gms:play-services-measurement:22.5.0 -| | | | | | +--- androidx.collection:collection:1.0.0 -> 1.5.0 (*) -| | | | | | +--- androidx.legacy:legacy-support-core-utils:1.0.0 -| | | | | | | +--- androidx.annotation:annotation:1.0.0 -> 1.9.1 (*) -| | | | | | | +--- androidx.core:core:1.0.0 -> 1.16.0 (*) -| | | | | | | +--- androidx.documentfile:documentfile:1.0.0 -> 1.1.0 -| | | | | | | | +--- androidx.annotation:annotation:1.8.1 -> 1.9.1 (*) -| | | | | | | | +--- androidx.core:core:1.7.0 -> 1.16.0 (*) -| | | | | | | | \--- org.jspecify:jspecify:1.0.0 -| | | | | | | +--- androidx.loader:loader:1.0.0 -> 1.1.0 (*) -| | | | | | | +--- androidx.localbroadcastmanager:localbroadcastmanager:1.0.0 -| | | | | | | | \--- androidx.annotation:annotation:1.0.0 -> 1.9.1 (*) -| | | | | | | \--- androidx.print:print:1.0.0 -| | | | | | | \--- androidx.annotation:annotation:1.0.0 -> 1.9.1 (*) -| | | | | | +--- com.google.android.gms:play-services-ads-identifier:18.0.0 -| | | | | | | \--- com.google.android.gms:play-services-basement:18.0.0 -> 18.5.0 -| | | | | | | +--- androidx.collection:collection:1.0.0 -> 1.5.0 (*) -| | | | | | | +--- androidx.core:core:1.2.0 -> 1.16.0 (*) -| | | | | | | \--- androidx.fragment:fragment:1.1.0 -> 1.8.8 (*) -| | | | | | +--- com.google.android.gms:play-services-basement:18.5.0 (*) -| | | | | | +--- com.google.android.gms:play-services-measurement-base:22.5.0 -| | | | | | | \--- com.google.android.gms:play-services-basement:18.5.0 (*) -| | | | | | +--- com.google.android.gms:play-services-measurement-impl:22.5.0 -| | | | | | | +--- androidx.collection:collection:1.0.0 -> 1.5.0 (*) -| | | | | | | +--- androidx.core:core:1.9.0 -> 1.16.0 (*) -| | | | | | | +--- androidx.privacysandbox.ads:ads-adservices:1.1.0-beta11 -| | | | | | | | +--- androidx.annotation:annotation:1.8.1 -> 1.9.1 (*) -| | | | | | | | +--- androidx.core:core-ktx:1.8.0 -> 1.16.0 (*) -| | | | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.21 (*) -| | | | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.10.2 (*) -| | | | | | | | \--- androidx.privacysandbox.ads:ads-adservices-java:1.1.0-beta11 (c) -| | | | | | | +--- androidx.privacysandbox.ads:ads-adservices-java:1.1.0-beta11 -| | | | | | | | +--- androidx.annotation:annotation:1.8.1 -> 1.9.1 (*) -| | | | | | | | +--- androidx.concurrent:concurrent-futures:1.1.0 (*) -| | | | | | | | +--- androidx.core:core-ktx:1.8.0 -> 1.16.0 (*) -| | | | | | | | +--- androidx.privacysandbox.ads:ads-adservices:1.1.0-beta11 (*) -| | | | | | | | +--- com.google.guava:listenablefuture:1.0 -> 9999.0-empty-to-avoid-conflict-with-guava -| | | | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.21 (*) -| | | | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 -> 1.10.2 (*) -| | | | | | | | \--- androidx.privacysandbox.ads:ads-adservices:1.1.0-beta11 (c) -| | | | | | | +--- com.google.android.gms:play-services-ads-identifier:18.0.0 (*) -| | | | | | | +--- com.google.android.gms:play-services-base:18.5.0 -| | | | | | | | +--- androidx.collection:collection:1.0.0 -> 1.5.0 (*) -| | | | | | | | +--- androidx.core:core:1.2.0 -> 1.16.0 (*) -| | | | | | | | +--- androidx.fragment:fragment:1.0.0 -> 1.8.8 (*) -| | | | | | | | +--- com.google.android.gms:play-services-basement:18.4.0 -> 18.5.0 (*) -| | | | | | | | \--- com.google.android.gms:play-services-tasks:18.2.0 -| | | | | | | | \--- com.google.android.gms:play-services-basement:18.4.0 -> 18.5.0 (*) -| | | | | | | +--- com.google.android.gms:play-services-basement:18.5.0 (*) -| | | | | | | +--- com.google.android.gms:play-services-measurement-base:22.5.0 (*) -| | | | | | | +--- com.google.android.gms:play-services-stats:17.0.2 -| | | | | | | | +--- androidx.legacy:legacy-support-core-utils:1.0.0 (*) -| | | | | | | | \--- com.google.android.gms:play-services-basement:18.0.0 -> 18.5.0 (*) -| | | | | | | +--- com.google.android.gms:play-services-tasks:18.2.0 (*) -| | | | | | | \--- com.google.guava:guava:31.1-android -> 33.4.8-android -| | | | | | | +--- com.google.guava:failureaccess:1.0.3 -| | | | | | | +--- com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava -| | | | | | | +--- org.jspecify:jspecify:1.0.0 -| | | | | | | +--- com.google.errorprone:error_prone_annotations:2.36.0 -| | | | | | | \--- com.google.j2objc:j2objc-annotations:3.0.0 -| | | | | | +--- com.google.android.gms:play-services-measurement-sdk-api:22.5.0 -| | | | | | | +--- com.google.android.gms:play-services-basement:18.5.0 (*) -| | | | | | | \--- com.google.android.gms:play-services-measurement-base:22.5.0 (*) -| | | | | | \--- com.google.android.gms:play-services-stats:17.0.2 (*) -| | | | | +--- com.google.android.gms:play-services-measurement-api:22.5.0 -| | | | | | +--- com.google.android.gms:play-services-ads-identifier:18.0.0 (*) -| | | | | | +--- com.google.android.gms:play-services-basement:18.5.0 (*) -| | | | | | +--- com.google.android.gms:play-services-measurement-base:22.5.0 (*) -| | | | | | +--- com.google.android.gms:play-services-measurement-sdk-api:22.5.0 (*) -| | | | | | +--- com.google.android.gms:play-services-tasks:18.2.0 (*) -| | | | | | +--- com.google.firebase:firebase-common:21.0.0 -| | | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.6.4 -> 1.10.2 -| | | | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 (*) -| | | | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.10.2 (*) -| | | | | | | | +--- com.google.android.gms:play-services-tasks:16.0.1 -> 18.2.0 (*) -| | | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 -> 2.1.21 (*) -| | | | | | | +--- com.google.firebase:firebase-components:18.0.0 -| | | | | | | | +--- com.google.firebase:firebase-annotations:16.2.0 -| | | | | | | | | \--- javax.inject:javax.inject:1 -| | | | | | | | +--- androidx.annotation:annotation:1.5.0 -> 1.9.1 (*) -| | | | | | | | \--- com.google.errorprone:error_prone_annotations:2.26.0 -> 2.36.0 -| | | | | | | +--- com.google.firebase:firebase-annotations:16.2.0 (*) -| | | | | | | +--- androidx.annotation:annotation:1.5.0 -> 1.9.1 (*) -| | | | | | | +--- androidx.concurrent:concurrent-futures:1.1.0 (*) -| | | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.21 (*) -| | | | | | | +--- com.google.android.gms:play-services-basement:18.3.0 -> 18.5.0 (*) -| | | | | | | \--- com.google.android.gms:play-services-tasks:18.1.0 -> 18.2.0 (*) -| | | | | | +--- com.google.firebase:firebase-common-ktx:21.0.0 -| | | | | | | +--- com.google.firebase:firebase-common:21.0.0 (*) -| | | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.22 (*) -| | | | | | | +--- com.google.firebase:firebase-components:18.0.0 (*) -| | | | | | | \--- com.google.firebase:firebase-annotations:16.2.0 (*) -| | | | | | +--- com.google.firebase:firebase-components:18.0.0 (*) -| | | | | | +--- com.google.firebase:firebase-installations:17.0.1 -> 18.0.0 -| | | | | | | +--- com.google.android.gms:play-services-tasks:18.0.1 -> 18.2.0 (*) -| | | | | | | +--- com.google.firebase:firebase-annotations:16.2.0 (*) -| | | | | | | +--- com.google.firebase:firebase-common:21.0.0 (*) -| | | | | | | +--- com.google.firebase:firebase-common-ktx:21.0.0 (*) -| | | | | | | +--- com.google.firebase:firebase-components:18.0.0 (*) -| | | | | | | +--- com.google.firebase:firebase-installations-interop:17.1.1 -| | | | | | | | +--- com.google.android.gms:play-services-tasks:18.0.1 -> 18.2.0 (*) -| | | | | | | | \--- com.google.firebase:firebase-annotations:16.2.0 (*) -| | | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.21 (*) -| | | | | | +--- com.google.firebase:firebase-installations-interop:17.0.0 -> 17.1.1 (*) -| | | | | | +--- com.google.firebase:firebase-measurement-connector:19.0.0 -| | | | | | | +--- com.google.android.gms:play-services-basement:17.0.0 -> 18.5.0 (*) -| | | | | | | \--- com.google.firebase:firebase-annotations:16.0.0 -> 16.2.0 (*) -| | | | | | +--- com.google.guava:guava:31.1-android -> 33.4.8-android (*) -| | | | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.0 -> 2.1.21 (*) -| | | | | \--- com.google.android.gms:play-services-measurement-sdk:22.5.0 -| | | | | +--- androidx.collection:collection:1.0.0 -> 1.5.0 (*) -| | | | | +--- com.google.android.gms:play-services-basement:18.5.0 (*) -| | | | | +--- com.google.android.gms:play-services-measurement-base:22.5.0 (*) -| | | | | \--- com.google.android.gms:play-services-measurement-impl:22.5.0 (*) -| | | | +--- com.google.firebase:firebase-common:21.0.0 (*) -| | | | +--- com.google.firebase:firebase-common-ktx:21.0.0 (*) -| | | | +--- com.google.firebase:firebase-components:18.0.0 (*) -| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.7.10 -> 2.1.21 (*) +| | | +--- com.google.firebase:firebase-bom:33.16.0 (*) +| | | +--- com.google.firebase:firebase-analytics-ktx -> 22.5.0 (*) | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 -> 2.1.21 (*) | | | +--- io.insert-koin:koin-bom:4.1.0 (*) | | | +--- io.insert-koin:koin-core:4.1.0 (*) @@ -2386,53 +2522,41 @@ | | +--- io.insert-koin:koin-core-viewmodel:4.1.0 (*) | | +--- com.google.android.gms:play-services-code-scanner:16.1.0 | | | +--- androidx.activity:activity:1.3.1 -> 1.10.1 (*) -| | | +--- com.google.android.datatransport:transport-api:2.2.1 -| | | | \--- androidx.annotation:annotation:1.1.0 -> 1.9.1 (*) -| | | +--- com.google.android.datatransport:transport-backend-cct:2.3.3 -| | | | +--- androidx.annotation:annotation:1.1.0 -> 1.9.1 (*) -| | | | +--- com.google.android.datatransport:transport-api:2.2.1 (*) -| | | | +--- com.google.android.datatransport:transport-runtime:2.2.5 -> 2.2.6 -| | | | | +--- androidx.annotation:annotation:1.1.0 -> 1.9.1 (*) -| | | | | +--- com.google.android.datatransport:transport-api:2.2.1 (*) -| | | | | \--- javax.inject:javax.inject:1 -| | | | +--- com.google.firebase:firebase-encoders:16.1.0 -> 17.0.0 -| | | | | \--- androidx.annotation:annotation:1.1.0 -> 1.9.1 (*) -| | | | \--- com.google.firebase:firebase-encoders-json:17.1.0 -| | | | +--- androidx.annotation:annotation:1.1.0 -> 1.9.1 (*) -| | | | \--- com.google.firebase:firebase-encoders:16.1.0 -> 17.0.0 (*) -| | | +--- com.google.android.datatransport:transport-runtime:2.2.6 (*) +| | | +--- com.google.android.datatransport:transport-api:2.2.1 -> 3.2.0 (*) +| | | +--- com.google.android.datatransport:transport-backend-cct:2.3.3 -> 3.3.0 (*) +| | | +--- com.google.android.datatransport:transport-runtime:2.2.6 -> 3.3.0 (*) | | | +--- com.google.android.gms:play-services-base:18.1.0 -> 18.5.0 (*) | | | +--- com.google.android.gms:play-services-basement:18.1.0 -> 18.5.0 (*) | | | +--- com.google.android.gms:play-services-tasks:18.0.2 -> 18.2.0 (*) | | | +--- com.google.firebase:firebase-components:16.1.0 -> 18.0.0 (*) | | | +--- com.google.firebase:firebase-encoders:16.1.0 -> 17.0.0 (*) -| | | +--- com.google.firebase:firebase-encoders-json:17.1.0 (*) +| | | +--- com.google.firebase:firebase-encoders-json:17.1.0 -> 18.0.1 (*) | | | +--- com.google.mlkit:barcode-scanning-common:17.0.0 | | | | +--- com.google.android.gms:play-services-basement:18.0.0 -> 18.5.0 (*) | | | | \--- com.google.mlkit:vision-common:17.0.0 -> 17.3.0 | | | | +--- androidx.exifinterface:exifinterface:1.0.0 -> 1.4.1 (*) -| | | | +--- com.google.android.datatransport:transport-api:2.2.1 (*) -| | | | +--- com.google.android.datatransport:transport-backend-cct:2.3.3 (*) -| | | | +--- com.google.android.datatransport:transport-runtime:2.2.6 (*) +| | | | +--- com.google.android.datatransport:transport-api:2.2.1 -> 3.2.0 (*) +| | | | +--- com.google.android.datatransport:transport-backend-cct:2.3.3 -> 3.3.0 (*) +| | | | +--- com.google.android.datatransport:transport-runtime:2.2.6 -> 3.3.0 (*) | | | | +--- com.google.android.gms:play-services-base:18.1.0 -> 18.5.0 (*) | | | | +--- com.google.android.gms:play-services-basement:18.1.0 -> 18.5.0 (*) | | | | +--- com.google.android.gms:play-services-tasks:18.0.2 -> 18.2.0 (*) | | | | +--- com.google.android.odml:image:1.0.0-beta1 | | | | +--- com.google.firebase:firebase-components:16.1.0 -> 18.0.0 (*) | | | | +--- com.google.firebase:firebase-encoders:16.1.0 -> 17.0.0 (*) -| | | | +--- com.google.firebase:firebase-encoders-json:17.1.0 (*) +| | | | +--- com.google.firebase:firebase-encoders-json:17.1.0 -> 18.0.1 (*) | | | | \--- com.google.mlkit:common:18.6.0 -> 18.11.0 | | | | +--- androidx.appcompat:appcompat:1.6.1 -> 1.7.1 (*) | | | | +--- androidx.core:core:1.0.0 -> 1.16.0 (*) -| | | | +--- com.google.android.datatransport:transport-api:2.2.1 (*) -| | | | +--- com.google.android.datatransport:transport-backend-cct:2.3.3 (*) -| | | | +--- com.google.android.datatransport:transport-runtime:2.2.6 (*) +| | | | +--- com.google.android.datatransport:transport-api:2.2.1 -> 3.2.0 (*) +| | | | +--- com.google.android.datatransport:transport-backend-cct:2.3.3 -> 3.3.0 (*) +| | | | +--- com.google.android.datatransport:transport-runtime:2.2.6 -> 3.3.0 (*) | | | | +--- com.google.android.gms:play-services-base:18.5.0 (*) | | | | +--- com.google.android.gms:play-services-basement:18.4.0 -> 18.5.0 (*) | | | | +--- com.google.android.gms:play-services-tasks:18.2.0 (*) | | | | +--- com.google.firebase:firebase-components:16.1.0 -> 18.0.0 (*) | | | | +--- com.google.firebase:firebase-encoders:16.1.0 -> 17.0.0 (*) -| | | | \--- com.google.firebase:firebase-encoders-json:17.1.0 (*) +| | | | \--- com.google.firebase:firebase-encoders-json:17.1.0 -> 18.0.1 (*) | | | \--- com.google.mlkit:common:18.9.0 -> 18.11.0 (*) | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 -> 2.1.21 (*) | | +--- io.insert-koin:koin-core:4.1.0 (*) @@ -2576,16 +2700,16 @@ | | +--- com.google.mlkit:barcode-scanning:17.3.0 | | | +--- com.google.android.gms:play-services-basement:18.4.0 -> 18.5.0 (*) | | | +--- com.google.android.gms:play-services-mlkit-barcode-scanning:18.3.1 -| | | | +--- com.google.android.datatransport:transport-api:2.2.1 (*) -| | | | +--- com.google.android.datatransport:transport-backend-cct:2.3.3 (*) -| | | | +--- com.google.android.datatransport:transport-runtime:2.2.6 (*) +| | | | +--- com.google.android.datatransport:transport-api:2.2.1 -> 3.2.0 (*) +| | | | +--- com.google.android.datatransport:transport-backend-cct:2.3.3 -> 3.3.0 (*) +| | | | +--- com.google.android.datatransport:transport-runtime:2.2.6 -> 3.3.0 (*) | | | | +--- com.google.android.gms:play-services-base:18.5.0 (*) | | | | +--- com.google.android.gms:play-services-basement:18.4.0 -> 18.5.0 (*) | | | | +--- com.google.android.gms:play-services-tasks:18.2.0 (*) | | | | +--- com.google.android.odml:image:1.0.0-beta1 | | | | +--- com.google.firebase:firebase-components:16.1.0 -> 18.0.0 (*) | | | | +--- com.google.firebase:firebase-encoders:16.1.0 -> 17.0.0 (*) -| | | | +--- com.google.firebase:firebase-encoders-json:17.1.0 (*) +| | | | +--- com.google.firebase:firebase-encoders-json:17.1.0 -> 18.0.1 (*) | | | | +--- com.google.mlkit:barcode-scanning-common:17.0.0 (*) | | | | +--- com.google.mlkit:common:18.11.0 (*) | | | | +--- com.google.mlkit:vision-common:17.3.0 (*) diff --git a/cmp-android/dependencies/prodReleaseRuntimeClasspath.txt b/cmp-android/dependencies/prodReleaseRuntimeClasspath.txt index cf2192a1..3812b1b8 100644 --- a/cmp-android/dependencies/prodReleaseRuntimeClasspath.txt +++ b/cmp-android/dependencies/prodReleaseRuntimeClasspath.txt @@ -110,6 +110,18 @@ androidx.databinding:databinding-common:8.11.1 androidx.databinding:databinding-ktx:8.11.1 androidx.databinding:databinding-runtime:8.11.1 androidx.databinding:viewbinding:8.11.1 +androidx.datastore:datastore-android:1.1.3 +androidx.datastore:datastore-core-android:1.1.3 +androidx.datastore:datastore-core-okio-jvm:1.1.3 +androidx.datastore:datastore-core-okio:1.1.3 +androidx.datastore:datastore-core:1.1.3 +androidx.datastore:datastore-preferences-android:1.1.3 +androidx.datastore:datastore-preferences-core-jvm:1.1.3 +androidx.datastore:datastore-preferences-core:1.1.3 +androidx.datastore:datastore-preferences-external-protobuf:1.1.3 +androidx.datastore:datastore-preferences-proto:1.1.3 +androidx.datastore:datastore-preferences:1.1.3 +androidx.datastore:datastore:1.1.3 androidx.documentfile:documentfile:1.1.0 androidx.drawerlayout:drawerlayout:1.0.0 androidx.emoji2:emoji2-views-helper:1.4.0 @@ -196,9 +208,9 @@ com.caverock:androidsvg-aar:1.4 com.google.accompanist:accompanist-drawablepainter:0.37.3 com.google.accompanist:accompanist-pager:0.36.0 com.google.accompanist:accompanist-permissions:0.36.0 -com.google.android.datatransport:transport-api:2.2.1 -com.google.android.datatransport:transport-backend-cct:2.3.3 -com.google.android.datatransport:transport-runtime:2.2.6 +com.google.android.datatransport:transport-api:3.2.0 +com.google.android.datatransport:transport-backend-cct:3.3.0 +com.google.android.datatransport:transport-runtime:3.3.0 com.google.android.gms:play-services-ads-identifier:18.0.0 com.google.android.gms:play-services-auth-api-phone:18.0.2 com.google.android.gms:play-services-auth-base:18.0.10 @@ -229,11 +241,17 @@ com.google.firebase:firebase-bom:33.16.0 com.google.firebase:firebase-common-ktx:21.0.0 com.google.firebase:firebase-common:21.0.0 com.google.firebase:firebase-components:18.0.0 -com.google.firebase:firebase-encoders-json:17.1.0 +com.google.firebase:firebase-config-interop:16.0.1 +com.google.firebase:firebase-crashlytics-ktx:19.4.4 +com.google.firebase:firebase-crashlytics:19.4.4 +com.google.firebase:firebase-datatransport:19.0.0 +com.google.firebase:firebase-encoders-json:18.0.1 +com.google.firebase:firebase-encoders-proto:16.0.0 com.google.firebase:firebase-encoders:17.0.0 -com.google.firebase:firebase-installations-interop:17.1.1 +com.google.firebase:firebase-installations-interop:17.2.0 com.google.firebase:firebase-installations:18.0.0 -com.google.firebase:firebase-measurement-connector:19.0.0 +com.google.firebase:firebase-measurement-connector:20.0.1 +com.google.firebase:firebase-sessions:2.1.2 com.google.guava:failureaccess:1.0.3 com.google.guava:guava:33.4.8-android com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava diff --git a/cmp-android/prodRelease-badging.txt b/cmp-android/prodRelease-badging.txt index e3e00930..3d08c4de 100644 --- a/cmp-android/prodRelease-badging.txt +++ b/cmp-android/prodRelease-badging.txt @@ -1,4 +1,4 @@ -package: name='org.mifospay' versionCode='1' versionName='2025.7.4-beta.0.5' platformBuildVersionName='15' platformBuildVersionCode='35' compileSdkVersion='35' compileSdkVersionCodename='15' +package: name='org.mifospay' versionCode='1' versionName='2025.7.5-beta.0.2' platformBuildVersionName='15' platformBuildVersionCode='35' compileSdkVersion='35' compileSdkVersionCodename='15' minSdkVersion:'26' targetSdkVersion:'34' uses-permission: name='android.permission.INTERNET' diff --git a/cmp-shared/build.gradle.kts b/cmp-shared/build.gradle.kts index cf479cf4..c2b466f2 100644 --- a/cmp-shared/build.gradle.kts +++ b/cmp-shared/build.gradle.kts @@ -9,8 +9,8 @@ */ plugins { - alias(libs.plugins.mifospay.kmp.library) - alias(libs.plugins.mifospay.cmp.feature) + alias(libs.plugins.kmp.library.convention) + alias(libs.plugins.cmp.feature.convention) alias(libs.plugins.android.library) alias(libs.plugins.compose.compiler) alias(libs.plugins.jetbrainsCompose) diff --git a/core/analytics/build.gradle.kts b/core/analytics/build.gradle.kts index 0059b3e4..131174db 100644 --- a/core/analytics/build.gradle.kts +++ b/core/analytics/build.gradle.kts @@ -8,7 +8,7 @@ * See https://github.com/openMF/mobile-wallet/blob/master/LICENSE.md */ plugins { - alias(libs.plugins.mifospay.kmp.library) + alias(libs.plugins.kmp.library.convention) alias(libs.plugins.jetbrainsCompose) alias(libs.plugins.compose.compiler) } diff --git a/core/common/build.gradle.kts b/core/common/build.gradle.kts index b065c262..02c3287d 100644 --- a/core/common/build.gradle.kts +++ b/core/common/build.gradle.kts @@ -8,7 +8,7 @@ * See https://github.com/openMF/mobile-wallet/blob/master/LICENSE.md */ plugins { - alias(libs.plugins.mifospay.kmp.library) + alias(libs.plugins.kmp.library.convention) alias(libs.plugins.kotlin.parcelize) alias(libs.plugins.compose.compiler) alias(libs.plugins.jetbrainsCompose) diff --git a/core/data/build.gradle.kts b/core/data/build.gradle.kts index c97b2f89..11a772cf 100644 --- a/core/data/build.gradle.kts +++ b/core/data/build.gradle.kts @@ -8,7 +8,7 @@ * See https://github.com/openMF/mobile-wallet/blob/master/LICENSE.md */ plugins { - alias(libs.plugins.mifospay.kmp.library) + alias(libs.plugins.kmp.library.convention) alias(libs.plugins.kotlin.parcelize) alias(libs.plugins.kotlin.serialization) alias(libs.plugins.compose.compiler) diff --git a/core/datastore/build.gradle.kts b/core/datastore/build.gradle.kts index 260a9a00..b1a24f86 100644 --- a/core/datastore/build.gradle.kts +++ b/core/datastore/build.gradle.kts @@ -8,7 +8,7 @@ * See https://github.com/openMF/mobile-wallet/blob/master/LICENSE.md */ plugins { - alias(libs.plugins.mifospay.kmp.library) + alias(libs.plugins.kmp.library.convention) id("kotlinx-serialization") } diff --git a/core/designsystem/build.gradle.kts b/core/designsystem/build.gradle.kts index a058de97..ca50f0cf 100644 --- a/core/designsystem/build.gradle.kts +++ b/core/designsystem/build.gradle.kts @@ -18,7 +18,7 @@ * See https://github.com/openMF/mobile-wallet/blob/master/LICENSE.md */ plugins { - alias(libs.plugins.mifospay.kmp.library) + alias(libs.plugins.kmp.library.convention) alias(libs.plugins.jetbrainsCompose) alias(libs.plugins.compose.compiler) alias(libs.plugins.roborazzi) diff --git a/core/domain/build.gradle.kts b/core/domain/build.gradle.kts index 42a7872d..01b32635 100644 --- a/core/domain/build.gradle.kts +++ b/core/domain/build.gradle.kts @@ -8,7 +8,7 @@ * See https://github.com/openMF/mobile-wallet/blob/master/LICENSE.md */ plugins { - alias(libs.plugins.mifospay.kmp.library) + alias(libs.plugins.kmp.library.convention) alias(libs.plugins.kotlin.allopen) } diff --git a/core/model/build.gradle.kts b/core/model/build.gradle.kts index a9a929e8..7bc51f28 100644 --- a/core/model/build.gradle.kts +++ b/core/model/build.gradle.kts @@ -8,7 +8,7 @@ * See https://github.com/openMF/mobile-wallet/blob/master/LICENSE.md */ plugins { - alias(libs.plugins.mifospay.kmp.library) + alias(libs.plugins.kmp.library.convention) alias(libs.plugins.kotlin.parcelize) id("kotlinx-serialization") } diff --git a/core/network/build.gradle.kts b/core/network/build.gradle.kts index c16c87c1..ede55cda 100644 --- a/core/network/build.gradle.kts +++ b/core/network/build.gradle.kts @@ -8,7 +8,7 @@ * See https://github.com/openMF/mobile-wallet/blob/master/LICENSE.md */ plugins { - alias(libs.plugins.mifospay.kmp.library) + alias(libs.plugins.kmp.library.convention) alias(libs.plugins.ktorfit) alias(libs.plugins.kotlin.serialization) alias(libs.plugins.ksp) diff --git a/core/ui/build.gradle.kts b/core/ui/build.gradle.kts index 7c10924a..e7833030 100644 --- a/core/ui/build.gradle.kts +++ b/core/ui/build.gradle.kts @@ -8,7 +8,7 @@ * See https://github.com/openMF/mobile-wallet/blob/master/LICENSE.md */ plugins { - alias(libs.plugins.mifospay.kmp.library) + alias(libs.plugins.kmp.library.convention) alias(libs.plugins.jetbrainsCompose) alias(libs.plugins.compose.compiler) } diff --git a/feature/accounts/build.gradle.kts b/feature/accounts/build.gradle.kts index 047813d1..75798d1c 100644 --- a/feature/accounts/build.gradle.kts +++ b/feature/accounts/build.gradle.kts @@ -8,7 +8,7 @@ * See https://github.com/openMF/mobile-wallet/blob/master/LICENSE.md */ plugins { - alias(libs.plugins.mifospay.cmp.feature) + alias(libs.plugins.cmp.feature.convention) } android { diff --git a/feature/auth/build.gradle.kts b/feature/auth/build.gradle.kts index 4d4078fb..0097adb1 100644 --- a/feature/auth/build.gradle.kts +++ b/feature/auth/build.gradle.kts @@ -19,7 +19,7 @@ import org.jetbrains.compose.ExperimentalComposeLibrary * See https://github.com/openMF/mobile-wallet/blob/master/LICENSE.md */ plugins { - alias(libs.plugins.mifospay.cmp.feature) + alias(libs.plugins.cmp.feature.convention) alias(libs.plugins.mokkery) } diff --git a/feature/editpassword/build.gradle.kts b/feature/editpassword/build.gradle.kts index cdb08ff1..30a00a3e 100644 --- a/feature/editpassword/build.gradle.kts +++ b/feature/editpassword/build.gradle.kts @@ -8,7 +8,7 @@ * See https://github.com/openMF/mobile-wallet/blob/master/LICENSE.md */ plugins { - alias(libs.plugins.mifospay.cmp.feature) + alias(libs.plugins.cmp.feature.convention) } android { diff --git a/feature/faq/build.gradle.kts b/feature/faq/build.gradle.kts index 49cd7331..accdd38e 100644 --- a/feature/faq/build.gradle.kts +++ b/feature/faq/build.gradle.kts @@ -8,7 +8,7 @@ * See https://github.com/openMF/mobile-wallet/blob/master/LICENSE.md */ plugins { - alias(libs.plugins.mifospay.cmp.feature) + alias(libs.plugins.cmp.feature.convention) } android { diff --git a/feature/finance/build.gradle.kts b/feature/finance/build.gradle.kts index 2c3d1506..ae9843e2 100644 --- a/feature/finance/build.gradle.kts +++ b/feature/finance/build.gradle.kts @@ -8,7 +8,7 @@ * See https://github.com/openMF/mobile-wallet/blob/master/LICENSE.md */ plugins { - alias(libs.plugins.mifospay.cmp.feature) + alias(libs.plugins.cmp.feature.convention) } android { diff --git a/feature/history/build.gradle.kts b/feature/history/build.gradle.kts index c894a722..11bf1739 100644 --- a/feature/history/build.gradle.kts +++ b/feature/history/build.gradle.kts @@ -8,7 +8,7 @@ * See https://github.com/openMF/mobile-wallet/blob/master/LICENSE.md */ plugins { - alias(libs.plugins.mifospay.cmp.feature) + alias(libs.plugins.cmp.feature.convention) } android { diff --git a/feature/home/build.gradle.kts b/feature/home/build.gradle.kts index d26495fd..5b2c2e01 100644 --- a/feature/home/build.gradle.kts +++ b/feature/home/build.gradle.kts @@ -8,7 +8,7 @@ * See https://github.com/openMF/mobile-wallet/blob/master/LICENSE.md */ plugins { - alias(libs.plugins.mifospay.cmp.feature) + alias(libs.plugins.cmp.feature.convention) } android { diff --git a/feature/invoices/build.gradle.kts b/feature/invoices/build.gradle.kts index 00a5c3c6..89d6d6d4 100644 --- a/feature/invoices/build.gradle.kts +++ b/feature/invoices/build.gradle.kts @@ -8,7 +8,7 @@ * See https://github.com/openMF/mobile-wallet/blob/master/LICENSE.md */ plugins { - alias(libs.plugins.mifospay.cmp.feature) + alias(libs.plugins.cmp.feature.convention) } android { diff --git a/feature/kyc/build.gradle.kts b/feature/kyc/build.gradle.kts index d153ef49..ef03eb25 100644 --- a/feature/kyc/build.gradle.kts +++ b/feature/kyc/build.gradle.kts @@ -8,7 +8,7 @@ * See https://github.com/openMF/mobile-wallet/blob/master/LICENSE.md */ plugins { - alias(libs.plugins.mifospay.cmp.feature) + alias(libs.plugins.cmp.feature.convention) } android { diff --git a/feature/make-transfer/build.gradle.kts b/feature/make-transfer/build.gradle.kts index cd23d62e..30baf47a 100644 --- a/feature/make-transfer/build.gradle.kts +++ b/feature/make-transfer/build.gradle.kts @@ -8,7 +8,7 @@ * See https://github.com/openMF/mobile-wallet/blob/master/LICENSE.md */ plugins { - alias(libs.plugins.mifospay.cmp.feature) + alias(libs.plugins.cmp.feature.convention) } android { diff --git a/feature/merchants/build.gradle.kts b/feature/merchants/build.gradle.kts index 03751ef0..78af6dce 100644 --- a/feature/merchants/build.gradle.kts +++ b/feature/merchants/build.gradle.kts @@ -8,7 +8,7 @@ * See https://github.com/openMF/mobile-wallet/blob/master/LICENSE.md */ plugins { - alias(libs.plugins.mifospay.cmp.feature) + alias(libs.plugins.cmp.feature.convention) } android { diff --git a/feature/notification/build.gradle.kts b/feature/notification/build.gradle.kts index 76adf264..6bd341ba 100644 --- a/feature/notification/build.gradle.kts +++ b/feature/notification/build.gradle.kts @@ -8,7 +8,7 @@ * See https://github.com/openMF/mobile-wallet/blob/master/LICENSE.md */ plugins { - alias(libs.plugins.mifospay.cmp.feature) + alias(libs.plugins.cmp.feature.convention) } android { diff --git a/feature/payments/build.gradle.kts b/feature/payments/build.gradle.kts index 9d03dbce..ccb5e0c1 100644 --- a/feature/payments/build.gradle.kts +++ b/feature/payments/build.gradle.kts @@ -8,7 +8,7 @@ * See https://github.com/openMF/mobile-wallet/blob/master/LICENSE.md */ plugins { - alias(libs.plugins.mifospay.cmp.feature) + alias(libs.plugins.cmp.feature.convention) } android { diff --git a/feature/profile/build.gradle.kts b/feature/profile/build.gradle.kts index 109d7ae4..3a7bee32 100644 --- a/feature/profile/build.gradle.kts +++ b/feature/profile/build.gradle.kts @@ -9,7 +9,7 @@ */ plugins { - alias(libs.plugins.mifospay.cmp.feature) + alias(libs.plugins.cmp.feature.convention) } android { diff --git a/feature/qr/build.gradle.kts b/feature/qr/build.gradle.kts index 635f026e..68b8cdde 100644 --- a/feature/qr/build.gradle.kts +++ b/feature/qr/build.gradle.kts @@ -8,7 +8,7 @@ * See https://github.com/openMF/mobile-wallet/blob/master/LICENSE.md */ plugins { - alias(libs.plugins.mifospay.cmp.feature) + alias(libs.plugins.cmp.feature.convention) } android { diff --git a/feature/receipt/build.gradle.kts b/feature/receipt/build.gradle.kts index e18a8d15..6f91716d 100644 --- a/feature/receipt/build.gradle.kts +++ b/feature/receipt/build.gradle.kts @@ -8,7 +8,7 @@ * See https://github.com/openMF/mobile-wallet/blob/master/LICENSE.md */ plugins { - alias(libs.plugins.mifospay.cmp.feature) + alias(libs.plugins.cmp.feature.convention) } android { diff --git a/feature/request-money/build.gradle.kts b/feature/request-money/build.gradle.kts index 0ee43d66..12cb311a 100644 --- a/feature/request-money/build.gradle.kts +++ b/feature/request-money/build.gradle.kts @@ -8,7 +8,7 @@ * See https://github.com/openMF/mobile-wallet/blob/master/LICENSE.md */ plugins { - alias(libs.plugins.mifospay.cmp.feature) + alias(libs.plugins.cmp.feature.convention) } android { diff --git a/feature/savedcards/build.gradle.kts b/feature/savedcards/build.gradle.kts index 4e843219..e419616b 100644 --- a/feature/savedcards/build.gradle.kts +++ b/feature/savedcards/build.gradle.kts @@ -8,7 +8,7 @@ * See https://github.com/openMF/mobile-wallet/blob/master/LICENSE.md */ plugins { - alias(libs.plugins.mifospay.cmp.feature) + alias(libs.plugins.cmp.feature.convention) } android { diff --git a/feature/send-money/build.gradle.kts b/feature/send-money/build.gradle.kts index eff9cd9a..90df32a6 100644 --- a/feature/send-money/build.gradle.kts +++ b/feature/send-money/build.gradle.kts @@ -8,7 +8,7 @@ * See https://github.com/openMF/mobile-wallet/blob/master/LICENSE.md */ plugins { - alias(libs.plugins.mifospay.cmp.feature) + alias(libs.plugins.cmp.feature.convention) } android { diff --git a/feature/settings/build.gradle.kts b/feature/settings/build.gradle.kts index b84b6f85..65b3f9f8 100644 --- a/feature/settings/build.gradle.kts +++ b/feature/settings/build.gradle.kts @@ -8,7 +8,7 @@ * See https://github.com/openMF/mobile-wallet/blob/master/LICENSE.md */ plugins { - alias(libs.plugins.mifospay.cmp.feature) + alias(libs.plugins.cmp.feature.convention) } android { diff --git a/feature/standing-instruction/build.gradle.kts b/feature/standing-instruction/build.gradle.kts index f30976cc..fcb22513 100644 --- a/feature/standing-instruction/build.gradle.kts +++ b/feature/standing-instruction/build.gradle.kts @@ -8,7 +8,7 @@ * See https://github.com/openMF/mobile-wallet/blob/master/LICENSE.md */ plugins { - alias(libs.plugins.mifospay.cmp.feature) + alias(libs.plugins.cmp.feature.convention) } android { diff --git a/feature/upi-setup/build.gradle.kts b/feature/upi-setup/build.gradle.kts index 2e3ab340..ffdc4a2d 100644 --- a/feature/upi-setup/build.gradle.kts +++ b/feature/upi-setup/build.gradle.kts @@ -8,7 +8,7 @@ * See https://github.com/openMF/mobile-wallet/blob/master/LICENSE.md */ plugins { - alias(libs.plugins.mifospay.cmp.feature) + alias(libs.plugins.cmp.feature.convention) } android { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 1375346c..b5b26c93 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -22,6 +22,9 @@ androidxProfileinstaller = "1.4.1" androidxTracing = "1.3.0" appcompatVersion = "1.7.1" coreKtxVersion = "1.16.0" +androidxMacroBenchmark = "1.3.4" + +calfPermissions = "0.8.0" # KotlinX Dependencies lifecycleExtensionsVersion = "2.2.0" @@ -59,6 +62,9 @@ googleOssPlugin = "0.10.6" googleidVersion = "1.1.1" guavaVersion = "33.4.8-android" credentialsVersion = "1.5.0" +review = "2.0.2" +appUpdate = "2.1.0" +integrity = "1.4.0" # Static Analysis & Code Formatting ktlint = "12.1.1" @@ -105,6 +111,7 @@ okioVersion = "3.15.0" kermit = "2.0.6" fileKit = "0.10.0-beta04" wire = "5.3.5" +uiBackhandler = "1.8.2" # Jetbrains CMP windowsSizeClass = "0.5.0" @@ -114,6 +121,8 @@ composeLifecycle = "2.9.1" composeNavigation = "2.8.0-alpha13" jbCoreBundle = "1.0.1" jbSavedState = "1.3.1" +gitLive = "2.1.0" +material3adaptive = "1.1.2" # Desktop Version packageName = "MifosWallet" @@ -184,6 +193,7 @@ androidx-profileinstaller = { group = "androidx.profileinstaller", name = "profi androidx-test-ext-junit = { group = "androidx.test.ext", name = "junit", version.ref = "androidx-test-ext-junit" } androidx-tracing-ktx = { group = "androidx.tracing", name = "tracing-ktx", version.ref = "androidxTracing" } +calf-permissions = { module = "com.mohamedrejeb.calf:calf-permissions", version.ref = "calfPermissions" } ktlint-gradlePlugin = { group = "org.jlleitschuh.gradle", name = "ktlint-gradle", version.ref = "ktlint" } detekt-formatting = { group = "io.gitlab.arturbosch.detekt", name = "detekt-formatting", version.ref = "detekt" } spotless-gradle = { group = "com.diffplug.spotless", name = "spotless-plugin-gradle", version.ref = "spotlessVersion" } @@ -199,6 +209,10 @@ firebase-crashlytics-gradlePlugin = { group = "com.google.firebase", name = "fir firebase-performance = { group = "com.google.firebase", name = "firebase-perf-ktx" } firebase-performance-gradlePlugin = { group = "com.google.firebase", name = "perf-plugin", version.ref = "firebasePerfPlugin" } +gitlive-firebase-analytics = { module = "dev.gitlive:firebase-analytics", version.ref = "gitLive" } +gitlive-firebase-crashlytics = { module = "dev.gitlive:firebase-crashlytics", version.ref = "gitLive" } +gitlive-firebase-performance = { module = "dev.gitlive:firebase-performance", version.ref = "gitLive" } + play-services-auth = { group = "com.google.android.gms", name = "play-services-auth", version.ref = "playServicesAuthVersion" } google-oss-licenses = { group = "com.google.android.gms", name = "play-services-oss-licenses", version.ref = "googleOss" } google-oss-licenses-plugin = { group = "com.google.android.gms", name = "oss-licenses-plugin", version.ref = "googleOssPlugin" } @@ -221,6 +235,12 @@ truth = { group = "com.google.truth", name = "truth", version.ref = "truth" } turbine = { group = "app.cash.turbine", name = "turbine", version.ref = "turbineVersion" } espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espresso-core" } +app-update = { module = "com.google.android.play:app-update", version.ref = "appUpdate" } +app-update-ktx = { module = "com.google.android.play:app-update-ktx", version.ref = "appUpdate" } +integrity = { module = "com.google.android.play:integrity", version.ref = "integrity" } +review = { module = "com.google.android.play:review", version.ref = "review" } +review-ktx = { module = "com.google.android.play:review-ktx", version.ref = "review" } + zxing = { group = "com.google.zxing", name = "core", version.ref = "zxingVersion" } fineract-api = { group = "io.github.niyajali", name = "fineract-client-kmp", version.ref = "fineractSdk" } @@ -240,6 +260,10 @@ jb-savedstate = { module = "org.jetbrains.androidx.savedstate:savedstate", versi jb-composeNavigation = { module = "org.jetbrains.androidx.navigation:navigation-compose", version.ref = "composeNavigation" } jb-navigation = { module = "org.jetbrains.androidx.navigation:navigation-common", version.ref = "composeNavigation" } +jetbrains-compose-material3-adaptive = { group = "org.jetbrains.compose.material3.adaptive", name = "adaptive", version.ref = "material3adaptive" } +jetbrains-compose-material3-adaptive-layout = { group = "org.jetbrains.compose.material3.adaptive", name = "adaptive-layout", version.ref = "material3adaptive" } +jetbrains-compose-material3-adaptive-navigation = { group = "org.jetbrains.compose.material3.adaptive", name = "adaptive-navigation", version.ref = "material3adaptive" } + kotest-assertions-core = { module = "io.kotest:kotest-assertions-core", version.ref = "kotestVersion" } kotest-framework-engine = { module = "io.kotest:kotest-framework-engine", version.ref = "kotestVersion" } kotest-framework-datatest = { module = "io.kotest:kotest-framework-datatest", version.ref = "kotestVersion" } @@ -326,6 +350,7 @@ multiplatform-settings-test = { group = "com.russhwolf", name = "multiplatform-s moko-permission = { group = "dev.icerock.moko", name = "permissions", version.ref = "mokoPermission" } moko-permission-compose = { group = "dev.icerock.moko", name = "permissions-compose", version.ref = "mokoPermission" } +ui-backhandler = { module = "org.jetbrains.compose.ui:ui-backhandler", version.ref = "uiBackhandler" } window-size = { group = "dev.chrisbanes.material3", name = "material3-window-size-class-multiplatform", version.ref = "windowsSizeClass" } compose-ui-test-junit4-android = { module = "androidx.compose.ui:ui-test-junit4-android", version.ref = "composeTest" } @@ -364,10 +389,14 @@ kotlinMultiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" } ktorfit = { id = "de.jensklingenberg.ktorfit", version.ref = "ktorfit" } wire = { id = "com.squareup.wire", version.ref = "wire" } +baselineprofile = { id = "androidx.baselineprofile", version.ref = "androidxMacroBenchmark" } -mifospay-cmp-feature = { id = "mifospay.cmp.feature", version = "unspecified" } -mifospay-kmp-koin = { id = "mifospay.kmp.koin", version = "unspecified" } -mifospay-kmp-library = { id = "mifospay.kmp.library", version = "unspecified" } +cmp-feature-convention = { id = "org.convention.cmp.feature", version = "unspecified" } +kmp-koin-convention = { id = "org.convention.kmp.koin", version = "unspecified" } +kmp-library-convention = { id = "org.convention.kmp.library", version = "unspecified" } + +android-application-firebase = { id = "org.convention.android.application.firebase" } +android-lint = { id = "org.convention.android.application.lint" } # Utility Plugins mifos-detekt-plugin = { id = "mifos.detekt.plugin", version = "unspecified" } diff --git a/libs/mifos-passcode/build.gradle.kts b/libs/mifos-passcode/build.gradle.kts index 64cb920f..bba7c3a9 100644 --- a/libs/mifos-passcode/build.gradle.kts +++ b/libs/mifos-passcode/build.gradle.kts @@ -8,7 +8,7 @@ * See https://github.com/openMF/mobile-wallet/blob/master/LICENSE.md */ plugins { - alias(libs.plugins.mifospay.cmp.feature) + alias(libs.plugins.cmp.feature.convention) alias(libs.plugins.kotlin.parcelize) alias(libs.plugins.kotlin.serialization) alias(libs.plugins.protobuf)