From d0fd451e878e9b7d69ca8628f6550072e1be7a0b Mon Sep 17 00:00:00 2001 From: Neo Date: Mon, 21 Sep 2026 10:10:51 +0800 Subject: [PATCH 1/7] add plugin & library repositories --- settings.gradle.kts | 79 ++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 71 insertions(+), 8 deletions(-) diff --git a/settings.gradle.kts b/settings.gradle.kts index 6083652..dc6bc62 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,20 +1,83 @@ -rootProject.name = "ReelsDemo" -include(":composeApp") - pluginManagement { repositories { - google() gradlePluginPortal() + maven(url = "https://plugins.gradle.org/m2/") mavenCentral() + google { + content { + includeGroupByRegex("com\\.android.*") + includeGroupByRegex("com\\.google.*") + includeGroupByRegex("androidx.*") + } + } + maven { + url = uri("https://oss.sonatype.org/content/repositories/snapshots") + name = "SonatypeSnapshots" + mavenContent { + snapshotsOnly() + } + } + maven(url = "https://maven.aliyun.com/repository/gradle-plugin/") + maven(url = "https://maven.aliyun.com/repository/spring-plugin/") + maven(url = "https://jitpack.io") + maven(url = "https://s3.amazonaws.com/repo.commonsware.com") + maven(url = "https://maven.pkg.jetbrains.space/public/p/compose/dev") + maven(url = "https://api.xposed.info/") + maven(url = "https://jogamp.org/deployment/maven") + maven(url = "https://developer.huawei.com/repo/") + maven(url = "https://raw.githubusercontent.com/cybernhl/maven-repository/master/") + maven(url = "https://maven.aliyun.com/repository/jcenter") + maven(url = "https://maven.aliyun.com/repository/public/") + maven(url = "https://maven.aliyun.com/repository/spring/") + maven(url = "https://maven.aliyun.com/repository/google/") + maven(url = "https://maven.aliyun.com/repository/grails-core/") + maven(url = "https://maven.aliyun.com/repository/apache-snapshots/") + maven(url = "https://packages.jetbrains.team/maven/p/skija/maven") } + plugins { + + } +} + +plugins { + id("org.gradle.toolchains.foojay-resolver-convention") version "1.0.0" } +val fullVersion = System.getProperty("java.version", "8.0.0") +val versionComponents = fullVersion + .split(".") + .take(2) + .filter { it.isNotBlank() } + .map { Integer.parseInt(it) } + +val currentJdk = if (versionComponents[0] == 1) versionComponents[1] else versionComponents[0] + + +@Suppress("UnstableApiUsage") dependencyResolutionManagement { repositories { - google() mavenCentral() - mavenLocal() - maven("https://jogamp.org/deployment/maven") - maven("https://maven.pkg.jetbrains.space/public/p/compose/dev") + google() + maven { + url = uri("https://oss.sonatype.org/content/repositories/snapshots") + name = "SonatypeSnapshots" + mavenContent { + snapshotsOnly() + } + } + maven(url = "https://jitpack.io") + maven(url = "https://s3.amazonaws.com/repo.commonsware.com") + maven(url = "https://maven.pkg.jetbrains.space/public/p/compose/dev") + maven(url = "https://api.xposed.info/") + maven(url = "https://jogamp.org/deployment/maven") + maven(url = "https://raw.githubusercontent.com/cybernhl/maven-repository/master/") + maven(url = "https://maven.aliyun.com/repository/jcenter") + maven(url = "https://maven.aliyun.com/repository/public/") + maven(url = "https://maven.aliyun.com/repository/spring/") + maven(url = "https://maven.aliyun.com/repository/google/") + maven(url = "https://packages.jetbrains.team/maven/p/skija/maven") } } + +rootProject.name = "ReelsDemo" +include(":composeApp") \ No newline at end of file From 39bfe426eac5c08bb13a3845008c391cfd395f0c Mon Sep 17 00:00:00 2001 From: Neo Date: Mon, 21 Sep 2026 10:17:31 +0800 Subject: [PATCH 2/7] Refactor: Remap :composeApp to :shared for AGP 9 KMP migration - Updated settings.gradle.kts to include(':shared') and map it to ./composeApp. - Updated Xcode build script to reference the correct :shared module. - This preparation aligns with the new KMP project structure migration (AGP 9.0+) where 'com.android.application' usage is being decoupled from the multiplatform shared logic to follow modern Android/KMP standards. --- composeApp/build.gradle.kts | 6 ++++++ iosApp/iosApp.xcodeproj/project.pbxproj | 2 +- settings.gradle.kts | 3 ++- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/composeApp/build.gradle.kts b/composeApp/build.gradle.kts index 1cb8066..d8920f3 100644 --- a/composeApp/build.gradle.kts +++ b/composeApp/build.gradle.kts @@ -123,4 +123,10 @@ compose.desktop { packageVersion = "1.0.0" } } +} + +compose.resources { + publicResClass = true + packageOfResClass = "reelsdemo.composeapp.generated.resources" + generateResClass = always } \ No newline at end of file diff --git a/iosApp/iosApp.xcodeproj/project.pbxproj b/iosApp/iosApp.xcodeproj/project.pbxproj index 7fccd55..e051bc9 100644 --- a/iosApp/iosApp.xcodeproj/project.pbxproj +++ b/iosApp/iosApp.xcodeproj/project.pbxproj @@ -195,7 +195,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "cd \"$SRCROOT/..\"\n./gradlew :composeApp:embedAndSignAppleFrameworkForXcode\n"; + shellScript = "cd \"$SRCROOT/..\"\nunset ANDROID_PREFS_ROOT\n./gradlew :shared:embedAndSignAppleFrameworkForXcode\n"; }; /* End PBXShellScriptBuildPhase section */ diff --git a/settings.gradle.kts b/settings.gradle.kts index dc6bc62..c83523f 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -80,4 +80,5 @@ dependencyResolutionManagement { } rootProject.name = "ReelsDemo" -include(":composeApp") \ No newline at end of file +include(":shared") +project(":shared").projectDir = file("./composeApp") \ No newline at end of file From 99096d43af8e1483b4f1c4e82c977aa3dccebf96 Mon Sep 17 00:00:00 2001 From: Neo Date: Mon, 21 Sep 2026 10:42:52 +0800 Subject: [PATCH 3/7] Build(deps): Upgrade infrastructure to Gradle 9.4.1 and migrate to modern Version Catalog accessors - Upgraded Gradle wrapper to 9.4.1 (from 9.2.1) to align with modern builds. - Refactored KMP configuration to drop 'iosX64' target architecture, conforming to Apple's full retirement of Intel x86_64 Mac and simulator support as of macOS 27. - Migrated legacy 'compose.*' plugin DSL extensions to standard 'libs.jetbrains.compose.*' Version Catalog accessors. This addresses JetBrains' recent deprecation (and upcoming strict error enforcement) targeting non-standard plugin dependency object helpers, ensuring future-proof, type-safe, and centralized dependency resolution. - Expanded and renamed several plugin and library catalog mappings within libs.versions.toml. --- build.gradle.kts | 79 ++- composeApp/build.gradle.kts | 31 +- gradle/gradle-daemon-jvm.properties | 12 + gradle/libs.versions.toml | 641 ++++++++++++++++++++++- gradle/wrapper/gradle-wrapper.properties | 2 +- 5 files changed, 722 insertions(+), 43 deletions(-) create mode 100644 gradle/gradle-daemon-jvm.properties diff --git a/build.gradle.kts b/build.gradle.kts index 5762ec9..597635b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,8 +1,75 @@ +buildscript { + // 在 Kotlin DSL 中,使用 extra 屬性來代替 Groovy 的 ext + extra.apply { + set("agp_gradle", libs.versions.agp.get()) + + var tempKotlinVersion = "1.9.25" + println("Show kotlin_version : $tempKotlinVersion") + + tempKotlinVersion = libs.versions.kotlin.get() + set("kotlin_version", tempKotlinVersion) + println("Show kotlin_version from lib.version.toml : $tempKotlinVersion") + + set("coroutine_version", "1.6.4") + set("jb_compose_version", libs.versions.jetbrains.compose.multiplatform.get()) + set("navigation_version", libs.versions.androidx.navigation.get()) + } + + // 從 extra 中讀取值以供後續使用 + val kotlin_version: String by extra + println("Show fianl kotlin_version : $kotlin_version") + + repositories { + gradlePluginPortal() + mavenCentral() + google() + maven { + url = uri("https://plugins.gradle.org/m2/") + } + maven { + url = uri("https://maven.pkg.jetbrains.space/public/p/compose/dev") + } + } + dependencies { + val agp_gradle: String by extra +// classpath("com.android.tools.build:gradle:$agp_gradle") +// classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version") +// classpath("org.jetbrains.kotlin:kotlin-serialization:$kotlin_version") + } +} + plugins { - alias(libs.plugins.multiplatform).apply(false) - alias(libs.plugins.compose.compiler).apply(false) - alias(libs.plugins.compose).apply(false) - alias(libs.plugins.android.application).apply(false) - alias(libs.plugins.android.library).apply(false) - alias(libs.plugins.mavenPublish).apply(false) + alias(libs.plugins.android.application) apply false + alias(libs.plugins.android.library) apply false + alias(libs.plugins.android.kotlin.multiplatform.library) apply false + + alias(libs.plugins.kotlin.jvm) apply false + alias(libs.plugins.kotlin.android) apply false + alias(libs.plugins.kotlin.multiplatform) apply false + + alias(libs.plugins.jetbrains.compose) apply false + alias(libs.plugins.compose.compiler) apply false + + alias(libs.plugins.kotlin.serialization) apply false + + alias(libs.plugins.ksp) apply false + alias(libs.plugins.mavenPublish) apply false +} + +allprojects { + tasks.findByName("run")?.let { task -> + if (task is JavaExec) { + println(">>> [afterEvaluate] 'run' task workingDir is: ${task.workingDir}") + println(">>> [afterEvaluate] 'run' task commandLine is: ${task.commandLine.joinToString(" ")}") + } else { + println(">>> [afterEvaluate] 'run' task found, but it's not a JavaExec task. Type: ${task::class.java.name}") + } + } ?: println(">>> [afterEvaluate] 'run' task NOT found.") + afterEvaluate { + } +} + +subprojects { + afterEvaluate { + } } diff --git a/composeApp/build.gradle.kts b/composeApp/build.gradle.kts index d8920f3..c818423 100644 --- a/composeApp/build.gradle.kts +++ b/composeApp/build.gradle.kts @@ -3,9 +3,9 @@ import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { - alias(libs.plugins.multiplatform) + alias(libs.plugins.kotlin.multiplatform) alias(libs.plugins.compose.compiler) - alias(libs.plugins.compose) + alias(libs.plugins.jetbrains.compose) alias(libs.plugins.android.application) } @@ -35,13 +35,14 @@ kotlin { binaries.executable() } - listOf( - iosX64(), + val xcfName = "ComposeApp" + listOf( +// iosX64(),//from jetbrains compose 1.11.1 unsupport iosX64 (Apple remove support X86 OSX) iosArm64(), iosSimulatorArm64() ).forEach { it.binaries.framework { - baseName = "ComposeApp" + baseName = xcfName isStatic = true } } @@ -53,13 +54,13 @@ kotlin { } } commonMain.dependencies { - implementation(compose.runtime) - implementation(compose.foundation) - implementation(compose.materialIconsExtended) - implementation(compose.material) - implementation(compose.material3) - implementation(compose.components.resources) - implementation(compose.components.uiToolingPreview) + implementation(libs.jetbrains.compose.runtime) + implementation(libs.jetbrains.compose.foundation) + implementation(libs.jetbrains.compose.material.icons.extended) + implementation(libs.jetbrains.compose.material) + implementation(libs.jetbrains.compose.material3) + implementation(libs.jetbrains.compose.components.resources) + implementation(libs.jetbrains.compose.ui.tooling.preview ) implementation(libs.voyager.navigator) implementation(libs.voyager.transitions) @@ -68,14 +69,14 @@ kotlin { implementation(libs.image.loader) implementation(libs.media.kit) - implementation(libs.media.player) + implementation(libs.chaintech.media.player) } androidMain.dependencies { - implementation(compose.uiTooling) - implementation(libs.androidx.activityCompose) + implementation(libs.jetbrains.compose.ui.tooling) + implementation(libs.androidx.activity.compose) } iosMain.dependencies { diff --git a/gradle/gradle-daemon-jvm.properties b/gradle/gradle-daemon-jvm.properties new file mode 100644 index 0000000..6c1139e --- /dev/null +++ b/gradle/gradle-daemon-jvm.properties @@ -0,0 +1,12 @@ +#This file is generated by updateDaemonJvm +toolchainUrl.FREE_BSD.AARCH64=https\://api.foojay.io/disco/v3.0/ids/ec7520a1e057cd116f9544c42142a16b/redirect +toolchainUrl.FREE_BSD.X86_64=https\://api.foojay.io/disco/v3.0/ids/4c4f879899012ff0a8b2e2117df03b0e/redirect +toolchainUrl.LINUX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/ec7520a1e057cd116f9544c42142a16b/redirect +toolchainUrl.LINUX.X86_64=https\://api.foojay.io/disco/v3.0/ids/4c4f879899012ff0a8b2e2117df03b0e/redirect +toolchainUrl.MAC_OS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/73bcfb608d1fde9fb62e462f834a3299/redirect +toolchainUrl.MAC_OS.X86_64=https\://api.foojay.io/disco/v3.0/ids/846ee0d876d26a26f37aa1ce8de73224/redirect +toolchainUrl.UNIX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/ec7520a1e057cd116f9544c42142a16b/redirect +toolchainUrl.UNIX.X86_64=https\://api.foojay.io/disco/v3.0/ids/4c4f879899012ff0a8b2e2117df03b0e/redirect +toolchainUrl.WINDOWS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/9482ddec596298c84656d31d16652665/redirect +toolchainUrl.WINDOWS.X86_64=https\://api.foojay.io/disco/v3.0/ids/39701d92e1756bb2f141eb67cd4c660e/redirect +toolchainVersion=21 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e6583cf..fa966d9 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,32 +1,631 @@ [versions] - +#region Base Plugin +agp = "8.13.1" # Ref : https://developer.android.com/build/releases/past-releases +# kotlin = "2.1.10" +# ksp = "2.1.10-1.0.29" +# kotlin = "2.2.21" +# ksp = "2.2.21-2.0.4" kotlin = "2.3.0" -compose = "1.10.0" -agp = "8.11.2" -androidx-activityCompose = "1.12.2" -voyager_version = "1.1.0-beta03" -sdp_ssp_version = "1.0.7" +kotlinx-coroutines = "1.11.0" +#region Json & Gson & Serialization +kotlinx-serialization = "1.11.0" +#endregion +ksp = "2.3.11" +#endregion + +#region Android Support arch +android-support-appcompatV7 = "28.0.0" +android-support-constraintLayout = "2.0.4" +android-arch-livedata = "1.1.1" +android-arch-viewmodel = "1.1.1" +#endregion +#region AndroidX +androidx-core-ktx = "1.19.0" +androidx-activity-ktx = "1.13.0" +androidx-appcompat= "1.7.1" +androidx-fragment = "1.8.9" +androidx-cardview = "1.0.0" +androidx-material = "1.14.0" +androidx-constraintlayout = "2.2.1" +androidx-constraintlayout-compose = "1.1.1" +androidx-lifecycle = "2.10.0"#2.11.0' requires Android Gradle plugin 9.1.0 or higher +androidx-lifecycle-navigation3 = "2.10.0"#2.11.0' requires Android Gradle plugin 9.1.0 or higher +lifecycleLivedataKtx = "2.8.6" +lifecycleViewmodelKtx = "2.8.6" +lifecycleRuntimeKtx = "2.8.6" +androidx-navigation = "2.9.8" +androidx-navigation3 = "1.1.4" +androidx-splashscreen = "1.2.0" +androidx-paging = "3.4.0"#3.5.0 +datastore = "1.2.1" +androidx-multidex = "2.0.0" +jetpack_windowmanager_version = '1.0.0' +jetpack_camera_version = '1.1.0' +#endregion + +#region compose +androidx-activity-compose = "1.13.0" +android-compose-compiler = "1.5.15"#https://developer.android.com/jetpack/androidx/releases/compose-kotlin +compose-bom = "2026.09.00"# Ref : https://developer.android.com/jetpack/compose/bom +androidx-compose = "1.11.4" +androidx-compose-material3 = "1.4.0" +androidx-compose-material3-adaptive = "1.2.0" +jetbrains-compose-multiplatform = "1.11.1" +jetbrains-compose-hot-reload = "1.1.1" +jetbrains-compose-material3 = "1.9.0" +# https://mvnrepository.com/artifact/org.jetbrains.androidx.lifecycle/lifecycle-viewmodel-compose +jetbrains-lifecycle = "2.10.0" #2.11.0' requires Android Gradle plugin 9.1.0 or higher. +# https://mvnrepository.com/artifact/org.jetbrains.androidx.navigation/navigation-compose +jetbrains-navigation = "2.9.2" +jetbrains-navigationevent = "1.1.0" +jetbrains-androix-savedstate = "1.4.0" +# https://github.com/arkivanov/Decompose +# decompose = "3.5.0" +# essenty = "2.1.0" +#endregion + +#region Third party +shadow = "9.6.1" +#region DI +koin = "4.2.2" +#endregion + +#region BuildConfig +buildKonfig= "0.22.0" +buildConfig = "6.0.10" +#endregion + +#region Net +ktor = "3.5.2" + +ktorfit = "2.7.5"#2.5.1 / 2.5.2 +retrofit2 = "3.0.0" +retrofit2_kotlinx_serialization_converter = "1.0.0" +okhttp = "5.4.0" +#endregion + +#region Permissions +moko-permissions-version= "0.20.1" +#endregion + +#region Page +pagingCommon = "3.1.1-0.3.1" +pagingComposeCommon = "3.3.0-alpha02-0.5.1" +#endregion + +#region Image +coil = "3.5.0" +kamelImage = "1.0.9" +glide = "5.0.9" image_loader_version = "1.10.0" -media-player-version = "1.0.53" +#endregion +#region MediaPlayer +sdp_ssp_version = "1.0.7" media_kit_version = "1.0.1" +chaintech-media-player="1.0.53" +ffmpeg = "6.1.1-1.5.10" # Update to 7.1-1.5.11 or newer when https://trac.ffmpeg.org/ticket/11366 is resolved +vlc = "3.0.21" +vlcj = "4.12.1" +vlcSetup = "0.1.0" +#endregion +#region Log +timber = "5.0.1" +napier = "2.7.1" +logback = "1.6.1" +#endregion + +#region DB +room= "2.8.4" +sqlite = "2.7.0" +paging_version = "3.5.0" +realm_version= "10.11.1" +realm_kotlin_version= "3.0.0"#FIXME WTF +sqldelight = '2.3.2'#1.5.5 +#endregion + +#region WebView +composeWebviewMultiplatform = "1.9.4" +kmp_io_version="0.3.1" +#endregion + +okio = "3.18.1" +precompose="1.6.2" +voyager = "2.2.21-1.10.3" +moleculeRuntime = "2.2.0" + +composeView = "1.11.1.2" +settings = "1.3.0" +kotlinx-datetime = "0.8.0" +lottieCompose = "6.7.1" +richeditorCompose = "1.0.0-rc14" +kermit = "2.1.0" +urlencoder="1.6.0" +skie = "0.10.14" +atomicfu = "0.33.0" +filekit = "0.14.2" +desugaring = "2.1.5" +chucker = "4.3.1" +vico = "2.5.2" +anko = "0.10.8" +bignum = "0.3.10" +imagepickerkmp = "1.0.41" +belzspeedscan = "1.0.14" +#endregion + +junit = "4.13.2" +androidx-testExt = "1.3.0" +androidx-espresso = "3.7.0" +kotlinStdlib = "2.1.21" +test_runner = "1.7.0" +test_core = "1.7.0" +runner = "1.0.2" +espressoCore = "3.0.2" +workRuntimeKtx = "2.11.2" + +google-services = "4.5.0" +firebase-bom = "34.17.0" +svgToCompose = "2.2.1" +firebase-messaging = "24.1.2" + +[plugins] +android_application = { id = "com.android.application", version.ref = "agp" } +android_library = { id = "com.android.library", version.ref = "agp" } +#Ref : https://developer.android.com/kotlin/multiplatform/plugin +android-kotlin-multiplatform-library = { id = "com.android.kotlin.multiplatform.library", version = "8.10.0" } +kotlin_jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } +kotlin_android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } +kotlin_android_extension = { id = "org.jetbrains.kotlin.android.extensions", version.ref = "kotlin" } +kotlin_multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" } +kotlin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } +kotlin-cocoapods = { id = "org.jetbrains.kotlin.native.cocoapods", version.ref = "kotlin" } +kotlin_parcelize = { id = "org.jetbrains.kotlin.plugin.parcelize", version.ref = "kotlin" } +kotlin_serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } +kapt = { id = "org.jetbrains.kotlin.kapt", version.ref = "kotlin" } +ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" } +jetbrains-compose = { id = "org.jetbrains.compose", version.ref = "jetbrains-compose-multiplatform" } +jetbrains-compose-hot-reload = { id = "org.jetbrains.compose.hot-reload", version.ref = "jetbrains-compose-hot-reload" } +compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } +de-ktorfit = { id = "de.jensklingenberg.ktorfit", version.ref = "ktorfit" } +buildkonfig = { id = "com.codingfeline.buildkonfig", version.ref = "buildKonfig" } +buildConfig = { id = "com.github.gmazzo.buildconfig", version.ref = "buildConfig" } +skie = { id = "co.touchlab.skie", version.ref = "skie" } +room = { id = "androidx.room", version.ref = "room" } +vlcSetup = { id = "ir.mahozad.vlc-setup", version.ref = "vlcSetup" } +google-services = { id = "com.google.gms.google-services", version.ref = "google-services" } +svgToCompose = { id = "dev.tonholo.s2c", version.ref = "svgToCompose" } +blankj_api_gradle_plugin = { id = "com.blankj:api-gradle-plugin", version = "1.2" } +jxim_bs_plugin = { id = "com.jxim.plugin:bs-plugin", version = "1.0.0" } +huawei_agconnect_agcp = { id = "com.huawei.agconnect:agcp", version = "1.9.1.303" } +shadow = { id = "com.gradleup.shadow", version.ref = "shadow" } +kotlin-android-extensions = { id = "org.jetbrains.kotlin:kotlin-android-extensions", version.ref = "kotlin" } +android-lint = { id = "com.android.lint", version.ref = "agp" } +mavenPublish = { id = "com.vanniktech.maven.publish", version = "0.29.0" } [libraries] +plugin-source-android = { module = "com.android.tools.build:gradle", version.ref = "agp" } +plugin-source-kotlin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" } + +#region Base +kotlin-stdlib = { group = "org.jetbrains.kotlin", name = "kotlin-stdlib", version.ref = "kotlin" } +kotlinx-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref="kotlinx-coroutines" } +kotlinx-coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref="kotlinx-coroutines" } +kotlinx-coroutines-swing = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-swing", version.ref = "kotlinx-coroutines" } + +kotlinx-serialization-core = { module = "org.jetbrains.kotlinx:kotlinx-serialization-core", version.ref = "kotlinx-serialization" } +kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinx-serialization" } +#endregion + +#region android support & arch +android-support-appcompat-v7 = { group = "com.android.support", name = "appcompat-v7", version.ref = "android-support-appcompatV7" } +android-support-constraint-layout = { group = "com.android.support.constraint", name = "constraint-layout", version.ref = "android-support-constraintLayout" } +android-arch-livedata = { group = "android.arch.lifecycle", name = "livedata", version.ref = "android-arch-livedata" } +android-arch-viewmodel = { group = "android.arch.lifecycle", name = "viewmodel", version.ref = "android-arch-viewmodel" } +#endregion +#region androidX +androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "androidx-core-ktx" } +androidx-activity-ktx = { group = "androidx.activity", name = "activity-ktx", version.ref = "androidx-activity-ktx" } +androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "androidx-appcompat" } +androidx-fragment-ktx = { group = "androidx.fragment", name = "fragment-ktx", version.ref = "androidx-fragment" } +material = { group = "com.google.android.material", name = "material", version.ref = "androidx-material" } +androidx-constraintlayout = { group = "androidx.constraintlayout", name = "constraintlayout", version.ref = "androidx-constraintlayout" } +androidx-constraintlayout-compose = { group = "androidx.constraintlayout", name = "constraintlayout-compose", version.ref = "androidx-constraintlayout-compose" } +androidx-constraintlayout-compose-android = { group = "androidx.constraintlayout", name = "constraintlayout-compose-android", version.ref = "androidx-constraintlayout-compose" } +androidx-constraintlayout-core = { group = "androidx.constraintlayout", name = "constraintlayout-core", version.ref = "androidx-constraintlayout-compose" } +androidx-lifecycle-service = { group = "androidx.lifecycle", name = "lifecycle-service", version.ref = "androidx-lifecycle" } +androidx-lifecycle-process = { group = "androidx.lifecycle", name = "lifecycle-process", version.ref = "androidx-lifecycle" } +androidx-lifecycle-reactivestreams-ktx = { group = "androidx.lifecycle", name = "lifecycle-reactivestreams-ktx", version.ref = "androidx-lifecycle" } +androidx-lifecycle-livedata-ktx = { group = "androidx.lifecycle", name = "lifecycle-livedata-ktx", version.ref = "androidx-lifecycle" } +androidx-lifecycle-viewmodel-ktx = { group = "androidx.lifecycle", name = "lifecycle-viewmodel-ktx", version.ref = "androidx-lifecycle" } +androidx-lifecycle-viewmodel-compose = { group = "androidx.lifecycle", name = "lifecycle-viewmodel-compose", version.ref = "androidx-lifecycle" } +androidx-lifecycle-viewmodel-savedstate = { group = "androidx.lifecycle", name = "lifecycle-viewmodel-savedstate", version.ref = "androidx-lifecycle" } +androidx-lifecycle-viewmodel-navigation3 = { group = "androidx.lifecycle", name = "lifecycle-viewmodel-navigation3", version.ref = "androidx-lifecycle-navigation3" } +androidx-lifecycle-runtime-ktx = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "androidx-lifecycle" } +androidx-navigation-fragment = { group = "androidx.navigation", name = "navigation-fragment", version.ref = "androidx-navigation" } +androidx-navigation-fragment-ktx = { group = "androidx.navigation", name = "navigation-fragment-ktx", version.ref = "androidx-navigation" } +androidx-navigation-dynamic-features-fragment = { group = "androidx.navigation", name = "navigation-dynamic-features-fragment", version.ref = "androidx-navigation" } +androidx-navigation-ui = { group = "androidx.navigation", name = "navigation-ui", version.ref = "androidx-navigation" } +androidx-navigation-ui-ktx = { group = "androidx.navigation", name = "navigation-ui-ktx", version.ref = "androidx-navigation" } +androidx-navigation3-ui = { group = "androidx.navigation3", name = "navigation3-ui", version.ref = "androidx-navigation3" } +androidx-navigation3-runtime = { group = "androidx.navigation3", name = "navigation3-runtime", version.ref = "androidx-navigation3" } +#Ref https://mvnrepository.com/artifact/androidx.paging?p=1 +androidx-paging-common = { module = "androidx.paging:paging-common", version.ref = "androidx-paging" } +androidx-paging-common-ktx = { module = "androidx.paging:paging-common-ktx", version.ref = "androidx-paging" } +androidx-paging-common-jvm = { module = "androidx.paging:paging-common-jvm", version.ref = "androidx-paging" } +androidx-paging-common-android = { group = "androidx.paging", name = "paging-common-android", version.ref = "androidx-paging" } +androidx-paging-common-iosx64 = { group = "androidx.paging", name = "paging-common-iosx64", version.ref = "androidx-paging" } +androidx-paging-common-iosarm64 = { group = "androidx.paging", name = "paging-common-iosarm64", version.ref = "androidx-paging" } +androidx-paging-common-iossimulatorarm64 = { group = "androidx.paging", name = "paging-common-iossimulatorarm64", version.ref = "androidx-paging" } +androidx-paging-common-linuxx64 = { group = "androidx.paging", name = "paging-common-linuxx64", version.ref = "androidx-paging" } +androidx-paging-common-linuxarm64 = { group = "androidx.paging", name = "paging-common-linuxarm64", version.ref = "androidx-paging" } +androidx-paging-common-macosx64 = { group = "androidx.paging", name = "paging-common-macosx64", version.ref = "androidx-paging" } +androidx-paging-common-macosarm64 = { group = "androidx.paging", name = "paging-common-macosarm64", version.ref = "androidx-paging" } + +androidx-paging-runtime = { group = "androidx.paging", name = "paging-runtime", version.ref = "androidx-paging" } +androidx-paging-runtime-ktx = { group = "androidx.paging", name = "paging-runtime-ktx", version.ref = "androidx-paging" } +androidx-paging-compose = { group = "androidx.paging", name = "paging-compose", version.ref = "androidx-paging" } +androidx-paging-rxjava2 = { group = "androidx.paging", name = "paging-rxjava2", version.ref = "androidx-paging" } +androidx-paging-rxjava2-ktx = { group = "androidx.paging", name = "paging-rxjava2-ktx", version.ref = "androidx-paging" } +androidx-paging-rxjava3 = { group = "androidx.paging", name = "paging-rxjava3", version.ref = "androidx-paging" } +androidx-paging-guava = { group = "androidx.paging", name = "paging-guava", version.ref = "androidx-paging" } +androidx-paging-testing = { group = "androidx.paging", name = "paging-testing", version.ref = "androidx-paging" } + +androidx-preference = { module = "androidx.preference:preference-ktx", version = "1.2.1" } +androidx-splashscreen = { group = "androidx.core", name = "core-splashscreen", version.ref = "androidx-splashscreen" } +androidx-multidex = { group = "androidx.multide", name = "multidex", version.ref = "androidx-multidex" } +# Permissions +# https://github.com/google/accompanist +permissions = { module = "com.google.accompanist:accompanist-permissions", version = "0.37.3" } +#endregion + +# Permissions +androidx-work-runtime-ktx = { group = "androidx.work", name = "work-runtime-ktx", version.ref = "workRuntimeKtx" } +#endregion +#region androidx compose +androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "androidx-activity-compose" } +androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "compose-bom" } +androidx-lifecycle-runtime-compose = { group = "androidx.lifecycle", name = "lifecycle-runtime-compose", version.ref = "androidx-lifecycle" } +androidx-navigation-compose = { group = "androidx.navigation", name = "navigation-compose", version.ref = "androidx-navigation" } +androidx-compose-ui = { module = "androidx.compose.ui:ui", version.ref = "androidx-compose" } +androidx-compose-ui-graphics = { group = "androidx.compose.ui", name = "ui-graphics" } +androidx-compose-ui-geometry = { group = "androidx.compose.ui", name = "ui-geometry" } +androidx-compose-ui-text = { group = "androidx.compose.ui", name = "ui-text" } +androidx-compose-ui-text-google-fonts = { group = "androidx.compose.ui", name = "ui-text-google-fonts" } + +androidx-compose-ui-unit = { group = "androidx.compose.ui", name = "ui-unit" } +androidx-compose-ui-util = { group = "androidx.compose.ui", name = "ui-util" } +androidx-compose-ui-viewbinding = { group = "androidx.compose.ui", name = "ui-viewbinding" } + +androidx-compose-ui-tooling = { module = "androidx.compose.ui:ui-tooling", version.ref = "androidx-compose" } +androidx-compose-ui-tooling-data = { group = "androidx.compose.ui", name = "ui-tooling-data" } +androidx-compose-ui-tooling-preview = { module = "androidx.compose.ui:ui-tooling-preview", version.ref = "androidx-compose" } +androidx-compose-animation = { module = "androidx.compose.animation:animation", version.ref = "androidx-compose" } +androidx-compose-animation-core = { module = "androidx.compose.animation:animation-core", version.ref = "androidx-compose" } +androidx-compose-animation-graphics = { module = "androidx.compose.animation:animation-graphics", version.ref = "androidx-compose" } + +androidx-compose-foundation = { module = "androidx.compose.foundation:foundation", version.ref = "androidx-compose" } +androidx-compose-foundation-layout = { module = "androidx.compose.foundation:foundation-layout", version.ref = "androidx-compose" } +androidx-compose-runtime = { module = "androidx.compose.runtime:runtime", version.ref = "androidx-compose" } +androidx-compose-runtime-livedata = { module = "androidx.compose.runtime:runtime-livedata", version.ref = "androidx-compose" } +androidx-compose-runtime-rxjava2 = { module = "androidx.compose.runtime:runtime-rxjava2", version.ref = "androidx-compose" } +androidx-compose-runtime-rxjava3 = { module = "androidx.compose.runtime:runtime-rxjava3", version.ref = "androidx-compose" } +androidx-compose-runtime-saveable = { module = "androidx.compose.runtime:runtime-saveable", version.ref = "androidx-compose" } + +androidx-compose-material = { module = "androidx.compose.material:material", version.ref = "androidx-compose" } +androidx-compose-material-icons-core = { module = "androidx.compose.material:material-icons-core", version = "1.7.8" } +androidx-compose-material-icons-extended = { module = "androidx.compose.material:material-icons-extended", version = "1.7.8" } +androidx-compose-material-ripple = { module = "androidx.compose.material:material-ripple", version.ref = "androidx-compose" } +androidx-compose-material3 = { module = "androidx.compose.material3:material3", version.ref = "androidx-compose-material3" } +androidx-compose-material3-window-size = { module = "androidx.compose.material3:material3-window-size-class", version.ref = "androidx-compose-material3" } +androidx-compose-material3-adaptive-adaptive = { module = "androidx.compose.material3.adaptive:adaptive", version.ref = "androidx-compose-material3-adaptive" } +androidx-compose-material3-adaptive-layout = { module = "androidx.compose.material3.adaptive:adaptive-layout", version.ref = "androidx-compose-material3-adaptive" } +androidx-compose-material3-adaptive-navigation = { module = "androidx.compose.material3.adaptive:adaptive-navigation", version.ref = "androidx-compose-material3-adaptive" } +#endregion +#region firebase +firebase-bom = { module = "com.google.firebase:firebase-bom", version.ref = "firebase-bom" } +firebase-messaging = { module = "com.google.firebase:firebase-messaging-ktx", version.ref = "firebase-messaging" } +#endregion + +#region jetbrains +#region jetbrains compose +# https://github.com/JetBrains/compose-multiplatform +# https://kotlinlang.org/docs/multiplatform/compose-multiplatform-and-jetpack-compose.html#compose-multiplatform-and-jetpack-compose-features +jetbrains-compose-ui = { module = "org.jetbrains.compose.ui:ui", version.ref = "jetbrains-compose-multiplatform" } +jetbrains-compose-ui-util = { module = "org.jetbrains.compose.ui:ui-util", version.ref = "jetbrains-compose-multiplatform" } +jetbrains-compose-ui-graphics = { module = "org.jetbrains.compose.ui:ui-graphics", version.ref = "jetbrains-compose-multiplatform" } +jetbrains-compose-ui-text = { module = "org.jetbrains.compose.ui:ui-text", version.ref = "jetbrains-compose-multiplatform" } +jetbrains-compose-ui-tooling = { module = "org.jetbrains.compose.ui:ui-tooling", version.ref = "jetbrains-compose-multiplatform" } +jetbrains-compose-ui-window = { module = "org.jetbrains.compose.ui:ui-window", version.ref = "jetbrains-compose-multiplatform" } +jetbrains-compose-ui-backhandler = { module = "org.jetbrains.compose.ui:ui-backhandler", version.ref = "jetbrains-compose-multiplatform" } + +jetbrains-compose-components-resources = { module = "org.jetbrains.compose.components:components-resources", version.ref = "jetbrains-compose-multiplatform" } + + +jetbrains-compose-ui-tooling-preview = { module = "org.jetbrains.compose.ui:ui-tooling-preview", version.ref = "jetbrains-compose-multiplatform" } + +jetbrains-compose-foundation = { module = "org.jetbrains.compose.foundation:foundation", version.ref = "jetbrains-compose-multiplatform" } +jetbrains-compose-foundation-layout = { module = "org.jetbrains.compose.foundation:foundation-layout", version.ref = "jetbrains-compose-multiplatform" } +jetbrains-compose-material = { module = "org.jetbrains.compose.material:material", version.ref = "jetbrains-compose-multiplatform" } +jetbrains-compose-material-icons-core = { module = "org.jetbrains.compose.material:material-icons-core", version = "1.7.3" } +jetbrains-compose-material-icons-extended = { module = "org.jetbrains.compose.material:material-icons-extended", version = "1.7.3" } +jetbrains-compose-material-ripple = { module = "org.jetbrains.compose.material:material-ripple", version.ref = "jetbrains-compose-multiplatform" } +jetbrains-compose-material3 = { module = "org.jetbrains.compose.material3:material3", version.ref = "jetbrains-compose-material3" } +#jetbrains-compose-material3-window-size-class = { module = "org.jetbrains.compose.material3:material3-window-size-class", version.ref = "jetbrains-compose-material3" } +jetbrains-compose-material3-adaptive-navigation-suite = { module = "org.jetbrains.compose.material3:material3-adaptive-navigation-suite", version.ref = "jetbrains-compose-material3" } +jetbrains-compose-animation = { module = "org.jetbrains.compose.animation:animation", version.ref = "jetbrains-compose-multiplatform" } +jetbrains-compose-animation-core = { module = "org.jetbrains.compose.animation:animation-core", version.ref = "jetbrains-compose-multiplatform" } +jetbrains-compose-animation-graphics = { module = "org.jetbrains.compose.animation:animation-graphics", version.ref = "jetbrains-compose-multiplatform" } + + + +jetbrains-compose-runtime = { module = "org.jetbrains.compose.runtime:runtime", version.ref = "jetbrains-compose-multiplatform" } +jetbrains-compose-runtime-saveable= { module = "org.jetbrains.compose.runtime:runtime-saveable", version.ref = "jetbrains-compose-multiplatform" } +#endregion +#region jetbrains androidx +jetbrains-androidx-savedstate = { module = "org.jetbrains.androidx.savedstate:savedstate", version.ref = "jetbrains-androix-savedstate" } +jetbrains-androidx-savedstate-compose = { module = "org.jetbrains.androidx.savedstate:savedstate-compose", version.ref = "jetbrains-androix-savedstate" } +jetbrains-androidx-navigation-compose = { group = "org.jetbrains.androidx.navigation", name = "navigation-compose", version.ref = "jetbrains-navigation" } +jetbrains-androidx-navigation-runtime = { group = "org.jetbrains.androidx.navigation", name = "navigation-runtime", version.ref = "jetbrains-navigation" } +jetbrains-androidx-navigationevent-compose = { group = "org.jetbrains.androidx.navigationevent", name = "navigationevent-compose", version.ref = "jetbrains-navigationevent" } +jetbrains-androidx-navigationevent-compose-desktop= { group = "org.jetbrains.androidx.navigationevent", name = "navigationevent-compose-desktop", version.ref = "jetbrains-navigationevent" } +# https://mvnrepository.com/artifact/org.jetbrains.androidx.lifecycle/lifecycle-viewmodel-compose +jetbrains-androidx-lifecycle-viewmodel = { module = "org.jetbrains.androidx.lifecycle:lifecycle-viewmodel", version.ref = "jetbrains-lifecycle" } +jetbrains-androidx-lifecycle-viewmodel-compose = { module = "org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "jetbrains-lifecycle" } +jetbrains-androidx-lifecycle-runtime = { module = "org.jetbrains.androidx.lifecycle:lifecycle-runtime", version.ref = "jetbrains-lifecycle" } +jetbrains-androidx-lifecycle-runtime-compose = { module = "org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose", version.ref = "jetbrains-lifecycle" } + +jetbrains-androidx-paging-compose = { module = "org.jetbrains.androidx.paging:paging-compose", version.ref = "jetbrains-compose-multiplatform" } +jetbrains-androidx-paging-common = { module = "org.jetbrains.androidx.paging:paging-common", version.ref = "jetbrains-compose-multiplatform" } +#endregion +#region decompose +# decompose = { module = "com.arkivanov.decompose:decompose", version.ref = "decompose" } +# decompose-extensions-compose = { module = "com.arkivanov.decompose:extensions-compose", version.ref = "decompose" } +# essenty-lifecycle = { module = "com.arkivanov.essenty:lifecycle", version.ref = "essenty" } +#endregion +#endregion +#region compose nav +precompose = { module = "moe.tlaster:precompose", version.ref = "precompose" } +precompose-molecule = { module = "moe.tlaster:precompose-molecule", version.ref = "precompose" } +precompose-viewmodel = { module = "moe.tlaster:precompose-viewmodel", version.ref = "precompose" } +precompose-koin={module="moe.tlaster:precompose-koin",version.ref="precompose"} +voyager-koin = { module = "cafe.adriel.voyager:voyager-koin", version.ref = "voyager" } +voyager-navigator = { module = "cafe.adriel.voyager:voyager-navigator", version.ref = "voyager" } +voyager-transitions = { module = "cafe.adriel.voyager:voyager-transitions", version.ref = "voyager" } +voyager-tab = { module = "cafe.adriel.voyager:voyager-tab-navigator", version.ref = "voyager" } +#endregion + +#region Third_Party + +#region net + + +# Ref :https://mvnrepository.com/artifact/de.jensklingenberg.ktorfit?p=2 +de-ktorfit = { module = "de.jensklingenberg.ktorfit:ktorfit-lib", version.ref = "ktorfit" } +de-ktorfit-lib-light = { module = "de.jensklingenberg.ktorfit:ktorfit-lib-light", version.ref = "ktorfit" } +de-ktorfit-lib-jvm = { module = "de.jensklingenberg.ktorfit:ktorfit-lib-jvm", version.ref = "ktorfit" } +de-ktorfit-lib-android = { module = "de.jensklingenberg.ktorfit:ktorfit-lib-android", version.ref = "ktorfit" } +de-ktorfit-lib-js = { module = "de.jensklingenberg.ktorfit:ktorfit-lib-js", version.ref = "ktorfit" } +de-ktorfit-converters-response = { module = "de.jensklingenberg.ktorfit:ktorfit-converters-response", version.ref = "ktorfit" } +de-ktorfit-converters-call = { module = "de.jensklingenberg.ktorfit:ktorfit-converters-call", version.ref = "ktorfit" } +de-ktorfit-converters-flow = { module = "de.jensklingenberg.ktorfit:ktorfit-converters-flow", version.ref = "ktorfit" } + +okio = { module = "com.squareup.okio:okio", version.ref = "okio" } + +ktor-utils = { module = "io.ktor:ktor-utils", version.ref = "ktor" } +ktor-client-core = { module = "io.ktor:ktor-client-core", version.ref = "ktor" } +ktor-client-cio = { module = "io.ktor:ktor-client-cio", version.ref = "ktor" } +ktor-client-cio-jvm = { module = "io.ktor:ktor-client-cio-jvm", version.ref = "ktor" } +ktor-client-jvm = { module = "io.ktor:ktor-client-okhttp-jvm", version.ref = "ktor" } +ktor-client-java = { module = "io.ktor:ktor-client-java", version.ref = "ktor" } +ktor-client-okhttp = { module = "io.ktor:ktor-client-okhttp", version.ref = "ktor" } +ktor-client-android = { module = "io.ktor:ktor-client-android", version.ref = "ktor" } +ktor-client-ios = { module = "io.ktor:ktor-client-ios", version.ref = "ktor" } +ktor-client-darwin = { module = "io.ktor:ktor-client-darwin", version.ref = "ktor" } +ktor-client-json = { module = "io.ktor:ktor-client-json", version.ref="ktor" } +ktor-client-logging = { module = "io.ktor:ktor-client-logging", version.ref="ktor" } +ktor-client-js = { module = "io.ktor:ktor-client-js", version.ref = "ktor" } +ktor-client-jsonjs = { module = "io.ktor:ktor-client-json-js", version.ref="ktor"} +ktor-client-curl = { module = "io.ktor:ktor-client-curl", version.ref = "ktor" } +ktor-client-winhttp = { module = "io.ktor:ktor-client-winhttp", version.ref = "ktor" } +ktor-client-serialization = { module = "io.ktor:ktor-client-serialization", version.ref = "ktor" } +ktor-client-websockets = { module = "io.ktor:ktor-client-websockets", version.ref = "ktor" } +ktor-client-content-negotiation = { module = "io.ktor:ktor-client-content-negotiation", version.ref="ktor" } +ktor-serialization-json = { module = "io.ktor:ktor-serialization-kotlinx-json", version.ref="ktor" } +ktor-serialization-gson = { module = "io.ktor:ktor-serialization-gson", version.ref = "ktor" } +#ktor-serialization-kotlinx-json = { module = "io.ktor:ktor-serialization-kotlinx-json", version.ref = "ktor" } + +ktor-server-core = { module = "io.ktor:ktor-server-core-jvm", version.ref = "ktor" } +ktor-server-netty = { module = "io.ktor:ktor-server-netty-jvm", version.ref = "ktor" } + +retrofit2 = { group = "com.squareup.retrofit2", name = "retrofit", version.ref = "retrofit2" } +retrofit2-converter-gson= { group = "com.squareup.retrofit2", name = "converter-gson", version.ref = "retrofit2" } +retrofit2-converter-scalars= { group = "com.squareup.retrofit2", name = "converter-scalars", version.ref = "retrofit2" } +retrofit2-adapter-rxjava2= { group = "com.squareup.retrofit2", name = "adapter-rxjava2", version.ref = "retrofit2" } +retrofit2-converter-kotlinx-serialization= { group = "com.jakewharton.retrofit", name = "retrofit2-kotlinx-serialization-converter", version.ref = "retrofit2_kotlinx_serialization_converter" } + +okhttp= { group = "com.squareup.okhttp3", name = "okhttp", version.ref = "okhttp" } +okhttp-interceptor-logging= { group = "com.squareup.okhttp3", name = "logging-interceptor", version.ref = "okhttp" } +#endregion + +#region Page +paging-common = { module = "app.cash.paging:paging-common", version.ref = "pagingCommon" } +paging-compose-common = { module = "app.cash.paging:paging-compose-common", version.ref = "pagingComposeCommon" } +#endregion + +#region DI +# Ref https://medium.com/@anna972606/koin-for-jetpack-compose-7b04040167f9 +# Ref https://proandroiddev.com/compose-multiplatform-viewmodel-support-with-koin-di-ktor-1f2c95acb446 +koin-bom = { module = "io.insert-koin:koin-bom", version.ref = "koin" } +koin-core = { module = "io.insert-koin:koin-core", version.ref = "koin" } +koin-core-coroutines = { module = "io.insert-koin:koin-core-coroutines", version.ref = "koin" } +koin-android = { module = "io.insert-koin:koin-android", version.ref = "koin" } +koin-android-compat = { module = "io.insert-koin:koin-android-compat", version.ref = "koin" } +koin-androidx-workmanager = { module = "io.insert-koin:koin-androidx-workmanager", version.ref = "koin" } +koin-androidx-navigation = { module = "io.insert-koin:koin-androidx-navigation", version.ref = "koin" } + +koin-androidx-compose = { module = "io.insert-koin:koin-androidx-compose", version.ref = "koin" } +koin-androidx-compose-navigation = { module = "io.insert-koin:koin-androidx-compose-navigation", version.ref = "koin" } + +koin-logger-slf4j = { module = "io.insert-koin:koin-logger-slf4j", version.ref = "koin" } + +koin-compose = { module = "io.insert-koin:koin-compose", version.ref = "koin" } +koin-compose-viewmodel = { module = "io.insert-koin:koin-compose-viewmodel", version.ref = "koin" } +koin-compose-viewmodel-navigation = { module = "io.insert-koin:koin-compose-viewmodel-navigation", version.ref = "koin" } +koin-ktor = { module = "io.insert-koin:koin-ktor", version.ref = "koin" } +#endregion + +#region Permissions +moko_permissions = { module = "dev.icerock.moko:permission", version.ref = "moko-permissions-version" } +moko_permissions-compose = { module = "dev.icerock.moko:permissions-compose", version.ref = "moko-permissions-version" } +moko_permissions-test = { module = "dev.icerock.moko:permissions-test", version.ref = "moko-permissions-version" } +#endregion + +#region Image +coil-bom = { module = "io.coil-kt.coil3:coil-bom", version.ref = "coil" } +coil-core = { module = "io.coil-kt.coil3:coil-core", version.ref = "coil" } +coil = { module = "io.coil-kt.coil3:coil", version.ref = "coil" } +coil-compose = { module = "io.coil-kt.coil3:coil-compose", version.ref = "coil" } +coil-compose-core = { module = "io.coil-kt.coil3:coil-compose-core", version.ref = "coil" } +coil-network-core = { module = "io.coil-kt.coil3:coil-network-core", version.ref = "coil" } +coil-network-okhttp = { module = "io.coil-kt.coil3:coil-network-okhttp", version.ref = "coil" } +coil-network-ktor2 = { module = "io.coil-kt.coil3:coil-network-ktor2", version.ref = "coil" } +coil-network-ktor3 = { module = "io.coil-kt.coil3:coil-network-ktor3", version.ref = "coil" } +coil-network-cache-control = { module = "io.coil-kt.coil3:coil-network-cache-control", version.ref = "coil" } +coil-gif = { module = "io.coil-kt.coil3:coil-gif", version.ref = "coil" } +coil-svg = { module = "io.coil-kt.coil3:coil-svg", version.ref = "coil" } +coil-video = { module = "io.coil-kt.coil3:coil-video", version.ref = "coil" } + +kamel-image-default = { module = "media.kamel:kamel-image-default", version.ref = "kamelImage" } +kamel-image = { module = "media.kamel:kamel-image", version.ref = "kamelImage" } +kamel-decoder-image-bitmap = { module = "media.kamel:kamel-decoder-image-bitmap", version.ref = "kamelImage" } +kamel-decoder-image-bitmap-resizing = { module = "media.kamel:kamel-decoder-image-bitmap-resizing", version.ref = "kamelImage" } +kamel-decoder-image-vector= { module = "media.kamel:kamel-decoder-image-vector", version.ref = "kamelImage" } +kamel-decoder-svg-batik= { module = "media.kamel:kamel-decoder-svg-batik", version.ref = "kamelImage" } +kamel-decoder-svg-std = { module = "media.kamel:kamel-decoder-svg-std", version.ref = "kamelImage" } +kamel-fetcher-resources-jvm = { module = "media.kamel:kamel-fetcher-resources-jvm", version.ref = "kamelImage" } +kamel-fetcher-resources-android = { module = "media.kamel:kamel-fetcher-resources-android", version.ref = "kamelImage" } + +glide = { group = "com.github.bumptech.glide", name = "glide", version.ref = "glide" } +glide-compiler= { group = "com.github.bumptech.glide", name = "compiler", version.ref = "glide" } +glide-okhttp3= { group = "com.github.bumptech.glide", name = "okhttp3-integration", version.ref = "glide" } +glide-ksp= { group = "com.github.bumptech.glide", name = "ksp", version.ref = "glide" } +glide-transformations = { module = "jp.wasabeef:glide-transformations", version = "4.3.0" } -androidx-activityCompose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activityCompose" } -androidx-core = { group = "androidx.core", name = "core", version = "1.17.0" } -voyager-navigator = { module = "cafe.adriel.voyager:voyager-navigator", version.ref = "voyager_version" } -voyager-transitions = { module = "cafe.adriel.voyager:voyager-transitions", version.ref = "voyager_version" } -voyager-tab = { module = "cafe.adriel.voyager:voyager-tab-navigator", version.ref = "voyager_version" } -sdp-ssp = { module = "network.chaintech:sdp-ssp-compose-multiplatform", version.ref = "sdp_ssp_version" } image-loader = { module = "io.github.qdsfdhvh:image-loader", version.ref = "image_loader_version" } -media-player = { module = "network.chaintech:compose-multiplatform-media-player", version.ref = "media-player-version" } + +ismoy-belzspeedscan = {module = "io.github.ismoy:belzspeedscan", version.ref = "belzspeedscan"} +ismoy-imagepickerkmp = { module = "io.github.ismoy:imagepickerkmp", version.ref = "imagepickerkmp" } + +#endregion +#region MediaPlayer +sdp-ssp = { module = "network.chaintech:sdp-ssp-compose-multiplatform", version.ref = "sdp_ssp_version" } +chaintech-media-player= { module = "network.chaintech:compose-multiplatform-media-player", version.ref = "chaintech-media-player" } media-kit = { module = "network.chaintech:media-frame-kit", version.ref = "media_kit_version" } +ffmpeg = { group = "org.bytedeco", name = "ffmpeg", version.ref = "ffmpeg" } +vlcj = { group = "uk.co.caprica", name = "vlcj", version.ref = "vlcj" } +#endregion +#region DB +realm_kotlin_base= { group = "io.realm.kotlin", name = "library-base", version.ref = "realm_kotlin_version" } +realm_kotlin_sync= { group = "io.realm.kotlin", name = "library-sync", version.ref = "realm_kotlin_version" } -[plugins] +androidx-datastore-core-okio = { group = "androidx.datastore", name = "datastore-core-okio", version.ref = "datastore" } +androidx-datastore-preferences-core = { group = "androidx.datastore", name = "datastore-preferences-core", version.ref = "datastore" } +androidx-datastore-preferences = { group = "androidx.datastore", name = "datastore-preferences", version.ref = "datastore" } +androidx-room-compiler = { group = "androidx.room", name = "room-compiler", version.ref = "room" } +androidx-room-ktx = { group = "androidx.room", name = "room-ktx", version.ref = "room" } +androidx-room-rxjava2 = { group = "androidx.room", name = "room-rxjava2", version.ref = "room" } +androidx-room-rxjava3 = { group = "androidx.room", name = "room-rxjava3", version.ref = "room" } +androidx-room-guava = { group = "androidx.room", name = "room-guava", version.ref = "room" } +androidx-room-runtime = { group = "androidx.room", name = "room-runtime", version.ref = "room" } +androidx-room-paging = { group = "androidx.room", name = "room-paging", version.ref = "room" } +sqlite-bundled = { group = "androidx.sqlite", name = "sqlite-bundled", version.ref = "sqlite" } -multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" } -compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } -compose = { id = "org.jetbrains.compose", version.ref = "compose" } -android-application = { id = "com.android.application", version.ref = "agp" } -android-library = { id = "com.android.library", version.ref = "agp" } -mavenPublish = { id = "com.vanniktech.maven.publish", version = "0.29.0" } +sqlDelight-runtime = { module = "app.cash.sqldelight:runtime", version.ref = "sqldelight" } +sqlDelight-adapter = { module = "app.cash.sqldelight:primitive-adapters", version.ref = "sqldelight" } +sqlDelight-driver-android = { module = "app.cash.sqldelight:android-driver", version.ref = "sqldelight" } +sqlDelight-driver-native = { module = "app.cash.sqldelight:native-driver", version.ref = "sqldelight" } +sqlDelight-driver-sqlite = { module = "app.cash.sqldelight:sqlite-driver", version.ref = "sqldelight" } +#endregion + +#region Log +logback-classic = { module = "ch.qos.logback:logback-classic", version.ref = "logback" } +napier = { module = "io.github.aakira:napier", version.ref = "napier" } +rootbeer = { module = "com.scottyab:rootbeer-lib", version = "0.1.2" } +timber= { group = "com.jakewharton.timber", name = "timber", version.ref = "timber" } +# Network logger +# https://github.com/ChuckerTeam/chucker +chucker = { module = "com.github.chuckerteam.chucker:library", version.ref = "chucker" } +chucker-noop = { module = "com.github.chuckerteam.chucker:library-no-op", version.ref = "chucker" } +#endregion + +#region Third_Party +lottie-compose = { module = "com.airbnb.android:lottie-compose", version.ref = "lottieCompose" } +richeditor-compose = { module = "com.mohamedrejeb.richeditor:richeditor-compose", version.ref = "richeditorCompose" } +molecule-runtime = { module = "app.cash.molecule:molecule-runtime", version.ref = "moleculeRuntime" } +kermit = { module = "co.touchlab:kermit", version.ref = "kermit" } +composeView = { module = "io.github.ltttttttttttt:ComposeViews", version.ref = "composeView" } + +stately = { module = "co.touchlab:stately-common", version="2.1.0" } +skiko = { module = "org.jetbrains.skiko:skiko-awt-runtime-macos-arm64", version="0.9.21" } +#https://github.com/ethauvin/urlencoder replace android.net.Uri +urlencoder-lib= { module = "net.thauvin.erik.urlencoder:urlencoder-lib", version.ref = "urlencoder" } +multiplatform-settings = { module = "com.russhwolf:multiplatform-settings", version.ref = "settings" } +bignum = { module = "com.ionspin.kotlin:bignum", version.ref = "bignum" } +kotlinx-atomicfu = { module = "org.jetbrains.kotlinx:atomicfu", version.ref = "atomicfu" } +kotlinx-datetime = { module = "org.jetbrains.kotlinx:kotlinx-datetime", version.ref = "kotlinx-datetime" } +kmpio = { module = "io.github.skolson:kmp-io", version.ref = "kmp_io_version" } +# Charts +# https://github.com/patrykandpatrick/vico +vico-multiplatform = { group = "com.patrykandpatrick.vico", name = "multiplatform", version.ref = "vico" } +vico-multiplatform-m3 = { group = "com.patrykandpatrick.vico", name = "multiplatform-m3", version.ref = "vico" } +# PDF renderer +# https://mvnrepository.com/artifact/org.apache.pdfbox/pdfbox +pdfbox = { module = "org.apache.pdfbox:pdfbox", version = "3.0.5" } + +# File dialogs +# https://github.com/vinceglb/FileKit +filekit-core = { module = "io.github.vinceglb:filekit-core", version.ref = "filekit" } +filekit-coil = { module = "io.github.vinceglb:filekit-coil", version.ref = "filekit" } +filekit-dialogs-compose = { module = "io.github.vinceglb:filekit-dialogs-compose", version.ref = "filekit" } + +# Desugaring +# https://mvnrepository.com/artifact/com.android.tools/desugar_jdk_libs +desugaring = { module = "com.android.tools:desugar_jdk_libs", version.ref = "desugaring" } +#endregion +#endregion + +#region jxim +jxim-lib-down = { module = "com.jxim.p-independent:lib-down", version= "latest.integration" } +jxim-lib-umeng = { module = "com.jxim.p-common:lib-umeng", version= "latest.integration" } +jxim-lib-widget = { module = "com.jxim.p-base:lib-widget", version= "latest.integration" } +jxim-lib-push = { module = "com.jxim.p-independent:lib-push", version= "latest.integration" } +jxim-lib-red = { module = "com.jxim.p-red:lib-red-new", version= "latest.integration" } +jxim-m-open = { module = "com.jxim.p-dev-plat:m-open", version= "latest.integration" } +jxim-m-ad-pangle = { module = "com.jxim.p-dev-plat:m-ad-pangle", version= "latest.integration" } +#endregion + +#region jxim project +subsampling = { module = "com.davemorrissey.labs:subsampling-scale-image-view", version= "3.5.0" } +filedownloade = { module = "com.liulishuo.filedownloader:libraryg", version= "1.7.7" } +okdownload = { module = "com.liulishuo.okdownload:okdownload", version= "1.0.7" } +persistentCookieJar = { module = "com.github.franmontiel:PersistentCookieJar", version= "v1.0.0" } +nineoldandroids = { module = "com.nineoldandroids:library", version= "2.4.0" } +gifImageview = { module = "pl.droidsonroids.gif:android-gif-drawable", version= "1.2.10" } +svgaPlayer = { module = "com.github.yyued:SVGAPlayer-Android", version= "2.4.2" } +android-shape-imageview = { module = "com.github.siyamed:android-shape-imageview", version= "0.9.+@aar" } +facebook-rebound = { module = "com.facebook.rebound:rebound", version= "0.3.8" } +alibaba-ultraviewpager = { module = "com.alibaba.android:ultraviewpager", version= "1.0.4@aar" } +#endregion + +junit = { group = "junit", name = "junit", version.ref = "junit" } +kotlin-test = { module = "org.jetbrains.kotlin:kotlin-test", version.ref = "kotlin" } +kotlin-testJunit = { module = "org.jetbrains.kotlin:kotlin-test-junit", version.ref = "kotlin" } +androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "androidx-testExt" } +androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "androidx-espresso" } +androidx-test-runner = { group = "androidx.test", name = "runner", version.ref = "test_runner" } +androidx-test-core = { group = "androidx.test", name = "core", version.ref = "test_core" } +androidx-compose-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" } +androidx-compose-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" } +ktor-server-tests = { module = "io.ktor:ktor-server-tests-jvm", version.ref = "ktor" } +ktor-server-tests-host = { module = "io.ktor:ktor-server-test-host-jvm", version.ref = "ktor" } +runner = { group = "com.android.support.test", name = "runner", version.ref = "runner" } +espresso-core = { group = "com.android.support.test.espresso", name = "espresso-core", version.ref = "espressoCore" } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 73687c1..8d70673 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,7 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME From 0597a8ac7c72d7929c807110f54850d82f2706e9 Mon Sep 17 00:00:00 2001 From: Neo Date: Mon, 21 Sep 2026 11:05:04 +0800 Subject: [PATCH 4/7] Refactor: Decouple Applications from Shared logic to support AGP 9+ Standards - Migrated ':composeApp' (remapped to ':shared') from 'com.android.application' to 'com.android.library'. - Introduced independent ':androidApp' and ':desktopApp' modules to serve as platform-specific entry points. - Relocated platform-specific startup logic (AppActivity, Application class, main.kt) and Android resources/manifests from shared module to new app modules. - Configured ':shared' to publish library variants and established proper dependencies in platform apps. - Updated compiler options to utilize lazy task configuration via 'compileTaskProvider.configure' for better build performance. - Upgraded Android SDK Target/Compile versions to 37 and Java/JVM targets where applicable. - This architectural shift ensures strict compliance with the upcoming AGP 9.0+ requirement that prohibits mixing Multiplatform targets with Android Application plugins in a single module. --- androidApp/build.gradle.kts | 63 +++++++ androidApp/proguard-rules.pro | 21 +++ androidApp/src/main/AndroidManifest.xml | 22 +++ .../kotlin/org/chaintech/app/App.android.kt | 0 .../drawable-v24/ic_launcher_foreground.xml | 30 ++++ .../res/drawable/ic_launcher_background.xml | 170 ++++++++++++++++++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3593 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 5339 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2636 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 3388 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4926 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 7472 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 7909 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 11873 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 10652 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 16570 bytes androidApp/src/main/res/values/strings.xml | 3 + composeApp/build.gradle.kts | 37 ++-- .../src/androidMain/AndroidManifest.xml | 20 --- desktopApp/build.gradle.kts | 39 ++++ .../src/main}/kotlin/main.kt | 0 settings.gradle.kts | 5 +- 24 files changed, 372 insertions(+), 48 deletions(-) create mode 100644 androidApp/build.gradle.kts create mode 100644 androidApp/proguard-rules.pro create mode 100644 androidApp/src/main/AndroidManifest.xml rename {composeApp/src/androidMain => androidApp/src/main}/kotlin/org/chaintech/app/App.android.kt (100%) create mode 100644 androidApp/src/main/res/drawable-v24/ic_launcher_foreground.xml create mode 100644 androidApp/src/main/res/drawable/ic_launcher_background.xml create mode 100644 androidApp/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 androidApp/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 androidApp/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 androidApp/src/main/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 androidApp/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 androidApp/src/main/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 androidApp/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 androidApp/src/main/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 androidApp/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 androidApp/src/main/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 androidApp/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 androidApp/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 androidApp/src/main/res/values/strings.xml create mode 100644 desktopApp/build.gradle.kts rename {composeApp/src/jvmMain => desktopApp/src/main}/kotlin/main.kt (100%) diff --git a/androidApp/build.gradle.kts b/androidApp/build.gradle.kts new file mode 100644 index 0000000..13bf0c3 --- /dev/null +++ b/androidApp/build.gradle.kts @@ -0,0 +1,63 @@ +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + +plugins { + alias(libs.plugins.android.application) + alias(libs.plugins.kotlin.android) + alias(libs.plugins.compose.compiler) +} + +android { + namespace = "org.chaintech.app" + compileSdk = 37 + buildFeatures { + compose = true + } + + defaultConfig { + minSdk = 24 + targetSdk =37 + applicationId = "org.chaintech.app.androidApp" + versionCode = 1 + versionName = "1.0.0" + + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + } + + + buildTypes { + release { + isMinifyEnabled = false + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + } + } + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 + } + + packaging { + resources { + excludes += "/META-INF/{AL2.0,LGPL2.1}" + } + } +} + +kotlin { + compilerOptions { + jvmTarget = JvmTarget.JVM_1_8 + } +} + +dependencies { + implementation(project(":shared")) + + implementation(libs.androidx.activity.compose) + implementation(libs.chaintech.media.player) + implementation(libs.jetbrains.compose.ui.tooling.preview) + debugImplementation(libs.androidx.compose.ui.tooling) +} + diff --git a/androidApp/proguard-rules.pro b/androidApp/proguard-rules.pro new file mode 100644 index 0000000..481bb43 --- /dev/null +++ b/androidApp/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/androidApp/src/main/AndroidManifest.xml b/androidApp/src/main/AndroidManifest.xml new file mode 100644 index 0000000..085e46b --- /dev/null +++ b/androidApp/src/main/AndroidManifest.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/composeApp/src/androidMain/kotlin/org/chaintech/app/App.android.kt b/androidApp/src/main/kotlin/org/chaintech/app/App.android.kt similarity index 100% rename from composeApp/src/androidMain/kotlin/org/chaintech/app/App.android.kt rename to androidApp/src/main/kotlin/org/chaintech/app/App.android.kt diff --git a/androidApp/src/main/res/drawable-v24/ic_launcher_foreground.xml b/androidApp/src/main/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 0000000..2b068d1 --- /dev/null +++ b/androidApp/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/androidApp/src/main/res/drawable/ic_launcher_background.xml b/androidApp/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..e93e11a --- /dev/null +++ b/androidApp/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/androidApp/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/androidApp/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..eca70cf --- /dev/null +++ b/androidApp/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/androidApp/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/androidApp/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000..eca70cf --- /dev/null +++ b/androidApp/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/androidApp/src/main/res/mipmap-hdpi/ic_launcher.png b/androidApp/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..a571e60098c92c2baca8a5df62f2929cbff01b52 GIT binary patch literal 3593 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 P00000NkvXXu0mjfP=x?Y literal 0 HcmV?d00001 diff --git a/androidApp/src/main/res/mipmap-hdpi/ic_launcher_round.png b/androidApp/src/main/res/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..61da551c5594a1f9d26193983d2cd69189014603 GIT binary patch literal 5339 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 literal 0 HcmV?d00001 diff --git a/androidApp/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/androidApp/src/main/res/mipmap-xxhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..b216f2d313cc673d8b8c4da591c174ebed52795c GIT binary patch literal 11873 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 literal 0 HcmV?d00001 diff --git a/androidApp/src/main/res/values/strings.xml b/androidApp/src/main/res/values/strings.xml new file mode 100644 index 0000000..176b681 --- /dev/null +++ b/androidApp/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + MyApplication + \ No newline at end of file diff --git a/composeApp/build.gradle.kts b/composeApp/build.gradle.kts index c818423..b69f0e9 100644 --- a/composeApp/build.gradle.kts +++ b/composeApp/build.gradle.kts @@ -6,13 +6,14 @@ plugins { alias(libs.plugins.kotlin.multiplatform) alias(libs.plugins.compose.compiler) alias(libs.plugins.jetbrains.compose) - alias(libs.plugins.android.application) + alias(libs.plugins.android.library) } kotlin { androidTarget { + publishLibraryVariants("release", "debug") compilations.all { - compileTaskProvider { + compileTaskProvider.configure { compilerOptions { jvmTarget.set(JvmTarget.JVM_1_8) freeCompilerArgs.add("-Xjdk-release=${JavaVersion.VERSION_1_8}") @@ -36,8 +37,7 @@ kotlin { } val xcfName = "ComposeApp" - listOf( -// iosX64(),//from jetbrains compose 1.11.1 unsupport iosX64 (Apple remove support X86 OSX) + listOf( iosArm64(), iosSimulatorArm64() ).forEach { @@ -60,7 +60,7 @@ kotlin { implementation(libs.jetbrains.compose.material) implementation(libs.jetbrains.compose.material3) implementation(libs.jetbrains.compose.components.resources) - implementation(libs.jetbrains.compose.ui.tooling.preview ) + implementation(libs.jetbrains.compose.ui.tooling.preview) implementation(libs.voyager.navigator) implementation(libs.voyager.transitions) @@ -72,8 +72,6 @@ kotlin { implementation(libs.chaintech.media.player) } - - androidMain.dependencies { implementation(libs.jetbrains.compose.ui.tooling) implementation(libs.androidx.activity.compose) @@ -90,14 +88,13 @@ kotlin { android { namespace = "org.chaintech.app" - compileSdk = 36 - + compileSdk = 37 + buildFeatures { + compose = true + } defaultConfig { minSdk = 24 - targetSdk = 36 - applicationId = "org.chaintech.app.androidApp" - versionCode = 1 - versionName = "1.0.0" + targetSdk = 37 testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } @@ -110,20 +107,6 @@ android { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } - buildFeatures { - compose = true - } -} -compose.desktop { - application { - mainClass = "MainKt" - - nativeDistributions { - targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb) - packageName = "org.chaintech.app.desktopApp" - packageVersion = "1.0.0" - } - } } compose.resources { diff --git a/composeApp/src/androidMain/AndroidManifest.xml b/composeApp/src/androidMain/AndroidManifest.xml index 8f0de93..776e61f 100644 --- a/composeApp/src/androidMain/AndroidManifest.xml +++ b/composeApp/src/androidMain/AndroidManifest.xml @@ -1,25 +1,5 @@ - - - - - - - - - diff --git a/desktopApp/build.gradle.kts b/desktopApp/build.gradle.kts new file mode 100644 index 0000000..3e995b8 --- /dev/null +++ b/desktopApp/build.gradle.kts @@ -0,0 +1,39 @@ +import org.jetbrains.compose.desktop.application.dsl.TargetFormat + +plugins { + kotlin("jvm") + alias(libs.plugins.jetbrains.compose) + alias(libs.plugins.compose.compiler) +} + +java { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 +} + +kotlin { + compilerOptions { + jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17 + } +} + +dependencies { + implementation(project(":shared")) + + implementation(compose.desktop.currentOs) + implementation(libs.kotlinx.coroutines.swing) + implementation(libs.chaintech.media.player) + implementation(libs.jetbrains.compose.ui.tooling.preview) +} + +compose.desktop { + application { + mainClass = "MainKt" + + nativeDistributions { + targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb) + packageName = "org.chaintech.app.desktopApp" + packageVersion = "1.0.0" + } + } +} diff --git a/composeApp/src/jvmMain/kotlin/main.kt b/desktopApp/src/main/kotlin/main.kt similarity index 100% rename from composeApp/src/jvmMain/kotlin/main.kt rename to desktopApp/src/main/kotlin/main.kt diff --git a/settings.gradle.kts b/settings.gradle.kts index c83523f..0db899f 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -81,4 +81,7 @@ dependencyResolutionManagement { rootProject.name = "ReelsDemo" include(":shared") -project(":shared").projectDir = file("./composeApp") \ No newline at end of file +project(":shared").projectDir = file("./composeApp") + +include(":desktopApp") +include(":androidApp") \ No newline at end of file From 0c332c9b9ef27f5eb46552c2479e0662b59019f3 Mon Sep 17 00:00:00 2001 From: Neo Date: Mon, 21 Sep 2026 11:12:00 +0800 Subject: [PATCH 5/7] Refactor: Modularize platform entry points and streamline codebase structure - Split 'App.android.kt' in ':androidApp' into separate 'AndroidApp.kt' (Application lifecycle) and 'AppActivity.kt' (UI entry point) files to strictly align with the Single Responsibility Principle. - Declared explicit 'org.chaintech.app' package structure for desktop 'main.kt' and updated ':desktopApp' build.gradle.kts 'mainClass' target to 'org.chaintech.app.MainKt' to prevent future package/classpath conflicts. - Updated root '.gitignore' to ignore localized user-specific IDE/Xcode metadata settings. --- .gitignore | 144 ++++++++++++++++-- .../kotlin/org/chaintech/app/AndroidApp.kt | 14 ++ .../app/{App.android.kt => AppActivity.kt} | 12 -- desktopApp/build.gradle.kts | 2 +- .../kotlin/{ => org/chaintech/app}/main.kt | 3 +- .../xcschemes/xcschememanagement.plist | 5 + .../xcschemes/iosApp.xcscheme | 32 ++++ .../xcschemes/xcschememanagement.plist | 14 ++ 8 files changed, 200 insertions(+), 26 deletions(-) create mode 100644 androidApp/src/main/kotlin/org/chaintech/app/AndroidApp.kt rename androidApp/src/main/kotlin/org/chaintech/app/{App.android.kt => AppActivity.kt} (65%) rename desktopApp/src/main/kotlin/{ => org/chaintech/app}/main.kt (95%) create mode 100644 iosApp/iosApp.xcodeproj/project.xcworkspace/xcuserdata/neo.chang.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 iosApp/iosApp.xcodeproj/xcuserdata/neo.chang.xcuserdatad/xcschemes/iosApp.xcscheme create mode 100644 iosApp/iosApp.xcodeproj/xcuserdata/neo.chang.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/.gitignore b/.gitignore index 223e061..58e9255 100644 --- a/.gitignore +++ b/.gitignore @@ -1,16 +1,138 @@ - *.iml .gradle -.idea -.kotlin +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml .DS_Store -build -*/build -captures +/build +/captures .externalNativeBuild -.cxx +**/.cxx local.properties -xcuserdata/ -Pods/ -*.jks -*yarn.lock +# Created by .ignore support plugin (hsz.mobi) +### NetBeans template +nbproject/private/ +build/ +nbbuild/ +dist/ +nbdist/ +nbactions.xml +nb-configuration.xml + +# Mac OS X Garbage +.DS_Store +Thumbs.db + +.idea/ + +### Android Studio +/jniLibs +mobile/mobile.iml +mobile/mobile.iml +tv/tv.iml +app/app.iml +app/*.iml +*.iml +mobile/*.iml +tv/*.iml +.idea/workspace.xml +.idea/libraries +.idea/ +.idea +/build +/captures +### Android template +# Built application files +*.apk +*.ap_ +/build +/captures +# Files for the Dalvik VM +*.dex + +# Java class files +*.class + +# Generated files +bin/ +gen/ + +# Gradle files +.gradle/ + +# Local configuration file (sdk path, etc) +local.properties + +# Proguard folder generated by Eclipse +proguard/ + +# Log Files +*.log + + +### Java template +*.class + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.ear + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + + +### Eclipse template +*.pydevproject +.metadata +.gradle +bin/ +tmp/ +*.tmp +*.bak +*.swp +*~.nib +.settings/ +.loadpath +/build +/captures +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch + +# CDT-specific +.cproject + +# PDT-specific +.buildpath + +# sbteclipse plugin +.target + +# TeXlipse plugin +.texlipse + +# Android Studio +*.iml + +# Keep external libs +!app/libs/*.jar + +# script output +check-dpi.txt* + +# spring output +target + +# Kotlin2.0 +.kotlin/ +/common/common.podspec \ No newline at end of file diff --git a/androidApp/src/main/kotlin/org/chaintech/app/AndroidApp.kt b/androidApp/src/main/kotlin/org/chaintech/app/AndroidApp.kt new file mode 100644 index 0000000..7a64f62 --- /dev/null +++ b/androidApp/src/main/kotlin/org/chaintech/app/AndroidApp.kt @@ -0,0 +1,14 @@ +package org.chaintech.app + +import android.app.Application + +class AndroidApp : Application() { + companion object { + lateinit var INSTANCE: AndroidApp + } + + override fun onCreate() { + super.onCreate() + INSTANCE = this + } +} \ No newline at end of file diff --git a/androidApp/src/main/kotlin/org/chaintech/app/App.android.kt b/androidApp/src/main/kotlin/org/chaintech/app/AppActivity.kt similarity index 65% rename from androidApp/src/main/kotlin/org/chaintech/app/App.android.kt rename to androidApp/src/main/kotlin/org/chaintech/app/AppActivity.kt index e9eeffc..7753083 100644 --- a/androidApp/src/main/kotlin/org/chaintech/app/App.android.kt +++ b/androidApp/src/main/kotlin/org/chaintech/app/AppActivity.kt @@ -1,22 +1,10 @@ package org.chaintech.app -import android.app.Application import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import chaintech.videoplayer.util.PlaybackPreference -class AndroidApp : Application() { - companion object { - lateinit var INSTANCE: AndroidApp - } - - override fun onCreate() { - super.onCreate() - INSTANCE = this - } -} - class AppActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) diff --git a/desktopApp/build.gradle.kts b/desktopApp/build.gradle.kts index 3e995b8..04f5653 100644 --- a/desktopApp/build.gradle.kts +++ b/desktopApp/build.gradle.kts @@ -28,7 +28,7 @@ dependencies { compose.desktop { application { - mainClass = "MainKt" + mainClass = "org.chaintech.app.MainKt" nativeDistributions { targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb) diff --git a/desktopApp/src/main/kotlin/main.kt b/desktopApp/src/main/kotlin/org/chaintech/app/main.kt similarity index 95% rename from desktopApp/src/main/kotlin/main.kt rename to desktopApp/src/main/kotlin/org/chaintech/app/main.kt index 79f38b9..779e3a6 100644 --- a/desktopApp/src/main/kotlin/main.kt +++ b/desktopApp/src/main/kotlin/org/chaintech/app/main.kt @@ -1,11 +1,10 @@ - +package org.chaintech.app import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.ui.unit.dp import androidx.compose.ui.window.Window import androidx.compose.ui.window.application import androidx.compose.ui.window.rememberWindowState import chaintech.videoplayer.util.LocalWindowState -import org.chaintech.app.MainView import java.awt.Dimension fun main() = application { diff --git a/iosApp/iosApp.xcodeproj/project.xcworkspace/xcuserdata/neo.chang.xcuserdatad/xcschemes/xcschememanagement.plist b/iosApp/iosApp.xcodeproj/project.xcworkspace/xcuserdata/neo.chang.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..ee3458d --- /dev/null +++ b/iosApp/iosApp.xcodeproj/project.xcworkspace/xcuserdata/neo.chang.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,5 @@ + + + + + diff --git a/iosApp/iosApp.xcodeproj/xcuserdata/neo.chang.xcuserdatad/xcschemes/iosApp.xcscheme b/iosApp/iosApp.xcodeproj/xcuserdata/neo.chang.xcuserdatad/xcschemes/iosApp.xcscheme new file mode 100644 index 0000000..19ce4b0 --- /dev/null +++ b/iosApp/iosApp.xcodeproj/xcuserdata/neo.chang.xcuserdatad/xcschemes/iosApp.xcscheme @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + diff --git a/iosApp/iosApp.xcodeproj/xcuserdata/neo.chang.xcuserdatad/xcschemes/xcschememanagement.plist b/iosApp/iosApp.xcodeproj/xcuserdata/neo.chang.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..fa59f97 --- /dev/null +++ b/iosApp/iosApp.xcodeproj/xcuserdata/neo.chang.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + iosApp.xcscheme + + orderHint + 0 + + + + From 848029db0a72ae334e5bcba13124f5013460fbf9 Mon Sep 17 00:00:00 2001 From: Neo Date: Mon, 21 Sep 2026 14:04:24 +0800 Subject: [PATCH 6/7] Refactor: Finalize WasmJs application decoupling and fix video rendering issues - Completed the architectural split by establishing ':webApp' as a standalone module for browser deployment, ensuring strict compliance with AGP 9.0+ multiplatform standards. - Fixed the 'Audio only, No Video' bug in WasmJs by correctly mapping the root '/assets/wasmJs' directory to the web project's resources path via Gradle 'srcDirs'. This ensures Shaka Player's core JavaScript dependencies are correctly bundled and accessible to the browser. - Streamlined resource management by removing redundant static assets from the ':shared' module and consolidating Web-specific entry points into ':webApp'. - Updated 'index.html' and 'main.kt' to use a dedicated '#compose-target' container, providing better Z-Index control and future-proofing CSS integration. - Synchronized Kotlin version to 2.3.20 across the project to align the Wasm standard library with the compiler version, preventing runtime linkage errors. - Verified functional parity across Android, iOS, Desktop, and Web platforms following the multi-module restructuring. --- composeApp/build.gradle.kts | 18 +- composeApp/src/wasmJsMain/resources/1.mp4 | Bin 2188374 -> 0 bytes composeApp/src/wasmJsMain/resources/2.mp4 | Bin 1641163 -> 0 bytes composeApp/src/wasmJsMain/resources/3.mp4 | Bin 1409785 -> 0 bytes composeApp/src/wasmJsMain/resources/4.mp4 | Bin 1252251 -> 0 bytes .../src/wasmJsMain/resources/Believer.mp3 | Bin 2715925 -> 0 bytes .../src/wasmJsMain/resources/favicon.ico | Bin 5238 -> 0 bytes .../src/wasmJsMain/resources/index.html | 26 - .../src/wasmJsMain/resources/shaka-global.js | 4 - .../resources/shaka-player.compiled.js | 1263 ----------------- .../resources/shaka-wasm-helpers.js | 54 - .../webpack.config.d/module-output.config.js | 8 - gradle.properties | 3 + gradle/libs.versions.toml | 2 +- kotlin-js-store/wasm/yarn.lock | 18 + settings.gradle.kts | 3 +- webApp/build.gradle.kts | 45 + .../src/wasmJsMain/kotlin/main.kt | 5 +- webApp/src/wasmJsMain/resources/index.html | 52 + 19 files changed, 128 insertions(+), 1373 deletions(-) delete mode 100644 composeApp/src/wasmJsMain/resources/1.mp4 delete mode 100644 composeApp/src/wasmJsMain/resources/2.mp4 delete mode 100644 composeApp/src/wasmJsMain/resources/3.mp4 delete mode 100644 composeApp/src/wasmJsMain/resources/4.mp4 delete mode 100644 composeApp/src/wasmJsMain/resources/Believer.mp3 delete mode 100644 composeApp/src/wasmJsMain/resources/favicon.ico delete mode 100644 composeApp/src/wasmJsMain/resources/index.html delete mode 100644 composeApp/src/wasmJsMain/resources/shaka-global.js delete mode 100644 composeApp/src/wasmJsMain/resources/shaka-player.compiled.js delete mode 100644 composeApp/src/wasmJsMain/resources/shaka-wasm-helpers.js delete mode 100644 composeApp/src/wasmJsMain/resources/webpack.config.d/module-output.config.js create mode 100644 kotlin-js-store/wasm/yarn.lock create mode 100644 webApp/build.gradle.kts rename {composeApp => webApp}/src/wasmJsMain/kotlin/main.kt (64%) create mode 100644 webApp/src/wasmJsMain/resources/index.html diff --git a/composeApp/build.gradle.kts b/composeApp/build.gradle.kts index b69f0e9..89e375c 100644 --- a/composeApp/build.gradle.kts +++ b/composeApp/build.gradle.kts @@ -24,18 +24,6 @@ kotlin { jvm() - @OptIn(ExperimentalWasmDsl::class) - wasmJs { - browser { - commonWebpackConfig { - cssSupport { - enabled = true - } - } - } - binaries.executable() - } - val xcfName = "ComposeApp" listOf( iosArm64(), @@ -47,6 +35,11 @@ kotlin { } } + @OptIn(ExperimentalWasmDsl::class) + wasmJs { + browser() + } + sourceSets { all { languageSettings { @@ -94,7 +87,6 @@ android { } defaultConfig { minSdk = 24 - targetSdk = 37 testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } diff --git a/composeApp/src/wasmJsMain/resources/1.mp4 b/composeApp/src/wasmJsMain/resources/1.mp4 deleted file mode 100644 index 354ff36679fcebb906840a21463f0713030bb5e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2188374 zcmbrm2VBm5`^Wt|+k1+JmNbY44HYGlN-5f*v{ahf5>jcZwD*vRhG-d)Bx%qfDWV-o zrP4s-IS$w5xi6mo{lEYB>p5Td`}+QV-*Jr3as1BCv%GGCAUKbCo^*3|li5PR%fZ9d z`LAoKdS_QxZeZiFC?)DZNP3IvJ3|NZOr+YL|9Nt~t&OJ#T&=Zr^6>oI7K!+2 zmwfcEvum22Z5%9NO~Bdaf6AR)!LaV>Pj zYz5rhU2VLqZEXasP73UGb+v;jO&4nkf!*%5mYy)}>Y^whB`vvCT5^lj78waJutv?< z!Q~iSthf1VTx;WQi}(1#q#3;2odo{6UPIyGY2^ghDIT64Kg;#kJP~H;Z7mJg`1(^Q zf-C?;(SQ{MU;m#Se@*}6znm*8aJL1l?k4H%a_fO@SA(c7g!82|^6wwZ=(!kpUP1{oms*7^(icCc$}Y zSGdL(%u9_BMEf0rM0158SvC@+-g$!TKr%trxR)Ro&?m?>D+%%@e}aN{oS<;HLQq^0 zBq$nA5tI+j2`b9>1l9I?1XTbBLG@sfpeCays1-5@>H&FzX2U~*rc0KfeZoV~E}Ii{ z>sAQ5*h+%l_6EVQUWi~QHzOD?rw~le2?Vo*8NtF&MX=JnBv@~j6Ksr<1Y4UW!G2qi zSjC`8a4?-DI9fP})rSm-HG(gRHBY?>PSbLNb4ZKe;+-M5GW-dyISYb2k(%HUO(J-n zoFdjLuOimI*+}s28z*@08xnk*b`gBHA_;zVOM<`Lju2QiMF?DsCj`dp3Bg_PsL-2$ zetv(+g8xNbZTLa9Z*a2{Bw-Ui4JgisvZLtV(%69mNtz@H!}#linc0Q{17!2LbAhW(T^Km+VQ z4rg~0#Kw07!ITGWyc*8A5d@17?9U(wM#zV3h#=^~U^Ip^1_VJ(4PY!%aCR%O7f>Y# zap)cTVmJqH3*`B*-cJy#A%F52I7b8He#q@3*pY*_g!sr>09`l(d5~R)^|x>)2moIs zT0jfzLJnkWVeEo+fB=n%Y9JGM1ACxP$v_V>@Ikgj5Lys3<#w0{zhn>}^bA*GC3G^e50#<+_%!8JM9)NFEpf`cFfcF$q1B?d&58wn~ z_xET|5Xl9QhYQq55h#Ipp|*lhJ4%R)QW)l5z+4670QF!1ZAsvh3^h6ju)sa|rold0 z3xK_!J!SzT1@y%n_~`&JZ+{qDfE=&~_e2^1Jw#MNPTJrHbR<#%I731|yl`C$eF3@= z3vk~9yaK!dh>aHFAz^N4dlUfMB-9aNT7~tHgmaMB&wL>+;vSF>eTOxlfPD?0-ID&Gp1S4_$Hh=1~FWM z`Cg&z++Fsed5 zb$~`V8wh;`w#Yyq64Z+kbiikr+y+KJs0-*wo&$Cd10Wz-INU=m$j8A4#OwhvF@rzy zW>^P(xoTj{hI{BmPI1`3LJ$%FCHSUTgn7tY<2A$}1k3{1Gm@~+9_p0^;||!<3E*?_ z9M}#<<-i9S<3$JppPz$+|W;O z|MPtpdKTXo_8LK~iLh4%_I7}sD$p2gQ&mE}O(0%~jZF+jcvk74m+4AC8$QsB7vca7 z=&l2~a1XVk3xawHyq5_*Hi5%RnYc`t%~768#6aN!BF8)z)9ExlMKx;Cl3BW zPsUi7PltQx9|nk>26Cc<=)MGHdh1y%e9(Xp`l;Qdl_<&k-u7kK$;TrTIOND0y z{E|Vu__>G#K1o$@{u0=OJ^1;O9O9vb7zpsU9qK?C5AzTM*)`w<;0Ir*MXA$dL?UV+JkAP{VxSC=dhpaE=jri}V7n9f5}c^Z*&;K>Hr% z?E&yll*8w0$ouDO1N@f+Ko1dk4YB?F{0lJ=S^(6RfVhZr0Q3k^2|$eq=s#i>j>6fW zpCtrfM4jMS`1zRt_LCw3(1!%iE9oxq9OwtWLridv4C+n>y+H;(Q3L$!N@fE7nKX)ad8yA92A~McDMO`9JUf^!J+`totaO1$+PL+@E%S+mFxx-*)~ho&EU|KyLy0`i0Se!l*3?oWIF$#di<|>!}Iq` z$3N}-U;E;>eeizu%if=H{9o<=7Vkgm{M$U}^_$=S;r=)O|Iq7CJAdB)r#S!Yhu{4C z7kd8b=Rd{q=l(zQ|E2q%@%?%3w|lyO)$6zU|F$3h5BvYy{QivR&-1_X{ZofO&;8o> z@9OlMUNryGC@l*!?{2G{AO41UwQoL|9`z_ z`#0zQ@$>dizkllg+x`Dl&p-A3KivNo$0~2vPKAFrQ> z|6$?h(jWIb|FIu>LhRrFxu8gmShbVjc>43eZ+|ZEaP@-E)Bk$?|Ne8q>P!FkKNqaF z{rk@a4uAZ)z!d)aWBGSb|4N#SV8J;^24Awa9yUKe8k38{M>-1rog6=>|N0Ll3)|1V z|C*x0-SHft5tk{+yr{p8ZB{B%|;wbpKu1HX5 zJs~Koc4!?FACaA2d392j+f@(yYpym}IsO!WD8m0{d%{^s;_G%b> zrF~1#QI`^Q-Vy}8CNIH2dx&62P9YdWR0$@%4uYBG2EhWqpJ(~}jbKgGB3Qo&6Ktg? z3HG!!f_=P;ST!R;aNOc0Rx95k)_@#q3T6q;9WMyZhU)|u*%5;49Q-Ze%_za`6HV~Y zO%goUl!�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

v+me_&%jB9mM<`+zMm>M179%(#Xq-f`!Z2 zW62C*$~V>a;w^o>Zt|)$*iDGa)IhpT^x;Y9EE&jj! zbB3Qq68LhwHYP}o5CM;-=MD>QY|PU2J&mP^tuo6xEM)sol%q1@AuP}y zgfl*dMYNJHj789(pyzaZ6q`v5vGcA{Gex5Zql7ahmjJhl9Y_I(+u561%<2=v>(Y=< zf+XB2Ob-=KNV1gpM_Z{&ad)kq+~ypKV@*wVfc_bFzKAiULn`0%i`3>6fBW>1h=G?& z&>+Hidw`zl;xAMB%P1eaXD*9E1y#gRp^1Tv_141@=M)4Z%OhT%x+mru3$?saF}IO9 z8e5~s``n2f-W@WcGcfr1Ntf@2Az6Gn2jD}3Xyft<&|Yyf68xoTw&dBI9Wf`*Y8u90 zMO`yIjWsIiD@;WF6Smjj{-lq%-CUiCSep9k!;6fb*H8Jc5c%y7T)WFqvsWOjqshrg zmGPa+AuWGvA=PJI)466~^*S!5hwKt%I0g;5J$i#yrZs@5eWe3>!=+J z!#4amd{q#TMklg6!lkA6W`|OCkVgjI5b+?HivUEwcuz0eqvL68M<|vTkR}4Y7%((< zJB%qAI~q^ls_#+dg1#2)X5*lzuoL`6Kn1GCSLPMc7vt>(cmg?aHsyHlmbzOm3QVZL zk%?Dvdt2`Iz@Y=VT7BNS$oLW$mw8)u$v^TU_Xj?yTGI_%;QnsgZu}EdS#+U-i@?)P z%>oQ?^Sx&keOX&>k9)*`e#j?yPN0W}eTid%pgm`M8PI{+6Th-ln#Yfa&{=*RMy@!w zeDhdGSA%g}6`GRgYw6IGJR6>o5A^V3SV>lDpLtc$p3J}eW8Ps-F%la?GeGX5Wco`H zznEiy4rh~#N<++`GZn}oYFmaEg{}q0?MaG|3VF8!#Q<+~P0}NhD6+kdpQ+I+l^;RV zfg&HyBy5dq!Mk>06mZ`W+pA7(_*A?GVwVLgEfVX8v895w&N(7(5gxFeEe5TATbx{C z%7t6bj#NBjgb7;8x(_-6sUnoNY8sROFP1hw9Y;K>H14CHyx6eA@kE%nbBIh|uykla zvOsG(_Xi$2u#kgeuVq-4@ zO+C0Fn26vhBu>32(@_jL$tv#_k-fTU?X~O;J99`JZChM@o_7`w*mod!RFzbOS zMK5qL)U{x+D%MoL%w1)s^fv*60PDR8@(h`Mq)IJe$gaWNu~sORvg0Z&akHS^NtM<{ z%N{ThLDqPv+dmANamBD~n31kBbOq%JP}dv-B-IbiF;k-QJ)R*Q4r2X+bs%zI2Q|~Q z9m7%8SDs4Ga$k)hWN?gRRAZ1E6PR(vO*#6o;FQY2UAmyFwz+bL92D;yD`Nh2ARZ^2KLTm(~S6WX?4Rk^+qtdh;-6P>bK{( zfQLIV$yaOpt}9~GhG81LaA81o`7!)GaLpkNe`6$p(pHGXFMp3pB`44atuuH}^@5&G<<0IeJ_bTWu-Lr&K9Ur|X%TVBPp6HIj&_9F z^Y%DOb@*Uy^$yaK7Z{Wbb=8Kr`y&3;VZJIj`0jn!0--+$H)KSb?5t&tf{*vZZFWGN zivTTTMKvLd0m|QlxUz$BF#Ll_II8LK$mpZD#1WA#>D7n#tmV?Rmr zH4K={QU^Wp5z*~#Y{AE?-YUmD>M*8(gSV*3#%ipht2oR+*&k^Ij6zv$trDWj@zJ) zK|v;4nll+-ZN$Cn+%OoIXbw%Lx1z z=Ac(W_;*B$7JKMce{|mU-dH*#&}FGi+wM)R=5(ecF09hE0rO}6A!Hm!`%`_BVkdj$ zP72X0VZT`X__PA*hJ(%m0IfE>17fzPiY~_iNl|C<`5}z$Q;#|`1n4=F^ZWWc^ECH@ zndQ{e_{}McP(%fp7F31ddi~187!D=0+CfJE@MWMDQ^*CuH;g+&U8i`r_~r34r;Hq7 zi50z9atSrdZ!GmMgV;52894-;djGPO)?Z30S_3I^zTJ|G#UPyU`X`DD2z*Ww8ore# z+n62etY{6A{FN6~6%I}>5t|(Hx~KhrOlp5Dk@jV3kIVz?7ZF@O9<7KCPz}XX#^=Sr zFID{qDf%O*Ej`iy!st|r;LSac^>ayE9@P9E84$=Spqr6oX?hDp|6bmGh%Qv=RY@$+ zl(gnfOq1-ljeJ|OTJC`P`5!^vyXU~PX~dJGqpxWhHS%F=H4!yU#2)Dme-AMn?bEE>gx+9oL=e*a& zXYSJu5UqwC>DohYRrvFNk4P!$o%8e5n9#Rj)^Xo}lLtkqj0lg8Sv3H8q3ajlvUA@y zpuI_f>Q*+s5RTz(jgt5IpA3mHnBY|+XUARn8NOjp;LT!I@oaP)1WDo!cG$S;Y{d=N zO(@=#Wj8r1Bk~VIImJ{wI*fG4#r025ky6yIr3oDslXP`fV$7Z`ljMh4Ojqe*f?%o7 z*NsVUHxv$@fzq+Q7aiFxb3)CTB7EEkjuEDP5VtcSWAA8%yzWViO*JA7w&1998zco>tcM9EIBK(J zp?A~4^}^kLle4}hg`o;#0`fKoOUiR%r+hcke?qm-bsAEjKQ%XIILyQ7ii4(j)xG{$ zR1K>M4}`4aBNHe8>wbo9+?3yezCI5DvMPH67OsN{mz)u>@>eqj`d z$TAfH);czeT#`A)G2fKV6$WJ~DNyiJb>;gSOVZkp`;V2d8jhU?igk2G7c-5aW+Slc zuQgnp%LGFOPss@_ZSsHl$E<48xD%-ZuJEJsy2gAh?2Kf#P2?rNkjM%3Q;52;QDfy^ z`?DhVc-%m>%f_LW443!#~%QhWKX@Ru%&A$Io@&dJ|s7hChvge zV73D++WVWr*;nzim^(!N+(vRgnv6i__lk@Z1A9L9t+Y`e>nHRWs~unfQID1`0~xRkT;xYuHIxYuX*Q%cg zu&~J%&zSX(CbWmHW6PEwM2Vnuh~&M6M<4Mg{YJ)$Wd+!7=Fb#2my%(L_(Fw{W@lq& zzriWgs8|y-kjGqo7uMT9d5W=a@_GQVcg*)1TX{#OT=!4@KsWHtpJ~+*U9&t}`V2Iz z=Wav#s+qt8AXK<>A8@@G)Wh)h1Q5UoQkFAraeP8wdvaH9o=3y6J7Y0?k@Dnv-UC#u}s*iWp}kHGkG3I7>|jAt$lGJLs>ut9w@}U7`T|kg1y9vja}i-!VMzhM)PDoy#Jgo zUeEOFZ0K+P9eX&B2wAqVh*X~aqv7B}l*itb8svl~dEkGwuH95wmj35Ure8`wAqxijIj;y@O3d9>VRmE46mVK1*$7Ag%6bQ857!e3n|`37ej* zr2E#{Lodd{WBa)REL!mtTTQxG8=()PNBZ^#bBlHx%8rHjKq632~?ija)-V7McWF!NKPdWZnBS~ zo13=P9D^uG9fK+ho(vEg@F$wZxgtuZHkSETR3p%vksfVV)pHC<{hyL1W>Rl3HfijA zaQ;A=Y8Q`=AZR_o0c|$j5W8Yax?HWHou1v<@@5==y5lCIsM9+zCVNbeo3RqAFUt$_ zoh1&7)j~Gwx_t_pty21f`947++Z7fbkY2~m&YuJ(f|Oi)fb|f)5%JsI-_}quNngbe zFAN^3?RY;3{Ob$V1Zt`hwOB5e_02FSFP5^tlRph7U%U`FhEMVL4ix$$KRRks8&S_1 zJ@T-HS2w|krovYaiW(IVNbZIZs2PL`%D%&rBQ+Az!4CCNyR^v`A-vv~4KZsRg1gz@ zm6YWT35BY5fKM+jn%99w=Wco((^a0B>4y6kx3jiqJU~+-o%CO8C8??a=ao}QN35CR z;$uS7jx$+oa+<1CZ&UmyHt&lBMd~IdzJoR8l1z1CmU5s4t>&b>6No;IU0rlKQ?Yi6 z?Zsh>8=TKs0$|45xvB}lIsRMAfD5ugbm}_$CJ%4An7$ei2K9&;;U^9sHXg4X;zq~O zD);|WOQh1c*!&=F)&gjU1b$FHaS2b&#F*l&2#$A}({F}xaOs}@Honia%;Zf7oe~b6 zI<_?*evIUO5byiHt#1>c;>W2z#GcmMWlLc`{^MJ47J+f&mM~K$B$r(P@lcd5wTv2P zG0j{;tike&HXFyX@_ZZwq=EjT)d~C9)i$6z$nJ_jHo3pJM4=H~U`uI7-Mgz&U59x` z8$K!8w}YrdG4jt$T2bOUAn4Mn}s$H9glf# z{UkedcaNmzF7SHjwn2K!Uqcq58^jp!>E|h?~f+`%ZY0x5}T5UR-Z}}0GxP$Ed zx7C2b|Hgy)vtYvC!verWxSuN1^ClYEt0pF)FnHD=alJZ}2}LHQNbE^>ZcvcZkH6sp z694xwZE`gt2h(I3m$^k2p1)@$?rdFYk!09RwFz6IbGyh-!{wNFaUtk~0O7N-ZMD=8 zvY)a(q^o-|rq>MV8Q@_ZgBm^|r$)}eD`#~ zT=cd1{a3D3jL<4}xITsvj;M7itgGWR*kP00=UaX}ugPUg*|V~5n*!!FIb%I5+m;Kl zZP{r(n!)3{H9x$EitVd#a^y)NWSzZha_s9*nLfSOd&=&s>XF|lTl0pF(q6uS%v`?K$MI&g|IuPu zg_s8eGyp?w%*?2ix`|afShxshMDurF}yfR-RcZ6!nS-*DG=%ebN=t!JW`4o5vYW`B1zM%Of5=jfa-WNK6M{iA@543Aofcp zK?1hhI$JngZo^|WV`#v3;BEqBtNPf+(YYKL;>%%Ba+3x>d7U6RM`GYlq^SJL9(WMunlz09WJ*2rTqgeNM7I`WS zojNwq3bne%9RI7$mSZqeGWvf_l>2`_Nlh7oSlLPh?B$Ai<`Kh56zGn*X$_UfsXsF! z^5L=bKGhKwKdKEW68t`jcDxQ6yvI09*4}Xv#ETr{@KDRNAVr?rEiyJMbqdyveC-P* zMD7UTpTi0&%f`HAwMZ2(9otH*lU~Gi=JH%UeIz0Bjeiy$u~`luv~lC_!_?H@v^V*Y z4vudijfEujQt+iLLx}P9qR&Io>-ehK3Ie-(0!i4*3FOD*S!AoR6r4}qo*v(LVC0Hl zdnaQi;A$ZLirL==G{hGcc)a+rq68DLU^>tP^KbU~+WmESt7 z>;{&Jwg0qTeD=LCO1XMTE$R~C3`Zv40+c&L$Vv7@W;1+5P8-0LHUG>+KLa{~7LDl; zffvkY4IAffK9NL+od^R(NUv7>QOvj}BmuWl%G1ILU=`MCWm$t#yPJ8$n=;9Fx{QD( zqb{j`cbg7CFty|^5^pWh?<)`fTr_F&(d=fS{zzA_>Rpy`dRZHpxf*=)01x+LZ)UM> zw``)Dwf22|7y3-`O}Ib1z10Br#At}sL!@l@x?<}UDqA+c3`;JPzNe{R{y+$XR_?=@ zn*=k&&#*-F6HZMJRT1M*LsnYS+s_F~^YkL zV~V5WY-mwM;dufccKg`&X|SnzURDbp?zN>~Z0RE^n7ExJtJ%Zm&9jWYFXPj+7=OU6 zR%_}T78()Do(~H^nTE-B8L`suQ@tQL?!EGNV()0}zR)XIxdGHCwHkmo)&g~|5IAa4 zP5h-BY?&}}QQPo*U(V7%y&_xiaf9bKxafAYkSa)@w0}cmbPbfYQNEOkX3wT}(8_;& zPj&Ps#gy)z5Bl#2(Sz9C68Qk){*KA zIdN<3n=W*P%ZzZgN14iD#woUQ5N5dxapu0OT+WX3|G(l(+9s=+cut)ZE5tLwGxQCTUjnx)^`0mJt1=qe)SW!wNIc-x56QkSUa z+9Wvf!{*8$y=ewxI0sUFefM!9=$5~c62%&_#zZKsc_&1oN8$c_>J<=>`|@3|)li&B zFXZ+Omh@Q7$u~ULVhM(dwyS%1Ap&8upsXl zh!A;W1~nrW;tT5s=0j>av}35yf%sTqQ(1o zlhCh2u(=HOh!1nen?=2D#O=P{?|wH0nKcI3TagrZpx*5IRZjD^qdg-&2J$0+FTf`W zPK8-6=PeBdGn=QwS}N|?fi`zIPR7|SxHCmoE!J$qyxZZ6A`$w{_28jOU6MFpyx&F$`eD{`SrrL>hs1q5JM}on zl6VxA{mSOS9`nqxVtA=@(E`+*9y&exm_B5)7?A!G=8AntPaUhPl3vDs!JZ)t{VBN$ zo#1K`JU%$9#K@Ganu;YvUN3Wsc=qu%_QkI;`9Sa6s6M5nA`kDR3G-c!?b464!+nS@ ztGY5jLmFZvC_r^Q5#8Jf01#@Z!=2KcL&nLT(duQn&YJ1iFdQS-L1NK(GV{h%&HQE_$cFRv<=|DM|SQ5 zPMBv87H5SeH<#55{UM(N{!GfBWh<42k0aw0D_0Q>U>aiBQSW(LvP2r?3%T*e#~2&d zV)nnYk2-SkjLp`i>=BX#t7b1D63t^gFmDjf_*|P2F-94?&lcd^MU7tR!^&Z64oLKh z6C{Ky59JEKajR3!!*?w@IfRhLY#}qh{2ad|z@84PA z^m41MqhZ_e^rNQ$SXP*5MZ!h3l>$&+`_sHYU5h@HDcWLm?p`$ou*4WJh-V6kXVuOYeSUoafg> zH)_J<1NcMID@+5OD$*A-Ia-fbZ{POYg`?xk05&i+F!@;#o>Qt-5|o3J4lX)E*{P2O zlf(WdD~585HxA2ihCVY6e?8>v@uF_pg^z5Ftguh*`XR}4*H*{84@Wns+t=k-#`nC^ z_v!`4csSnRz@ znO%I|=%>-XEcUcCESpEGN)W`syEX-XK70~&;n`EpmJb{|MztLqx=9Cl0pz30)cYLi zXD2I-lBY~pFZ|%(tU-$9;)F@YjM_%;mMiQdc3+D&zD;Q`YE^NvL6$1QT1+4Eg;uLu zq}&E&kx0lA-HvhJ=t}#S59~e^`>E|Pg;}O}YidCrqSzugi@3gV-i_~IuLhnKbTDfq zhzdyN>J>IZKe`mAMkBNpFc8HTE5|R3FxIDGXfDc*(qR5|J3yEUn8~YL*nrQ z)N7z+>@fmdsoGbD!{|WUGkUx-0oJLSGqDf{UppGs+|oE)m{}c>p<1UcQa652s!-~F z>)7a&g%#JUc})T$n%uPv*kijYo#T!g6;9z0aq~B62Vq)=ka2I1Of?6FHq@DXZ_GQzjRL@=; zs0Z`XcM7ehtQx3m$=3Ee{h9Olv`*uFU)W7PnI;U*ld97P%;#G1F zQ^XNjWjUBO+YePVT=)-e4ui&#y@C!(*^Rd9Nu|th=mwtI87k=_=+YnP%H}pAR8{7B zhySh%DV1bl4ikAJ+ZE+KU zJBbg#?HTpg%s;Bfv{2vD!f?|@=&@lB9R}v>%T;F^;2)(#EdgjEdL?2|)4#YMntXus zglEon{;EuoU-7P+PJX~bi&N6HvQ9H&64ERyw-dq)zB06Utu$2*bs`l~%

M*=ba` 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