import org.jetbrains.compose.desktop.application.dsl.TargetFormat import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { alias(libs.plugins.kotlinMultiplatform) alias(libs.plugins.androidApplication) alias(libs.plugins.composeMultiplatform) alias(libs.plugins.composeCompiler) alias(libs.plugins.composeHotReload) alias(libs.plugins.jetbrains.kotlin.serialization) alias(libs.plugins.gms.google) alias(libs.plugins.ksp) alias(libs.plugins.androidx.room) } kotlin { androidTarget { compilerOptions { jvmTarget.set(JvmTarget.JVM_11) } } listOf( iosX64(), iosArm64(), iosSimulatorArm64() ).forEach { iosTarget -> iosTarget.binaries.framework { baseName = "ComposeApp" isStatic = true } } jvm() js { browser() binaries.executable() } @OptIn(ExperimentalWasmDsl::class) wasmJs { browser() binaries.executable() } sourceSets { androidMain.dependencies { implementation(compose.preview) implementation(libs.androidx.activity.compose) // Koin依赖注入 implementation(libs.koin.android) // Ktor网络请求 implementation(libs.ktor.client.android) // firebase implementation(project.dependencies.platform(libs.firebase.bom)) implementation(libs.firebase.analytics) // facebook // implementation(libs.android.facebook.android.sdk) // mmkv implementation(libs.android.mmkv) // sqlite implementation(libs.androidx.room.sqlite.wrapper) // admob implementation(libs.android.play.services.ads.identifier) } commonMain.dependencies { implementation(compose.runtime) implementation(compose.foundation) implementation(compose.material3) implementation(compose.ui) implementation(compose.components.resources) implementation(compose.components.uiToolingPreview) implementation(libs.androidx.lifecycle.viewmodel) implementation(libs.androidx.lifecycle.runtimeCompose) // 导航 implementation(libs.navigation.compose) // Koin依赖注入 implementation(libs.koin.core) implementation(libs.koin.compose) implementation(libs.koin.viewmodel) // Ktor网络请求 implementation(libs.ktor.client.core) implementation(libs.ktor.client.logging) implementation(libs.ktor.client.content.negotiation) implementation(libs.ktor.serialization.kotlinx.json) // coil implementation(libs.coil3.compose) implementation(libs.coil3.svg) // implementation(libs.coil3.gif) // implementation(libs.coil3.network.ktor3) // 添加日期时间处理依赖 implementation(libs.kotlinx.datetime) // ICON implementation(libs.material.icons.core) implementation(libs.material.icons.extended) // JSON implementation(libs.kotlinx.serialization.json) // Room implementation(libs.androidx.room.runtime) implementation(libs.androidx.sqlite.bundled) } iosMain.dependencies { // ktor网络请求 implementation(libs.ktor.client.darwin) // implementation(libs.kotlinx.coroutines.core) // implementation(libs.kotlinx.coroutines.core.native) } jvmMain.dependencies { implementation(compose.desktop.currentOs) implementation(libs.kotlinx.coroutinesSwing) } commonTest.dependencies { implementation(libs.kotlin.test) } } } android { namespace = "com.taskttl" compileSdk = libs.versions.android.compileSdk.get().toInt() defaultConfig { applicationId = "com.taskttl" minSdk = libs.versions.android.minSdk.get().toInt() targetSdk = libs.versions.android.targetSdk.get().toInt() versionCode = libs.versions.android.versionCode.get().toInt() versionName = libs.versions.android.versionName.get().toString() buildConfigField("String", "APP_NAME", "\"TaskTTL\"") manifestPlaceholders["facebookAppId"] = libs.versions.android.facebookAppId.get() manifestPlaceholders["facebookClientToken"] = libs.versions.android.facebookClientToken.get() } packaging { resources { excludes += "/META-INF/{AL2.0,LGPL2.1}" } } buildTypes { getByName("release") { isMinifyEnabled = true isShrinkResources = true buildConfigField("Boolean", "DEBUG", "false") buildConfigField("Integer", "APP_ID", "1") buildConfigField("Integer", "VERSION_CODE", libs.versions.android.versionCode.get()) } getByName("debug") { isMinifyEnabled = false buildConfigField("Boolean", "DEBUG", "true") buildConfigField("Integer", "APP_ID", "999") buildConfigField("Integer", "VERSION_CODE", libs.versions.android.versionCode.get()) } } compileOptions { sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 } buildFeatures { buildConfig = true } } dependencies { debugImplementation(compose.uiTooling) // add("kspCommonMainMetadata",libs.androidx.room.compiler) // add("kspCommonMain",libs.androidx.room.compiler) // add("kspWasmJs",libs.androidx.room.compiler) add("kspAndroid", libs.androidx.room.compiler) add("kspIosX64", libs.androidx.room.compiler) add("kspIosArm64", libs.androidx.room.compiler) add("kspIosSimulatorArm64", libs.androidx.room.compiler) } compose.desktop { application { mainClass = "com.taskttl.MainKt" nativeDistributions { targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb) packageName = "com.taskttl" packageVersion = "1.0.0" } } dependencies { ksp(libs.androidx.room.compiler) } } room { schemaDirectory("$projectDir/schemas") }