-
Notifications
You must be signed in to change notification settings - Fork 0
/
kmp-library.gradle.kts
88 lines (76 loc) · 1.71 KB
/
kmp-library.gradle.kts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
package my
import my.util.Libs
import my.util.Versions
import org.jetbrains.kotlin.gradle.targets.js.yarn.YarnPlugin
/**
* Common Kotlin Multiplatform setup for both common and frontend modules.
*/
plugins {
kotlin("multiplatform")
id("com.android.library")
kotlin("plugin.serialization")
}
kotlin {
androidTarget()
jvm()
js(IR) {
browser {
testTask {
useKarma {
// for developers, please use your own browsers in convenience
useChromiumHeadless()
}
}
}
}
listOf(
iosX64(),
iosArm64(),
iosSimulatorArm64()
).forEach {
it.binaries.framework {
baseName = "shared" // should we set same baseName for all gradle modules?
isStatic = true
}
}
applyDefaultHierarchyTemplate()
sourceSets {
commonMain.dependencies {
implementation(kotlin("stdlib"))
implementation(Libs.SerializationJson)
}
commonTest.dependencies {
implementation(kotlin("test"))
}
val commonJvmMain by creating {
dependsOn(commonMain.get())
}
jvmMain.get().dependsOn(commonJvmMain)
androidMain.get().dependsOn(commonJvmMain)
}
}
java {
toolchain {
languageVersion = JavaLanguageVersion.of(Versions.Java)
}
}
android {
compileSdk = 34
defaultConfig {
minSdk = 26
}
// setting targetSdk on per with compileSdk has great benefits, such as layout inspector
testOptions {
targetSdk = 34
}
lint {
targetSdk = 34
}
// jvm version is covered by java toolchain above
}
// convenient way to automatically update yarn.lock if dep changes
plugins.withType<YarnPlugin> {
the<org.jetbrains.kotlin.gradle.targets.js.yarn.YarnRootExtension>().apply {
yarnLockAutoReplace = true
}
}