Convert `lifecycle-runtime-compose` to multiplatform
* Only platforms supported by Compose in the AndroidX repository will be supported by `lifecycle-runtime-compose` (`android`, `desktop`).
* That is equivalent to what has been done with other artifacts, such as `lifecycle-viewmodel-compose`.
* Credits to Jake Wharton for the original contribution, his CL can be found at aosp/3002225
Test: `gw -p lifecycle bOS`
RelNote: "Added multiplatform support for `lifecycle-runtime-compose`."
Bug: 331769623
Change-Id: If7a714e598e360a1960f8b3a673b33538f595ff4
diff --git a/docs-tip-of-tree/build.gradle b/docs-tip-of-tree/build.gradle
index 8de75841..2c6fac9 100644
--- a/docs-tip-of-tree/build.gradle
+++ b/docs-tip-of-tree/build.gradle
@@ -255,7 +255,7 @@
docs(project(":lifecycle:lifecycle-reactivestreams"))
docs(project(":lifecycle:lifecycle-reactivestreams-ktx"))
kmpDocs(project(":lifecycle:lifecycle-runtime"))
- docs(project(":lifecycle:lifecycle-runtime-compose"))
+ kmpDocs(project(":lifecycle:lifecycle-runtime-compose"))
samples(project(":lifecycle:lifecycle-runtime-compose:lifecycle-runtime-compose-samples"))
kmpDocs(project(":lifecycle:lifecycle-runtime-ktx"))
docs(project(":lifecycle:lifecycle-runtime-testing"))
diff --git a/lifecycle/lifecycle-runtime-compose/build.gradle b/lifecycle/lifecycle-runtime-compose/build.gradle
index 5acc0e3..78755d4 100644
--- a/lifecycle/lifecycle-runtime-compose/build.gradle
+++ b/lifecycle/lifecycle-runtime-compose/build.gradle
@@ -22,28 +22,45 @@
* modifying its settings.
*/
import androidx.build.LibraryType
+import androidx.build.PlatformIdentifier
plugins {
id("AndroidXPlugin")
id("com.android.library")
id("AndroidXComposePlugin")
- id("org.jetbrains.kotlin.android")
}
-dependencies {
- api projectOrArtifact(":lifecycle:lifecycle-runtime-ktx")
- api("androidx.annotation:annotation-experimental:1.4.0")
- api("androidx.compose.runtime:runtime:1.0.1")
+androidXMultiplatform {
+ android()
+ desktop()
- implementation(libs.kotlinStdlib)
+ defaultPlatform(PlatformIdentifier.ANDROID)
- androidTestImplementation(projectOrArtifact(":lifecycle:lifecycle-runtime-testing"))
- androidTestImplementation projectOrArtifact(":compose:ui:ui-test-junit4")
- androidTestImplementation project(":compose:test-utils")
- androidTestImplementation(libs.testRules)
- androidTestImplementation(libs.testRunner)
- androidTestImplementation(libs.junit)
- androidTestImplementation(libs.truth)
+ sourceSets {
+ commonMain {
+ dependencies {
+ api(projectOrArtifact(":lifecycle:lifecycle-runtime"))
+ api(project(":annotation:annotation"))
+ api(project(":compose:runtime:runtime"))
+ }
+ }
+
+ androidMain {
+ dependsOn(commonMain)
+ }
+
+ androidInstrumentedTest {
+ dependencies {
+ implementation(projectOrArtifact(":lifecycle:lifecycle-runtime-testing"))
+ implementation(projectOrArtifact(":compose:ui:ui-test-junit4"))
+ implementation(project(":compose:test-utils"))
+ implementation(libs.testRules)
+ implementation(libs.testRunner)
+ implementation(libs.junit)
+ implementation(libs.truth)
+ }
+ }
+ }
}
androidx {
@@ -52,7 +69,7 @@
inceptionYear = "2021"
description = "Compose integration with Lifecycle"
metalavaK2UastEnabled = true
- samples(projectOrArtifact(":lifecycle:lifecycle-runtime-compose:lifecycle-runtime-compose-samples"))
+ samples(project(":lifecycle:lifecycle-runtime-compose:lifecycle-runtime-compose-samples"))
}
android {
diff --git a/lifecycle/lifecycle-runtime-compose/src/androidTest/java/androidx/lifecycle/compose/CollectAsStateWithLifecycleTests.kt b/lifecycle/lifecycle-runtime-compose/src/androidInstrumentedTest/kotlin/androidx/lifecycle/compose/CollectAsStateWithLifecycleTests.kt
similarity index 100%
rename from lifecycle/lifecycle-runtime-compose/src/androidTest/java/androidx/lifecycle/compose/CollectAsStateWithLifecycleTests.kt
rename to lifecycle/lifecycle-runtime-compose/src/androidInstrumentedTest/kotlin/androidx/lifecycle/compose/CollectAsStateWithLifecycleTests.kt
diff --git a/lifecycle/lifecycle-runtime-compose/src/androidTest/java/androidx/lifecycle/compose/DropUnlessLifecycleTest.kt b/lifecycle/lifecycle-runtime-compose/src/androidInstrumentedTest/kotlin/androidx/lifecycle/compose/DropUnlessLifecycleTest.kt
similarity index 100%
rename from lifecycle/lifecycle-runtime-compose/src/androidTest/java/androidx/lifecycle/compose/DropUnlessLifecycleTest.kt
rename to lifecycle/lifecycle-runtime-compose/src/androidInstrumentedTest/kotlin/androidx/lifecycle/compose/DropUnlessLifecycleTest.kt
diff --git a/lifecycle/lifecycle-runtime-compose/src/androidTest/java/androidx/lifecycle/compose/LifecycleEffectTest.kt b/lifecycle/lifecycle-runtime-compose/src/androidInstrumentedTest/kotlin/androidx/lifecycle/compose/LifecycleEffectTest.kt
similarity index 100%
rename from lifecycle/lifecycle-runtime-compose/src/androidTest/java/androidx/lifecycle/compose/LifecycleEffectTest.kt
rename to lifecycle/lifecycle-runtime-compose/src/androidInstrumentedTest/kotlin/androidx/lifecycle/compose/LifecycleEffectTest.kt
diff --git a/lifecycle/lifecycle-runtime-compose/src/androidTest/java/androidx/lifecycle/compose/LifecycleExtTest.kt b/lifecycle/lifecycle-runtime-compose/src/androidInstrumentedTest/kotlin/androidx/lifecycle/compose/LifecycleExtTest.kt
similarity index 100%
rename from lifecycle/lifecycle-runtime-compose/src/androidTest/java/androidx/lifecycle/compose/LifecycleExtTest.kt
rename to lifecycle/lifecycle-runtime-compose/src/androidInstrumentedTest/kotlin/androidx/lifecycle/compose/LifecycleExtTest.kt
diff --git a/lifecycle/lifecycle-runtime-compose/src/main/java/androidx/lifecycle/compose/DropUnlessLifecycle.kt b/lifecycle/lifecycle-runtime-compose/src/commonMain/kotlin/androidx/lifecycle/compose/DropUnlessLifecycle.kt
similarity index 100%
rename from lifecycle/lifecycle-runtime-compose/src/main/java/androidx/lifecycle/compose/DropUnlessLifecycle.kt
rename to lifecycle/lifecycle-runtime-compose/src/commonMain/kotlin/androidx/lifecycle/compose/DropUnlessLifecycle.kt
diff --git a/lifecycle/lifecycle-runtime-compose/src/main/java/androidx/lifecycle/compose/FlowExt.kt b/lifecycle/lifecycle-runtime-compose/src/commonMain/kotlin/androidx/lifecycle/compose/FlowExt.kt
similarity index 97%
rename from lifecycle/lifecycle-runtime-compose/src/main/java/androidx/lifecycle/compose/FlowExt.kt
rename to lifecycle/lifecycle-runtime-compose/src/commonMain/kotlin/androidx/lifecycle/compose/FlowExt.kt
index d5cc18c..3aaed3b 100644
--- a/lifecycle/lifecycle-runtime-compose/src/main/java/androidx/lifecycle/compose/FlowExt.kt
+++ b/lifecycle/lifecycle-runtime-compose/src/commonMain/kotlin/androidx/lifecycle/compose/FlowExt.kt
@@ -53,6 +53,7 @@
* @param context [CoroutineContext] to use for collecting.
*/
@Composable
+@Suppress("StateFlowValueCalledInComposition") // Initial value for an ongoing collect.
fun <T> StateFlow<T>.collectAsStateWithLifecycle(
lifecycleOwner: LifecycleOwner = LocalLifecycleOwner.current,
minActiveState: Lifecycle.State = Lifecycle.State.STARTED,
@@ -87,6 +88,7 @@
* @param context [CoroutineContext] to use for collecting.
*/
@Composable
+@Suppress("StateFlowValueCalledInComposition") // Initial value for an ongoing collect.
fun <T> StateFlow<T>.collectAsStateWithLifecycle(
lifecycle: Lifecycle,
minActiveState: Lifecycle.State = Lifecycle.State.STARTED,
diff --git a/lifecycle/lifecycle-runtime-compose/src/main/java/androidx/lifecycle/compose/LifecycleEffect.kt b/lifecycle/lifecycle-runtime-compose/src/commonMain/kotlin/androidx/lifecycle/compose/LifecycleEffect.kt
similarity index 100%
rename from lifecycle/lifecycle-runtime-compose/src/main/java/androidx/lifecycle/compose/LifecycleEffect.kt
rename to lifecycle/lifecycle-runtime-compose/src/commonMain/kotlin/androidx/lifecycle/compose/LifecycleEffect.kt
diff --git a/lifecycle/lifecycle-runtime-compose/src/main/java/androidx/lifecycle/compose/LifecycleExt.kt b/lifecycle/lifecycle-runtime-compose/src/commonMain/kotlin/androidx/lifecycle/compose/LifecycleExt.kt
similarity index 100%
rename from lifecycle/lifecycle-runtime-compose/src/main/java/androidx/lifecycle/compose/LifecycleExt.kt
rename to lifecycle/lifecycle-runtime-compose/src/commonMain/kotlin/androidx/lifecycle/compose/LifecycleExt.kt
diff --git a/lifecycle/lifecycle-runtime-compose/src/main/java/androidx/lifecycle/compose/LocalLifecycleOwner.kt b/lifecycle/lifecycle-runtime-compose/src/commonMain/kotlin/androidx/lifecycle/compose/LocalLifecycleOwner.kt
similarity index 100%
rename from lifecycle/lifecycle-runtime-compose/src/main/java/androidx/lifecycle/compose/LocalLifecycleOwner.kt
rename to lifecycle/lifecycle-runtime-compose/src/commonMain/kotlin/androidx/lifecycle/compose/LocalLifecycleOwner.kt