Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions api/android/multiplatform-viewmodel.api
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
public final class com/doublesymmetry/viewmodel/BuildConfig {
public static final field BUILD_TYPE Ljava/lang/String;
public static final field DEBUG Z
public static final field LIBRARY_PACKAGE_NAME Ljava/lang/String;
public fun <init> ()V
}

public abstract class com/doublesymmetry/viewmodel/ViewModel : androidx/lifecycle/ViewModel {
public fun <init> ()V
public final fun getViewModelScope ()Lkotlinx/coroutines/CoroutineScope;
protected fun onCleared ()V
}

25 changes: 25 additions & 0 deletions api/jvm/multiplatform-viewmodel.api
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
public abstract interface class com/doublesymmetry/viewmodel/Closeable {
public abstract fun close ()V
}

public final class com/doublesymmetry/viewmodel/CloseableCoroutineScope : com/doublesymmetry/viewmodel/Closeable, kotlinx/coroutines/CoroutineScope {
public static final field Companion Lcom/doublesymmetry/viewmodel/CloseableCoroutineScope$Companion;
public fun <init> (Lkotlin/coroutines/CoroutineContext;)V
public fun close ()V
public fun getCoroutineContext ()Lkotlin/coroutines/CoroutineContext;
}

public final class com/doublesymmetry/viewmodel/CloseableCoroutineScope$Companion {
}

public abstract class com/doublesymmetry/viewmodel/ViewModel {
public static final field Companion Lcom/doublesymmetry/viewmodel/ViewModel$Companion;
public fun <init> ()V
public final fun clear ()V
public final fun getViewModelScope ()Lkotlinx/coroutines/CoroutineScope;
protected fun onCleared ()V
}

public final class com/doublesymmetry/viewmodel/ViewModel$Companion {
}

129 changes: 129 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension
import org.jetbrains.kotlin.gradle.tasks.KotlinNativeCompile

plugins {
id("org.jetbrains.kotlin.multiplatform").version("1.6.10")
id("com.android.library").version("7.0.3")
id("convention.publication")
id("binary-compatibility-validator").version("0.8.0")
id("io.gitlab.arturbosch.detekt").version("1.19.0")
}

group = "com.doublesymmetry"
version = "0.0.3"

repositories {
google()
mavenCentral()
}

android {
compileSdk = 32
defaultConfig {
minSdk = 21
targetSdk = 32
}
}

kotlin {
android {
publishAllLibraryVariants()
publishLibraryVariantsGroupedByFlavor = true
}

jvm {
compilations.all {
kotlinOptions {
kotlinOptions.jvmTarget = "11"
freeCompilerArgs = freeCompilerArgs + ["-Xjvm-default=all"]
}
}
}

js(BOTH) {
compilations.all {
kotlinOptions {
moduleKind = "commonjs"
}
}
browser()
nodejs()
}

macosX64()
macosArm64()
ios()
iosSimulatorArm64()
watchos()
watchosSimulatorArm64()
tvos()
tvosSimulatorArm64()

linuxX64()
mingwX64()

sourceSets {
commonMain {
dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.1")
}
}
commonTest {
dependencies {
implementation(kotlin("test"))
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.6.1")
}
}

androidMain {
dependencies {
api("androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.1")
}
}
androidTest

nonAndroidMain {
dependsOn(commonMain)
dependencies {
implementation("org.jetbrains.kotlinx:atomicfu:0.17.2")
}
}

nonAndroidTest {
dependsOn(commonTest)
}

targets.all { target ->
if (target.platformType != KotlinPlatformType.androidJvm && target.platformType != KotlinPlatformType.common) {
target.compilations["main"].defaultSourceSet {
dependsOn(nonAndroidMain)
}
target.compilations["test"].defaultSourceSet {
dependsOn(nonAndroidTest)
}
}
}
// Workaround for https://youtrack.jetbrains.com/issue/KT-51763
// Make sure commonization runs before any compilation task.
tasks.withType(KotlinNativeCompile).configureEach {
it.dependsOn(tasks.named("commonize"))
}

all {
languageSettings.optIn("kotlin.RequiresOptIn")
languageSettings.optIn("kotlinx.coroutines.ExperimentalCoroutinesApi")
}
}
}

kotlin.targets.withType(KotlinNativeTarget.class) {
binaries.all {
binaryOptions["memoryModel"] = "experimental"
}
}

rootProject.plugins.withType(Class.forName("org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin")) {
rootProject.extensions.getByType(NodeJsRootExtension.class).nodeVersion = "16.0.0"
}
109 changes: 0 additions & 109 deletions build.gradle.kts

This file was deleted.

1 change: 0 additions & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,3 @@ kotlin.code.style=official
kotlin.mpp.enableGranularSourceSetsMetadata=true
kotlin.native.enableDependencyPropagation=false
android.useAndroidX=true
kotlin.native.binary.memoryModel=experimental
Loading