import com.android.build.api.dsl.Packaging import dev.icerock.gradle.MRVisibility import org.jetbrains.kotlin.gradle.dsl.ExplicitApiMode import org.jetbrains.kotlin.gradle.dsl.JvmTarget import org.jetbrains.kotlin.gradle.plugin.mpp.apple.XCFramework plugins { alias(libs.plugins.kotlinMultiplatform) alias(libs.plugins.androidMultiplatform) alias(libs.plugins.apolloGraphQL) alias(libs.plugins.multiplatformResources) } kotlin { explicitApi = ExplicitApiMode.Warning androidLibrary { namespace = "com.foo.mobile.kmp.colossus" compileSdk = 36 minSdk = 30 compilerOptions { jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17) } } val xcframeworkName = "Colossus" val xcf = XCFramework(xcframeworkName) listOf( iosArm64(), iosSimulatorArm64(), ).forEach { it.binaries.framework { baseName = xcframeworkName freeCompilerArgs = listOf( "-Xoverride-konan-properties=" + "osVersionMin.ios_arm64=16.0;" + "osVersionMin.ios_simulator_arm64=16.0" ) binaryOption("bundleId", "com.foo.mobile.kmp.$xcframeworkName") // export(libs.moko.resources) export(libs.moko.graphics) binaryOption("bundleId", "com.foo.mobile.kmp.$xcframeworkName") binaryOption("bundleVersion", "2") xcf.add(this) } } swiftPMDependencies { // Import FirebaseAnalytics into your Kotlin code swiftPackage( url = url("https://github.com/DataDog/dd-sdk-ios.git"), version = from("2.20.0"), products = listOf( product("DatadogCore"), product("DatadogRUM"), product("DatadogCrashReporting"), ), ) } sourceSets { commonMain.dependencies { api(libs.compose.webview.multiplatform) // https://github.com/KevinnZou/compose-webview-multiplatform api(libs.moko.biometry) api(libs.moko.graphics) api(libs.moko.permissions) api(libs.moko.resources) api(libs.moko.resources.compose) implementation(libs.apollo.runtime) implementation(libs.dd.ktor3) implementation(libs.dd.rum) implementation(libs.kermit.logger) implementation(libs.koin.core) implementation(libs.kotlinx.coroutines.core) implementation(libs.ktor.client.core) implementation(libs.moko.permissions.bluetooth) implementation(libs.moko.permissions.camera) // implementation(libs.moko.permissions.contacts) // Investigate duplicate BuildConfig class implementation(libs.moko.permissions.gallery) implementation(libs.moko.permissions.location) implementation(libs.moko.permissions.microphone) implementation(libs.moko.permissions.motion) implementation(libs.moko.permissions.notifications) implementation(libs.moko.permissions.storage) implementation(libs.uuid) implementation(project.dependencies.platform(libs.koin.bom)) implementation(libs.jwt.kt) } commonTest.dependencies { implementation(libs.koin.test) // implementation(libs.koin.test.junit) implementation(libs.kotlin.test) implementation(libs.moko.permissions.test) implementation(libs.moko.resources.test) } androidMain.dependencies { implementation(libs.koin.android) implementation(libs.kotlinx.coroutines.android) implementation(libs.ktor.client.okhttp) } iosMain.dependencies { implementation(libs.ktor.client.darwin) implementation(libs.parcelize) } iosSimulatorArm64Main.dependencies { } } } apollo { service("righttrack") { srcDir("src/commonMain/graphql/righttrack") packageName.set("com.foo.mobile.kmp.colossus.righttrack") } service("safecoinsurance") { srcDir("src/commonMain/graphql/safecoinsurance") packageName.set("com.foo.mobile.kmp.colossus.safecoinsurance") } } multiplatformResources { resourcesPackage.set("com.foo.mobile.kmp.colossus") // required resourcesClassName.set("SharedRes") // optional, default MR resourcesVisibility.set(MRVisibility.Public) // optional, default Public iosBaseLocalizationRegion.set("en") // optional, default "en" iosMinimalDeploymentTarget.set("16.0") // optional, default "9.0" // configureCopyXCFrameworkResources("Colossus") } tasks.register("printJavaVersion") { doLast { println("Java version used by Gradle: ${System.getProperty("java.version")}") println("JAVA_HOME: " + System.getProperty("java.home")) } }