Merge "Convert remaining compose projects to collections kmp structure" into androidx-main
diff --git a/compose/animation/animation-core/build.gradle b/compose/animation/animation-core/build.gradle
index 2482074..4777d20 100644
--- a/compose/animation/animation-core/build.gradle
+++ b/compose/animation/animation-core/build.gradle
@@ -15,9 +15,8 @@
*/
-import androidx.build.AndroidXComposePlugin
+import androidx.build.KmpPlatformsKt
import androidx.build.LibraryType
-import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
id("AndroidXPlugin")
@@ -25,65 +24,15 @@
id("AndroidXComposePlugin")
}
-AndroidXComposePlugin.applyAndConfigureKotlinPlugin(project)
+def desktopEnabled = KmpPlatformsKt.enableDesktop(project)
-dependencies {
- if (!AndroidXComposePlugin.isMultiplatformEnabled(project)) {
- /*
- * When updating dependencies, make sure to make the an an analogous update in the
- * corresponding block below
- */
+androidXMultiplatform {
+ android()
+ if (desktopEnabled) desktop()
- api("androidx.annotation:annotation:1.1.0")
-
- implementation("androidx.compose.runtime:runtime:1.2.1")
- implementation("androidx.compose.ui:ui:1.2.1")
- implementation("androidx.compose.ui:ui-unit:1.2.1")
- implementation("androidx.compose.ui:ui-util:1.2.1")
- implementation(libs.kotlinStdlib)
- api(libs.kotlinCoroutinesCore)
-
- testImplementation(libs.testRules)
- testImplementation(libs.testRunner)
- testImplementation(libs.junit)
- testImplementation(libs.truth)
- testImplementation(libs.kotlinCoroutinesCore)
-
- androidTestImplementation(libs.testRules)
- androidTestImplementation(libs.testRunner)
- androidTestImplementation(libs.testCore)
- androidTestImplementation(libs.junit)
- androidTestImplementation(project(":compose:animation:animation"))
- androidTestImplementation("androidx.compose.ui:ui-test-junit4:1.2.1")
- androidTestImplementation(project(":compose:test-utils"))
-
- lintPublish project(":compose:animation:animation-core-lint")
-
- samples(project(":compose:animation:animation-core:animation-core-samples"))
- }
-}
-
-if (AndroidXComposePlugin.isMultiplatformEnabled(project)) {
- androidXComposeMultiplatform {
- android()
- desktop()
- }
-
- kotlin {
- /*
- * When updating dependencies, make sure to make the an an analogous update in the
- * corresponding block above
- */
- sourceSets {
-
- jvmMain {
- dependencies {
- implementation(libs.kotlinStdlib)
- api(libs.kotlinCoroutinesCore)
- }
- }
-
- commonMain.dependencies {
+ sourceSets {
+ commonMain {
+ dependencies {
implementation(project(":compose:runtime:runtime"))
implementation(project(":compose:ui:ui"))
implementation(project(":compose:ui:ui-unit"))
@@ -91,45 +40,86 @@
implementation(libs.kotlinStdlibCommon)
api(libs.kotlinCoroutinesCore)
}
+ }
- androidMain {
- dependencies {
- api("androidx.annotation:annotation:1.1.0")
- implementation(libs.kotlinStdlib)
- }
+ commonTest {
+ dependencies {
}
+ }
+
+ jvmMain {
+ dependsOn(commonMain)
+ dependencies {
+ implementation(libs.kotlinStdlib)
+ api(libs.kotlinCoroutinesCore)
+ }
+ }
+
+
+ androidMain {
+ dependsOn(jvmMain)
+ dependencies {
+ api("androidx.annotation:annotation:1.1.0")
+ implementation(libs.kotlinStdlib)
+ }
+ }
+
+ if (desktopEnabled) {
desktopMain {
+ dependsOn(jvmMain)
dependencies {
implementation(libs.kotlinStdlib)
+ implementation(project(":compose:runtime:runtime"))
+ implementation(project(":compose:ui:ui"))
+ implementation(project(":compose:ui:ui-unit"))
+ implementation(project(":compose:ui:ui-util"))
}
}
+ }
- // TODO(b/214407011): These dependencies leak into instrumented tests as well. If you
- // need to add Robolectric (which must be kept out of androidAndroidTest), use a top
- // level dependencies block instead:
- // `dependencies { testImplementation(libs.robolectric) }`
- androidTest.dependencies {
+ jvmTest {
+ dependencies {
+ }
+ }
+
+ androidAndroidTest {
+ dependsOn(jvmTest)
+ dependencies {
+ implementation(libs.testRules)
+ implementation(libs.testRunner)
+ implementation(libs.testCore)
+ implementation(libs.junit)
+ implementation(project(":compose:animation:animation"))
+ implementation("androidx.compose.ui:ui-test-junit4:1.2.1")
+ implementation(project(":compose:test-utils"))
+ }
+ }
+
+ // TODO(b/214407011): These dependencies leak into instrumented tests as well. If you
+ // need to add Robolectric (which must be kept out of androidAndroidTest), use a top
+ // level dependencies block instead:
+ // `dependencies { testImplementation(libs.robolectric) }`
+ androidTest {
+ dependsOn(jvmTest)
+ dependencies {
implementation(libs.testRules)
implementation(libs.testRunner)
implementation(libs.junit)
implementation(libs.truth)
implementation(libs.kotlinCoroutinesCore)
}
+ }
- androidAndroidTest.dependencies {
- implementation(libs.testRules)
- implementation(libs.testRunner)
- implementation(libs.testCore)
- implementation(libs.junit)
- implementation(project(":compose:animation:animation"))
- implementation(project(":compose:ui:ui-test-junit4"))
- implementation(project(":compose:test-utils"))
+ if (desktopEnabled) {
+ desktopTest {
+ dependsOn(jvmTest)
}
}
}
- dependencies {
- samples(project(":compose:animation:animation-core:animation-core-samples"))
- }
+}
+
+dependencies {
+ lintPublish project(":compose:animation:animation-core-lint")
}
androidx {
diff --git a/compose/animation/animation-graphics/build.gradle b/compose/animation/animation-graphics/build.gradle
index c6597a7..bb4c4c1 100644
--- a/compose/animation/animation-graphics/build.gradle
+++ b/compose/animation/animation-graphics/build.gradle
@@ -15,7 +15,7 @@
*/
-import androidx.build.AndroidXComposePlugin
+import androidx.build.KmpPlatformsKt
import androidx.build.LibraryType
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
@@ -25,55 +25,15 @@
id("AndroidXComposePlugin")
}
-AndroidXComposePlugin.applyAndConfigureKotlinPlugin(project)
+def desktopEnabled = KmpPlatformsKt.enableDesktop(project)
-dependencies {
- if(!AndroidXComposePlugin.isMultiplatformEnabled(project)) {
- /*
- * When updating dependencies, make sure to make the an an analogous update in the
- * corresponding block below
- */
+androidXMultiplatform {
+ android()
+ if (desktopEnabled) desktop()
- api("androidx.annotation:annotation:1.1.0")
- api(project(":compose:animation:animation"))
- api("androidx.compose.foundation:foundation-layout:1.2.1")
- api("androidx.compose.runtime:runtime:1.2.1")
- api("androidx.compose.ui:ui:1.2.1")
- api("androidx.compose.ui:ui-geometry:1.2.1")
-
- implementation("androidx.compose.ui:ui-util:1.2.1")
- implementation(libs.kotlinStdlibCommon)
- implementation("androidx.core:core-ktx:1.5.0")
-
- testImplementation(libs.testRules)
- testImplementation(libs.testRunner)
- testImplementation(libs.junit)
-
- androidTestImplementation("androidx.compose.foundation:foundation:1.2.1")
- androidTestImplementation("androidx.compose.ui:ui-test-junit4:1.2.1")
- androidTestImplementation(project(":compose:test-utils"))
- androidTestImplementation(libs.testRules)
- androidTestImplementation(libs.testRunner)
- androidTestImplementation(libs.junit)
- androidTestImplementation(libs.truth)
-
- samples(project(":compose:animation:animation-graphics:animation-graphics-samples"))
- }
-}
-
-if(AndroidXComposePlugin.isMultiplatformEnabled(project)) {
- androidXComposeMultiplatform {
- android()
- desktop()
- }
-
- kotlin {
- /*
- * When updating dependencies, make sure to make the an an analogous update in the
- * corresponding block above
- */
- sourceSets {
- commonMain.dependencies {
+ sourceSets {
+ commonMain {
+ dependencies {
implementation(libs.kotlinStdlibCommon)
api(project(":compose:animation:animation"))
@@ -84,39 +44,84 @@
implementation(project(":compose:ui:ui-util"))
}
+ }
+ androidMain.dependencies {
+ api("androidx.annotation:annotation:1.1.0")
+ implementation("androidx.core:core-ktx:1.5.0")
+ }
- androidMain.dependencies {
- api("androidx.annotation:annotation:1.1.0")
- implementation("androidx.core:core-ktx:1.5.0")
+ commonTest {
+ dependencies {
}
+ }
- desktopMain.dependencies {
- implementation(libs.kotlinStdlib)
+ jvmMain {
+ dependsOn(commonMain)
+ dependencies {
}
+ }
- // TODO(b/214407011): These dependencies leak into instrumented tests as well. If you
- // need to add Robolectric (which must be kept out of androidAndroidTest), use a top
- // level dependencies block instead:
- // `dependencies { testImplementation(libs.robolectric) }`
- androidTest.dependencies {
- implementation(libs.testRules)
- implementation(libs.testRunner)
- implementation(libs.junit)
+
+ androidMain {
+ dependsOn(jvmMain)
+ dependencies {
}
+ }
- androidAndroidTest.dependencies {
+ if (desktopEnabled) {
+ desktopMain {
+ dependsOn(jvmMain)
+ dependencies {
+ implementation(libs.kotlinStdlib)
+ api(project(":compose:foundation:foundation-layout"))
+ api(project(":compose:runtime:runtime"))
+ api(project(":compose:ui:ui"))
+ api(project(":compose:ui:ui-geometry"))
+ implementation(project(":compose:ui:ui-util"))
+ }
+ }
+ }
+
+ jvmTest {
+ dependsOn(commonTest)
+ dependencies {
+ }
+ }
+
+ androidAndroidTest {
+ dependsOn(jvmTest)
+ dependencies {
implementation(libs.testRules)
implementation(libs.testRunner)
implementation(libs.junit)
implementation(libs.truth)
- implementation(project(":compose:foundation:foundation"))
- implementation(project(":compose:ui:ui-test-junit4"))
+ implementation("androidx.compose.foundation:foundation:1.2.1")
+ implementation("androidx.compose.ui:ui-test-junit4:1.2.1")
implementation(project(":compose:test-utils"))
}
}
- }
- dependencies {
- samples(project(":compose:animation:animation-graphics:animation-graphics-samples"))
+
+ // TODO(b/214407011): These dependencies leak into instrumented tests as well. If you
+ // need to add Robolectric (which must be kept out of androidAndroidTest), use a top
+ // level dependencies block instead:
+ // `dependencies { testImplementation(libs.robolectric) }`
+ androidTest {
+ dependsOn(jvmTest)
+ dependencies {
+ implementation(libs.testRules)
+ implementation(libs.testRunner)
+ implementation(libs.junit)
+ }
+ }
+
+ if (desktopEnabled) {
+ desktopTest {
+ dependsOn(jvmTest)
+ dependsOn(desktopMain)
+ dependencies {
+ }
+ }
+ }
}
}
diff --git a/compose/animation/animation/build.gradle b/compose/animation/animation/build.gradle
index 8d6b39f..f2b4f811 100644
--- a/compose/animation/animation/build.gradle
+++ b/compose/animation/animation/build.gradle
@@ -14,10 +14,8 @@
* limitations under the License.
*/
-
-import androidx.build.AndroidXComposePlugin
+import androidx.build.KmpPlatformsKt
import androidx.build.LibraryType
-import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
id("AndroidXPlugin")
@@ -25,56 +23,15 @@
id("AndroidXComposePlugin")
}
-AndroidXComposePlugin.applyAndConfigureKotlinPlugin(project)
+def desktopEnabled = KmpPlatformsKt.enableDesktop(project)
-dependencies {
- if(!AndroidXComposePlugin.isMultiplatformEnabled(project)) {
- /*
- * When updating dependencies, make sure to make the an an analogous update in the
- * corresponding block below
- */
+androidXMultiplatform {
+ android()
+ if (desktopEnabled) desktop()
- api("androidx.annotation:annotation:1.1.0")
- api(project(":compose:animation:animation-core"))
- api("androidx.compose.foundation:foundation-layout:1.2.1")
- api("androidx.compose.runtime:runtime:1.2.1")
- api("androidx.compose.ui:ui:1.2.1")
- api("androidx.compose.ui:ui-geometry:1.2.1")
-
- implementation("androidx.compose.ui:ui-util:1.2.1")
- implementation(libs.kotlinStdlibCommon)
-
- testImplementation(libs.testRules)
- testImplementation(libs.testRunner)
- testImplementation(libs.junit)
-
- androidTestImplementation("androidx.compose.foundation:foundation:1.2.1")
- androidTestImplementation("androidx.compose.ui:ui-test-junit4:1.2.1")
- androidTestImplementation(project(":compose:test-utils"))
- androidTestImplementation(libs.testRules)
- androidTestImplementation(libs.testRunner)
- androidTestImplementation(libs.junit)
- androidTestImplementation(libs.truth)
-
- lintPublish project(":compose:animation:animation-lint")
-
- samples(project(":compose:animation:animation:animation-samples"))
- }
-}
-
-if(AndroidXComposePlugin.isMultiplatformEnabled(project)) {
- androidXComposeMultiplatform {
- android()
- desktop()
- }
-
- kotlin {
- /*
- * When updating dependencies, make sure to make the an an analogous update in the
- * corresponding block above
- */
- sourceSets {
- commonMain.dependencies {
+ sourceSets {
+ commonMain {
+ dependencies {
implementation(libs.kotlinStdlibCommon)
api(project(":compose:animation:animation-core"))
@@ -85,39 +42,84 @@
implementation(project(":compose:ui:ui-util"))
}
+ }
- androidMain.dependencies {
+ commonTest {
+ dependencies {
+ }
+ }
+
+ jvmMain {
+ dependsOn(commonMain)
+ dependencies {
+ }
+ }
+
+
+ androidMain {
+ dependsOn(jvmMain)
+ dependencies {
api("androidx.annotation:annotation:1.1.0")
}
+ }
- desktopMain.dependencies {
- implementation(libs.kotlinStdlib)
+ if (desktopEnabled) {
+ desktopMain {
+ dependsOn(jvmMain)
+ dependencies {
+ implementation(libs.kotlinStdlib)
+
+ api(project(":compose:foundation:foundation-layout"))
+ api(project(":compose:runtime:runtime"))
+ api(project(":compose:ui:ui"))
+ api(project(":compose:ui:ui-geometry"))
+
+ implementation(project(":compose:ui:ui-util"))
+ }
}
+ }
- // TODO(b/214407011): These dependencies leak into instrumented tests as well. If you
- // need to add Robolectric (which must be kept out of androidAndroidTest), use a top
- // level dependencies block instead:
- // `dependencies { testImplementation(libs.robolectric) }`
- androidTest.dependencies {
- implementation(libs.testRules)
- implementation(libs.testRunner)
- implementation(libs.junit)
+ jvmTest {
+ dependencies {
}
+ }
- androidAndroidTest.dependencies {
+ androidAndroidTest {
+ dependsOn(jvmTest)
+ dependencies {
implementation(libs.testRules)
implementation(libs.testRunner)
implementation(libs.junit)
implementation(libs.truth)
- implementation(project(":compose:foundation:foundation"))
- implementation(project(":compose:ui:ui-test-junit4"))
+ implementation("androidx.compose.foundation:foundation:1.2.1")
+ implementation("androidx.compose.ui:ui-test-junit4:1.2.1")
implementation(project(":compose:test-utils"))
}
}
+
+ // TODO(b/214407011): These dependencies leak into instrumented tests as well. If you
+ // need to add Robolectric (which must be kept out of androidAndroidTest), use a top
+ // level dependencies block instead:
+ // `dependencies { testImplementation(libs.robolectric) }`
+ androidTest {
+ dependsOn(jvmTest)
+ dependencies {
+ implementation(libs.testRules)
+ implementation(libs.testRunner)
+ implementation(libs.junit)
+ }
+ }
+
+ if (desktopEnabled) {
+ desktopTest {
+ dependsOn(jvmTest)
+ }
+ }
}
- dependencies {
- samples(project(":compose:animation:animation:animation-samples"))
- }
+}
+
+dependencies {
+ lintPublish project(":compose:animation:animation-lint")
}
androidx {
diff --git a/compose/foundation/foundation-layout/build.gradle b/compose/foundation/foundation-layout/build.gradle
index a754486..872eef6 100644
--- a/compose/foundation/foundation-layout/build.gradle
+++ b/compose/foundation/foundation-layout/build.gradle
@@ -14,9 +14,8 @@
* limitations under the License.
*/
-import androidx.build.AndroidXComposePlugin
+import androidx.build.KmpPlatformsKt
import androidx.build.LibraryType
-import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
id("AndroidXPlugin")
@@ -24,94 +23,66 @@
id("AndroidXComposePlugin")
}
-AndroidXComposePlugin.applyAndConfigureKotlinPlugin(project)
+def desktopEnabled = KmpPlatformsKt.enableDesktop(project)
-dependencies {
+androidXMultiplatform {
+ android()
+ if (desktopEnabled) desktop()
- if(!AndroidXComposePlugin.isMultiplatformEnabled(project)) {
- /*
- * When updating dependencies, make sure to make the an an analogous update in the
- * corresponding block below
- */
-
- api("androidx.annotation:annotation:1.1.0")
- api(project(":compose:ui:ui"))
- api("androidx.compose.ui:ui-unit:1.2.1")
-
- implementation("androidx.compose.runtime:runtime:1.2.1")
- implementation("androidx.compose.ui:ui-util:1.2.1")
- implementation("androidx.core:core:1.7.0")
- implementation("androidx.compose.animation:animation-core:1.2.1")
- implementation(libs.kotlinStdlibCommon)
-
- testImplementation(libs.testRules)
- testImplementation(libs.testRunner)
- testImplementation(libs.junit)
- testImplementation(libs.truth)
-
- androidTestImplementation(project(":compose:foundation:foundation"))
- androidTestImplementation("androidx.compose.ui:ui-test-junit4:1.2.1")
- androidTestImplementation(project(":compose:test-utils"))
- androidTestImplementation("androidx.activity:activity-compose:1.3.1")
- // old version of common-java8 conflicts with newer version, because both have
- // DefaultLifecycleEventObserver.
- // Outside of androidx this is resolved via constraint added to lifecycle-common,
- // but it doesn't work in androidx.
- // See aosp/1804059
- androidTestImplementation("androidx.lifecycle:lifecycle-common-java8:2.5.1")
- androidTestImplementation(libs.testRules)
- androidTestImplementation(libs.testRunner)
- androidTestImplementation(libs.junit)
- androidTestImplementation(libs.truth)
-
- samples(project(":compose:foundation:foundation-layout:foundation-layout-samples"))
- }
-}
-
-if(AndroidXComposePlugin.isMultiplatformEnabled(project)) {
- androidXComposeMultiplatform {
- android()
- desktop()
- }
-
- kotlin {
- /*
- * When updating dependencies, make sure to make the an an analogous update in the
- * corresponding block above
- */
- sourceSets {
- commonMain.dependencies {
+ sourceSets {
+ commonMain {
+ dependencies {
implementation(libs.kotlinStdlibCommon)
api(project(":compose:ui:ui"))
implementation(project(":compose:runtime:runtime"))
implementation(project(":compose:ui:ui-util"))
}
+ }
- androidMain.dependencies {
+ commonTest {
+ dependencies {
+ }
+ }
+
+ jvmMain {
+ dependsOn(commonMain)
+ dependencies {
+ }
+ }
+
+
+ androidMain {
+ dependsOn(jvmMain)
+ dependencies {
api("androidx.annotation:annotation:1.1.0")
implementation("androidx.core:core:1.7.0")
implementation("androidx.compose.animation:animation-core:1.2.1")
}
+ }
- desktopMain.dependencies {
- implementation(libs.kotlinStdlib)
+ if (desktopEnabled) {
+ desktopMain {
+ dependsOn(jvmMain)
+ dependencies {
+ implementation(libs.kotlinStdlib)
+
+ implementation(project(":compose:runtime:runtime"))
+ implementation(project(":compose:ui:ui-util"))
+ }
}
+ }
- // TODO(b/214407011): These dependencies leak into instrumented tests as well. If you
- // need to add Robolectric (which must be kept out of androidAndroidTest), use a top
- // level dependencies block instead:
- // `dependencies { testImplementation(libs.robolectric) }`
- androidTest.dependencies {
- implementation(libs.testRules)
- implementation(libs.testRunner)
- implementation(libs.junit)
- implementation(libs.truth)
+ jvmTest {
+ dependencies {
}
+ }
- androidAndroidTest.dependencies {
+ androidAndroidTest {
+ dependsOn(jvmTest)
+ dependencies {
implementation(project(":compose:foundation:foundation"))
- implementation(project(":compose:ui:ui-test-junit4"))
+ implementation("androidx.compose.ui:ui-test-junit4:1.2.1")
implementation(project(":compose:test-utils"))
implementation("androidx.activity:activity-compose:1.3.1")
@@ -121,9 +92,26 @@
implementation(libs.truth)
}
}
- }
- dependencies {
- samples(project(":compose:foundation:foundation-layout:foundation-layout-samples"))
+
+ // TODO(b/214407011): These dependencies leak into instrumented tests as well. If you
+ // need to add Robolectric (which must be kept out of androidAndroidTest), use a top
+ // level dependencies block instead:
+ // `dependencies { testImplementation(libs.robolectric) }`
+ androidTest {
+ dependsOn(jvmTest)
+ dependencies {
+ implementation(libs.testRules)
+ implementation(libs.testRunner)
+ implementation(libs.junit)
+ implementation(libs.truth)
+ }
+ }
+
+ if (desktopEnabled) {
+ desktopTest {
+ dependsOn(jvmTest)
+ }
+ }
}
}
diff --git a/compose/foundation/foundation/build.gradle b/compose/foundation/foundation/build.gradle
index e367382..a57dfef 100644
--- a/compose/foundation/foundation/build.gradle
+++ b/compose/foundation/foundation/build.gradle
@@ -15,9 +15,8 @@
*/
-import androidx.build.AndroidXComposePlugin
+import androidx.build.KmpPlatformsKt
import androidx.build.LibraryType
-import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
id("AndroidXPlugin")
@@ -26,80 +25,15 @@
id("AndroidXPaparazziPlugin")
}
-AndroidXComposePlugin.applyAndConfigureKotlinPlugin(project)
+def desktopEnabled = KmpPlatformsKt.enableDesktop(project)
-dependencies {
+androidXMultiplatform {
+ android()
+ if (desktopEnabled) desktop()
- if(!AndroidXComposePlugin.isMultiplatformEnabled(project)) {
- /*
- * When updating dependencies, make sure to make the an an analogous update in the
- * corresponding block above
- */
- api("androidx.annotation:annotation:1.1.0")
- api("androidx.compose.animation:animation:1.2.1")
- api(project(":compose:runtime:runtime"))
- api(project(":compose:ui:ui"))
-
- implementation(libs.kotlinStdlibCommon)
- implementation(project(":compose:foundation:foundation-layout"))
- implementation(project(':emoji2:emoji2'))
- implementation(project(':core:core'))
- implementation("androidx.compose.ui:ui-graphics:1.2.1")
- implementation("androidx.compose.ui:ui-text:1.2.1")
- implementation("androidx.compose.ui:ui-util:1.2.1")
-
- testImplementation(project(":compose:test-utils"))
- testImplementation(libs.testRules)
- testImplementation(libs.testRunner)
- testImplementation(libs.junit)
- testImplementation(libs.truth)
- testImplementation(libs.kotlinCoroutinesTest)
- testImplementation(libs.kotlinTest)
- testImplementation(libs.mockitoCore4)
- testImplementation(libs.kotlinReflect)
- testImplementation(libs.mockitoKotlin4)
-
- testImplementation(project(":constraintlayout:constraintlayout-compose"))
-
- androidTestImplementation(project(":compose:test-utils"))
- androidTestImplementation(project(":internal-testutils-fonts"))
- androidTestImplementation(project(":test:screenshot:screenshot"))
- androidTestImplementation(project(":internal-testutils-runtime"))
- androidTestImplementation(libs.testUiautomator)
- androidTestImplementation(libs.testRules)
- androidTestImplementation(libs.testRunner)
- androidTestImplementation(libs.testMonitor)
- androidTestImplementation "androidx.activity:activity-compose:1.3.1"
- androidTestImplementation "androidx.lifecycle:lifecycle-runtime:2.6.1"
- androidTestImplementation "androidx.savedstate:savedstate:1.2.1"
- androidTestImplementation(libs.espressoCore)
- androidTestImplementation(libs.junit)
- androidTestImplementation(libs.kotlinTest)
- androidTestImplementation(libs.truth)
- androidTestImplementation(libs.dexmakerMockito)
- androidTestImplementation(libs.mockitoCore)
- androidTestImplementation(libs.mockitoKotlin)
-
- lintChecks(project(":compose:foundation:foundation-lint"))
- lintPublish(project(":compose:foundation:foundation-lint"))
-
- samples(project(":compose:foundation:foundation:foundation-samples"))
- }
-}
-
-if(AndroidXComposePlugin.isMultiplatformEnabled(project)) {
- androidXComposeMultiplatform {
- android()
- desktop()
- }
-
- kotlin {
- /*
- * When updating dependencies, make sure to make the an an analogous update in the
- * corresponding block above
- */
- sourceSets {
- commonMain.dependencies {
+ sourceSets {
+ commonMain {
+ dependencies {
implementation(libs.kotlinStdlibCommon)
api(project(':compose:animation:animation'))
api(project(':compose:runtime:runtime'))
@@ -108,36 +42,57 @@
implementation(project(":compose:ui:ui-util"))
implementation(project(':compose:foundation:foundation-layout'))
}
- androidMain.dependencies {
- api("androidx.annotation:annotation:1.1.0")
- implementation(project(':emoji2:emoji2'))
- implementation(project(":core:core"))
- }
+ }
+ androidMain.dependencies {
+ api("androidx.annotation:annotation:1.1.0")
+ implementation(project(':emoji2:emoji2'))
+ implementation(project(":core:core"))
+ }
- desktopMain.dependencies {
- implementation(libs.kotlinStdlib)
- }
-
- // TODO(b/214407011): These dependencies leak into instrumented tests as well. If you
- // need to add Robolectric (which must be kept out of androidAndroidTest), use a top
- // level dependencies block instead:
- // `dependencies { testImplementation(libs.robolectric) }`
- androidTest.dependencies {
- implementation(libs.testRules)
- implementation(libs.testRunner)
- implementation(libs.junit)
- implementation(libs.mockitoCore4)
- implementation(libs.truth)
- implementation(libs.kotlinReflect)
- implementation(libs.mockitoKotlin4)
- }
-
- commonTest.dependencies {
+ commonTest {
+ dependencies {
implementation(libs.kotlinTest)
implementation(libs.kotlinCoroutinesTest)
}
+ }
- androidAndroidTest.dependencies {
+ jvmMain {
+ dependsOn(commonMain)
+ dependencies {
+ }
+ }
+
+
+ androidMain {
+ dependsOn(jvmMain)
+ dependencies {
+ api("androidx.annotation:annotation:1.1.0")
+ implementation(project(':emoji2:emoji2'))
+ }
+ }
+
+ if (desktopEnabled) {
+ desktopMain {
+ dependsOn(jvmMain)
+ dependencies {
+ implementation(libs.kotlinStdlib)
+
+ implementation(project(":compose:ui:ui-util"))
+ }
+ }
+ }
+
+ jvmTest {
+ dependsOn(commonTest)
+ dependencies {
+ implementation(project(":compose:ui:ui-test"))
+ implementation(project(":compose:ui:ui-test-junit4"))
+ }
+ }
+
+ androidAndroidTest {
+ dependsOn(jvmTest)
+ dependencies {
implementation(project(":compose:test-utils"))
implementation(project(":internal-testutils-fonts"))
implementation(project(":test:screenshot:screenshot"))
@@ -157,20 +112,43 @@
implementation(libs.mockitoCore)
implementation(libs.mockitoKotlin)
}
+ }
- desktopTest.dependencies {
- implementation(project(":compose:ui:ui-test-junit4"))
- implementation(libs.truth)
+ // TODO(b/214407011): These dependencies leak into instrumented tests as well. If you
+ // need to add Robolectric (which must be kept out of androidAndroidTest), use a top
+ // level dependencies block instead:
+ // `dependencies { testImplementation(libs.robolectric) }`
+ androidTest {
+ dependsOn(jvmTest)
+ dependencies {
+ implementation(libs.testRules)
+ implementation(libs.testRunner)
implementation(libs.junit)
- implementation(libs.skikoCurrentOs)
- implementation(libs.mockitoCore)
- implementation(libs.mockitoKotlin)
+ implementation(libs.truth)
+ implementation(libs.kotlinReflect)
+ implementation(project(":constraintlayout:constraintlayout-compose"))
+ }
+ }
+
+ if (desktopEnabled) {
+ desktopTest {
+ dependsOn(jvmTest)
+ dependsOn(desktopMain)
+ dependencies {
+ implementation(libs.truth)
+ implementation(libs.junit)
+ implementation(libs.skikoCurrentOs)
+ implementation(libs.mockitoCore)
+ implementation(libs.mockitoKotlin)
+ }
}
}
}
- dependencies {
- samples(project(":compose:foundation:foundation:foundation-samples"))
- }
+}
+
+dependencies {
+ lintChecks(project(":compose:foundation:foundation-lint"))
+ lintPublish(project(":compose:foundation:foundation-lint"))
}
// Screenshot tests related setup
diff --git a/compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/window/WindowDraggableArea.desktop.kt b/compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/window/WindowDraggableArea.desktop.kt
index b285b1c..fff404c 100644
--- a/compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/window/WindowDraggableArea.desktop.kt
+++ b/compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/window/WindowDraggableArea.desktop.kt
@@ -36,6 +36,7 @@
* WindowDraggableArea is a component that allows you to drag the window using the mouse.
*
* @param modifier The modifier to be applied to the layout.
+ * @param content The content lambda.
*/
@Composable
fun WindowScope.WindowDraggableArea(
diff --git a/compose/material/material-icons-core/build.gradle b/compose/material/material-icons-core/build.gradle
index 0276b88..615b415 100644
--- a/compose/material/material-icons-core/build.gradle
+++ b/compose/material/material-icons-core/build.gradle
@@ -15,65 +15,100 @@
*/
-import androidx.build.AndroidXComposePlugin
+import androidx.build.KmpPlatformsKt
import androidx.build.LibraryType
import androidx.compose.material.icons.generator.tasks.IconGenerationTask
+
plugins {
id("AndroidXPlugin")
id("com.android.library")
id("AndroidXComposePlugin")
}
-AndroidXComposePlugin.applyAndConfigureKotlinPlugin(project)
+def desktopEnabled = KmpPlatformsKt.enableDesktop(project)
-if (!AndroidXComposePlugin.isMultiplatformEnabled(project)) {
- dependencies {
- /*
- * When updating dependencies, make sure to make the an an analogous update in the
- * corresponding block below
- */
+androidXMultiplatform {
+ android()
+ if (desktopEnabled) desktop()
- api("androidx.compose.ui:ui:1.2.1")
- implementation("androidx.compose.runtime:runtime:1.2.1")
- implementation(libs.kotlinStdlib)
-
- samples(project(":compose:material:material-icons-core:material-icons-core-samples"))
- }
-}
-
-if (AndroidXComposePlugin.isMultiplatformEnabled(project)) {
-
- androidXComposeMultiplatform {
- android()
- desktop()
- }
-
- kotlin {
- /*
- * When updating dependencies, make sure to make the an an analogous update in the
- * corresponding block above
- */
- sourceSets {
- commonMain.dependencies {
+ sourceSets {
+ commonMain {
+ dependencies {
implementation(libs.kotlinStdlibCommon)
api(project(":compose:ui:ui"))
}
+ }
- androidMain.dependencies {
+ commonTest {
+ dependencies {
+ }
+ }
+
+ jvmMain {
+ dependsOn(commonMain)
+ dependencies {
implementation(libs.kotlinStdlib)
}
}
- }
- dependencies {
- samples(project(":compose:material:material-icons-core:material-icons-core-samples"))
+
+ if (desktopEnabled) {
+ skikoMain {
+ dependsOn(commonMain)
+ dependencies {
+ api(project(":compose:ui:ui"))
+ }
+ }
+ }
+
+ androidMain {
+ dependsOn(jvmMain)
+ dependencies {
+ }
+ }
+
+ if (desktopEnabled) {
+ desktopMain {
+ dependsOn(skikoMain)
+ dependsOn(jvmMain)
+ dependencies {
+ }
+ }
+ }
+
+ jvmTest {
+ dependsOn(commonTest)
+ dependencies {
+ }
+ }
+
+ androidAndroidTest {
+ dependsOn(jvmTest)
+ dependencies {
+ }
+ }
+
+ androidTest {
+ dependsOn(jvmTest)
+ dependencies {
+ }
+ }
+
+ if (desktopEnabled) {
+ desktopTest {
+ dependsOn(jvmTest)
+ dependsOn(desktopMain)
+ dependencies {
+ }
+ }
+ }
}
}
IconGenerationTask.registerCoreIconProject(
project,
android,
- AndroidXComposePlugin.isMultiplatformEnabled(project)
+ true
)
androidx {
diff --git a/compose/material/material-icons-extended/build.gradle b/compose/material/material-icons-extended/build.gradle
index 0903147..b7e2fea 100644
--- a/compose/material/material-icons-extended/build.gradle
+++ b/compose/material/material-icons-extended/build.gradle
@@ -14,11 +14,10 @@
* limitations under the License.
*/
-import androidx.build.AndroidXComposePlugin
+import androidx.build.KmpPlatformsKt
import androidx.build.LibraryType
import androidx.build.RunApiTasks
import androidx.compose.material.icons.generator.tasks.IconGenerationTask
-import androidx.compose.material.icons.generator.tasks.ExtendedIconGenerationTask
plugins {
id("AndroidXPlugin")
@@ -26,7 +25,7 @@
id("AndroidXComposePlugin")
}
-AndroidXComposePlugin.applyAndConfigureKotlinPlugin(project)
+def desktopEnabled = KmpPlatformsKt.enableDesktop(project)
IconGenerationTask.registerExtendedIconMainProject(
project,
@@ -35,38 +34,62 @@
apply from: "shared-dependencies.gradle"
-dependencies {
+androidXMultiplatform {
+ android()
+ if (desktopEnabled) desktop()
- if (!AndroidXComposePlugin.isMultiplatformEnabled(project)) {
- /*
- * When updating dependencies, make sure to make an analogous update in the
- * corresponding block below
- */
- androidTestImplementation(libs.testRules)
- androidTestImplementation(libs.testRunner)
- androidTestImplementation(libs.junit)
- androidTestImplementation(libs.kotlinReflect)
- androidTestImplementation(libs.truth)
+ sourceSets {
+ commonMain {
+ dependencies {
+ api(project(":compose:material:material-icons-core"))
+ implementation(libs.kotlinStdlibCommon)
+ implementation(project(":compose:runtime:runtime"))
+ }
+ }
- androidTestImplementation(project(":compose:foundation:foundation"))
- androidTestImplementation(project(":compose:foundation:foundation-layout"))
- androidTestImplementation(project(":compose:ui:ui"))
- androidTestImplementation(project(":test:screenshot:screenshot"))
- androidTestImplementation(project(":compose:ui:ui-test-junit4"))
- androidTestImplementation(project(":compose:test-utils"))
- androidTestImplementation("androidx.activity:activity-compose:1.3.1")
- androidTestImplementation("androidx.appcompat:appcompat:1.3.0")
- }
-}
+ commonTest {
+ dependencies {
+ }
+ }
-if (AndroidXComposePlugin.isMultiplatformEnabled(project)) {
- kotlin {
- /*
- * When updating dependencies, make sure to make an analogous update in the
- * corresponding block above
- */
- sourceSets {
- androidAndroidTest.dependencies {
+ jvmMain {
+ dependsOn(commonMain)
+ dependencies {
+ }
+ }
+
+ if (desktopEnabled) {
+ skikoMain {
+ dependsOn(commonMain)
+ dependencies {
+ }
+ }
+ }
+
+ androidMain {
+ dependsOn(jvmMain)
+ dependencies {
+ }
+ }
+
+ if (desktopEnabled) {
+ desktopMain {
+ dependsOn(skikoMain)
+ dependsOn(jvmMain)
+ dependencies {
+ }
+ }
+ }
+
+ jvmTest {
+ dependsOn(commonTest)
+ dependencies {
+ }
+ }
+
+ androidAndroidTest {
+ dependsOn(jvmTest)
+ dependencies {
implementation(project(":compose:foundation:foundation"))
implementation(project(":compose:foundation:foundation-layout"))
implementation(project(":compose:ui:ui"))
@@ -83,6 +106,21 @@
implementation(libs.truth)
}
}
+
+ androidTest {
+ dependsOn(jvmTest)
+ dependencies {
+ }
+ }
+
+ if (desktopEnabled) {
+ desktopTest {
+ dependsOn(jvmTest)
+ dependsOn(desktopMain)
+ dependencies {
+ }
+ }
+ }
}
}
@@ -102,43 +140,7 @@
}
-if (!AndroidXComposePlugin.isMultiplatformEnabled(project)) {
- def allThemeProjects = [
- project(":compose:material:material-icons-extended-filled"),
- project(":compose:material:material-icons-extended-outlined"),
- project(":compose:material:material-icons-extended-rounded"),
- project(":compose:material:material-icons-extended-sharp"),
- project(":compose:material:material-icons-extended-twotone")
- ]
-
- for (themeProject in allThemeProjects) {
- project.dependencies.add("embedThemesDebug", themeProject)
- project.dependencies.add("embedThemesRelease", themeProject)
- }
- // Compiling all of the icons in this project takes a while,
- // so when possible, we compile each theme in its own project and merge them here.
- // Hopefully we can revert this when parallel compilation is supported:
- // https://youtrack.jetbrains.com/issue/KT-46085
- android {
- libraryVariants.all { v ->
- if (v.name.toLowerCase().contains("debug")) {
- v.registerPostJavacGeneratedBytecode(configurations.embedThemesDebug)
- } else {
- v.registerPostJavacGeneratedBytecode(configurations.embedThemesRelease)
- }
- // Manually set up source jar generation
- ExtendedIconGenerationTask.registerSourceJarOnly(project, v)
- }
- }
-} else {
- // We're not sure how to compile these icons in parallel when multiplatform is enabled
- IconGenerationTask.registerExtendedIconThemeProject(
- project,
- android,
- AndroidXComposePlugin.isMultiplatformEnabled(project)
- )
-}
-
+IconGenerationTask.registerExtendedIconThemeProject(project, android)
androidx {
name = "Compose Material Icons Extended"
diff --git a/compose/material/material-icons-extended/generate.gradle b/compose/material/material-icons-extended/generate.gradle
index aed94d9..eb45afa 100644
--- a/compose/material/material-icons-extended/generate.gradle
+++ b/compose/material/material-icons-extended/generate.gradle
@@ -25,17 +25,9 @@
apply plugin: "com.android.library"
apply plugin: "AndroidXComposePlugin"
-AndroidXComposePlugin.applyAndConfigureKotlinPlugin(project)
apply from: "${buildscript.sourceFile.parentFile}/shared-dependencies.gradle"
-if (!AndroidXComposePlugin.isMultiplatformEnabled(project)) {
- // We're not sure how to merge icons jars when multiplatform is enabled
- IconGenerationTask.registerExtendedIconThemeProject(
- project,
- android,
- AndroidXComposePlugin.isMultiplatformEnabled(project)
- )
-}
+IconGenerationTask.registerExtendedIconThemeProject(project, android)
dependencies.attributesSchema {
attribute(iconExportAttr)
diff --git a/compose/material/material-icons-extended/shared-dependencies.gradle b/compose/material/material-icons-extended/shared-dependencies.gradle
index f2cbca1..2de0ef0 100644
--- a/compose/material/material-icons-extended/shared-dependencies.gradle
+++ b/compose/material/material-icons-extended/shared-dependencies.gradle
@@ -18,36 +18,25 @@
// by its specific theme projects (each of which compile a specific theme)
import androidx.build.AndroidXComposePlugin
+import androidx.build.KmpPlatformsKt
-dependencies {
- if (!AndroidXComposePlugin.isMultiplatformEnabled(project)) {
- /*
- * When updating dependencies, make sure to make an analogous update in the
- * corresponding block below
- */
- api(project(":compose:material:material-icons-core"))
- implementation(libs.kotlinStdlibCommon)
- implementation(project(":compose:runtime:runtime"))
- }
+def desktopEnabled = KmpPlatformsKt.enableDesktop(project)
+
+androidXMultiplatform {
+ android()
+ if (desktopEnabled) desktop()
}
-if (AndroidXComposePlugin.isMultiplatformEnabled(project)) {
- androidXComposeMultiplatform {
- android()
- desktop()
- }
-
- kotlin {
- /*
- * When updating dependencies, make sure to make an analogous update in the
- * corresponding block above
- */
- sourceSets {
- commonMain.dependencies {
- api(project(":compose:material:material-icons-core"))
- implementation(libs.kotlinStdlibCommon)
- implementation(project(":compose:runtime:runtime"))
- }
+kotlin {
+ /*
+ * When updating dependencies, make sure to make an analogous update in the
+ * corresponding block above
+ */
+ sourceSets {
+ commonMain.dependencies {
+ api(project(":compose:material:material-icons-core"))
+ implementation(libs.kotlinStdlibCommon)
+ implementation(project(":compose:runtime:runtime"))
}
}
}
diff --git a/compose/material/material-ripple/build.gradle b/compose/material/material-ripple/build.gradle
index 31a99bb..999f59f 100644
--- a/compose/material/material-ripple/build.gradle
+++ b/compose/material/material-ripple/build.gradle
@@ -14,9 +14,8 @@
* limitations under the License.
*/
-import androidx.build.AndroidXComposePlugin
+import androidx.build.KmpPlatformsKt
import androidx.build.LibraryType
-import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
id("AndroidXPlugin")
@@ -24,48 +23,15 @@
id("AndroidXComposePlugin")
}
-AndroidXComposePlugin.applyAndConfigureKotlinPlugin(project)
+def desktopEnabled = KmpPlatformsKt.enableDesktop(project)
-dependencies {
+androidXMultiplatform {
+ android()
+ if (desktopEnabled) desktop()
- if(!AndroidXComposePlugin.isMultiplatformEnabled(project)) {
- /*
- * When updating dependencies, make sure to make the an an analogous update in the
- * corresponding block below
- */
- api("androidx.compose.foundation:foundation:1.2.1")
- api("androidx.compose.runtime:runtime:1.2.1")
-
- implementation(libs.kotlinStdlibCommon)
- implementation("androidx.compose.animation:animation:1.2.1")
- implementation("androidx.compose.ui:ui-util:1.2.1")
-
- testImplementation(libs.testRules)
- testImplementation(libs.testRunner)
- testImplementation(libs.junit)
- testImplementation(libs.truth)
-
- androidTestImplementation(project(":compose:test-utils"))
- androidTestImplementation(libs.testRules)
- androidTestImplementation(libs.testRunner)
- androidTestImplementation(libs.junit)
- androidTestImplementation(libs.truth)
- }
-}
-
-if(AndroidXComposePlugin.isMultiplatformEnabled(project)) {
- androidXComposeMultiplatform {
- android()
- desktop()
- }
-
- kotlin {
- /*
- * When updating dependencies, make sure to make the an an analogous update in the
- * corresponding block above
- */
- sourceSets {
- commonMain.dependencies {
+ sourceSets {
+ commonMain {
+ dependencies {
implementation(libs.kotlinStdlibCommon)
api(project(":compose:foundation:foundation"))
api(project(":compose:runtime:runtime"))
@@ -73,19 +39,55 @@
implementation(project(":compose:animation:animation"))
implementation(project(":compose:ui:ui-util"))
}
+ }
- // TODO(b/214407011): These dependencies leak into instrumented tests as well. If you
- // need to add Robolectric (which must be kept out of androidAndroidTest), use a top
- // level dependencies block instead:
- // `dependencies { testImplementation(libs.robolectric) }`
- androidTest.dependencies {
- implementation(libs.testRules)
- implementation(libs.testRunner)
- implementation(libs.junit)
- implementation(libs.truth)
+ commonTest {
+ dependencies {
}
+ }
- androidAndroidTest.dependencies {
+ jvmMain {
+ dependsOn(commonMain)
+ dependencies {
+ }
+ }
+
+ if (desktopEnabled) {
+ skikoMain {
+ dependsOn(commonMain)
+ dependencies {
+ api(project(":compose:foundation:foundation"))
+ api(project(":compose:runtime:runtime"))
+ implementation(project(":compose:animation:animation"))
+ implementation(project(":compose:ui:ui-util"))
+ }
+ }
+ }
+
+ androidMain {
+ dependsOn(jvmMain)
+ dependencies {
+ }
+ }
+
+ if (desktopEnabled) {
+ desktopMain {
+ dependsOn(skikoMain)
+ dependsOn(jvmMain)
+ dependencies {
+ }
+ }
+ }
+
+ jvmTest {
+ dependsOn(commonTest)
+ dependencies {
+ }
+ }
+
+ androidAndroidTest {
+ dependsOn(jvmTest)
+ dependencies {
implementation(project(":compose:test-utils"))
implementation(libs.testRules)
@@ -94,6 +96,29 @@
implementation(libs.truth)
}
}
+
+ // TODO(b/214407011): These dependencies leak into instrumented tests as well. If you
+ // need to add Robolectric (which must be kept out of androidAndroidTest), use a top
+ // level dependencies block instead:
+ // `dependencies { testImplementation(libs.robolectric) }`
+ androidTest {
+ dependsOn(jvmTest)
+ dependencies {
+ implementation(libs.testRules)
+ implementation(libs.testRunner)
+ implementation(libs.junit)
+ implementation(libs.truth)
+ }
+ }
+
+ if (desktopEnabled) {
+ desktopTest {
+ dependsOn(jvmTest)
+ dependsOn(desktopMain)
+ dependencies {
+ }
+ }
+ }
}
}
@@ -105,7 +130,7 @@
// Disable strict API mode for MPP builds as it will fail to compile androidAndroidTest
// sources, as it doesn't understand that they are tests and thinks they should have explicit
// visibility
- legacyDisableKotlinStrictApiMode = AndroidXComposePlugin.isMultiplatformEnabled(project)
+ legacyDisableKotlinStrictApiMode = true
}
android {
diff --git a/compose/material/material/build.gradle b/compose/material/material/build.gradle
index 82e2838..3019ae0 100644
--- a/compose/material/material/build.gradle
+++ b/compose/material/material/build.gradle
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-import androidx.build.AndroidXComposePlugin
+import androidx.build.KmpPlatformsKt
import androidx.build.LibraryType
plugins {
@@ -24,70 +24,15 @@
id("AndroidXPaparazziPlugin")
}
-AndroidXComposePlugin.applyAndConfigureKotlinPlugin(project)
+def desktopEnabled = KmpPlatformsKt.enableDesktop(project)
-dependencies {
+androidXMultiplatform {
+ android()
+ if (desktopEnabled) desktop()
- if(!AndroidXComposePlugin.isMultiplatformEnabled(project)) {
- /*
- * When updating dependencies, make sure to make the an an analogous update in the
- * corresponding block below
- */
- api("androidx.compose.animation:animation-core:1.2.1")
- api(project(":compose:foundation:foundation"))
- api(project(":compose:material:material-icons-core"))
- api(project(":compose:material:material-ripple"))
- api("androidx.compose.runtime:runtime:1.2.1")
- api("androidx.compose.ui:ui:1.2.1")
- api(project(":compose:ui:ui-text"))
-
- implementation(libs.kotlinStdlibCommon)
- implementation("androidx.compose.animation:animation:1.2.1")
- implementation("androidx.compose.foundation:foundation-layout:1.2.1")
- implementation("androidx.compose.ui:ui-util:1.2.1")
-
- // TODO: remove next 3 dependencies when b/202810604 is fixed
- implementation("androidx.savedstate:savedstate:1.2.1")
- implementation("androidx.lifecycle:lifecycle-runtime:2.6.1")
- implementation("androidx.lifecycle:lifecycle-viewmodel:2.6.1")
-
- testImplementation(libs.testRules)
- testImplementation(libs.testRunner)
- testImplementation(libs.junit)
- testImplementation(libs.truth)
-
- androidTestImplementation(project(":compose:material:material:material-samples"))
- androidTestImplementation(project(":compose:test-utils"))
- androidTestImplementation(project(":test:screenshot:screenshot"))
- androidTestImplementation(libs.testRules)
- androidTestImplementation(libs.testRunner)
- androidTestImplementation(libs.junit)
- androidTestImplementation(libs.truth)
- androidTestImplementation(libs.dexmakerMockito)
- androidTestImplementation(libs.mockitoCore)
- androidTestImplementation(libs.mockitoKotlin)
- androidTestImplementation(libs.testUiautomator)
-
- lintPublish project(":compose:material:material-lint")
-
- samples(project(":compose:material:material:material-samples"))
- }
-}
-
-if(AndroidXComposePlugin.isMultiplatformEnabled(project)) {
- androidXComposeMultiplatform {
- android()
- desktop()
- }
-
- kotlin {
-
- /*
- * When updating dependencies, make sure to make the an an analogous update in the
- * corresponding block above
- */
- sourceSets {
- commonMain.dependencies {
+ sourceSets {
+ commonMain {
+ dependencies {
implementation(libs.kotlinStdlibCommon)
api(project(":compose:animation:animation-core"))
api(project(":compose:foundation:foundation"))
@@ -101,8 +46,37 @@
implementation(project(":compose:foundation:foundation-layout"))
implementation(project(":compose:ui:ui-util"))
}
+ }
- androidMain.dependencies {
+ commonTest {
+ dependencies {
+ }
+ }
+
+ jvmMain {
+ dependsOn(commonMain)
+ dependencies {
+ }
+ }
+
+ if (desktopEnabled) {
+ skikoMain {
+ dependsOn(commonMain)
+ dependencies {
+ api(project(":compose:animation:animation-core"))
+ api(project(":compose:runtime:runtime"))
+ api(project(":compose:ui:ui"))
+ api(project(":compose:ui:ui-text"))
+ implementation(project(":compose:animation:animation"))
+ implementation(project(":compose:foundation:foundation-layout"))
+ implementation(project(":compose:ui:ui-util"))
+ }
+ }
+ }
+
+ androidMain {
+ dependsOn(jvmMain)
+ dependencies {
api("androidx.annotation:annotation:1.1.0")
// TODO: remove next 3 dependencies when b/202810604 is fixed
@@ -110,23 +84,27 @@
implementation("androidx.lifecycle:lifecycle-runtime:2.6.1")
implementation("androidx.lifecycle:lifecycle-viewmodel:2.6.1")
}
+ }
- desktopMain.dependencies {
- implementation(libs.kotlinStdlib)
+ if (desktopEnabled) {
+ desktopMain {
+ dependsOn(skikoMain)
+ dependsOn(jvmMain)
+ dependencies {
+ implementation(libs.kotlinStdlib)
+ }
}
+ }
- // TODO(b/214407011): These dependencies leak into instrumented tests as well. If you
- // need to add Robolectric (which must be kept out of androidAndroidTest), use a top
- // level dependencies block instead:
- // `dependencies { testImplementation(libs.robolectric) }`
- androidTest.dependencies {
- implementation(libs.testRules)
- implementation(libs.testRunner)
- implementation(libs.junit)
- implementation(libs.truth)
+ jvmTest {
+ dependsOn(commonTest)
+ dependencies {
}
+ }
- androidAndroidTest.dependencies {
+ androidAndroidTest {
+ dependsOn(jvmTest)
+ dependencies {
implementation(project(":compose:material:material:material-samples"))
implementation(project(":compose:test-utils"))
implementation(project(":test:screenshot:screenshot"))
@@ -140,18 +118,39 @@
implementation(libs.mockitoKotlin)
implementation(libs.testUiautomator)
}
+ }
- desktopTest.dependencies {
- implementation(project(":compose:ui:ui-test-junit4"))
- implementation(libs.truth)
+ // TODO(b/214407011): These dependencies leak into instrumented tests as well. If you
+ // need to add Robolectric (which must be kept out of androidAndroidTest), use a top
+ // level dependencies block instead:
+ // `dependencies { testImplementation(libs.robolectric) }`
+ androidTest {
+ dependsOn(jvmTest)
+ dependencies {
+ implementation(libs.testRules)
+ implementation(libs.testRunner)
implementation(libs.junit)
- implementation(libs.skikoCurrentOs)
+ implementation(libs.truth)
+ }
+ }
+
+ if (desktopEnabled) {
+ desktopTest {
+ dependsOn(jvmTest)
+ dependsOn(desktopMain)
+ dependencies {
+ implementation(project(":compose:ui:ui-test-junit4"))
+ implementation(libs.truth)
+ implementation(libs.junit)
+ implementation(libs.skikoCurrentOs)
+ }
}
}
}
- dependencies {
- samples(project(":compose:material:material:material-samples"))
- }
+}
+
+dependencies {
+ lintPublish project(":compose:material:material-lint")
}
androidx {
diff --git a/compose/material/material/icons/generator/src/main/kotlin/androidx/compose/material/icons/generator/tasks/IconGenerationTask.kt b/compose/material/material/icons/generator/src/main/kotlin/androidx/compose/material/icons/generator/tasks/IconGenerationTask.kt
index 2fe5d63..d705315 100644
--- a/compose/material/material/icons/generator/src/main/kotlin/androidx/compose/material/icons/generator/tasks/IconGenerationTask.kt
+++ b/compose/material/material/icons/generator/src/main/kotlin/androidx/compose/material/icons/generator/tasks/IconGenerationTask.kt
@@ -157,15 +157,10 @@
@JvmStatic
fun registerExtendedIconThemeProject(
project: Project,
- libraryExtension: LibraryExtension,
- isMpp: Boolean
+ libraryExtension: LibraryExtension
) {
- if (isMpp) {
- ExtendedIconGenerationTask.register(project, null)
- } else {
- libraryExtension.libraryVariants.all { variant ->
- ExtendedIconGenerationTask.register(project, variant)
- }
+ libraryExtension.libraryVariants.all { variant ->
+ ExtendedIconGenerationTask.register(project, variant)
}
// b/175401659 - disable lint as it takes a long time, and most errors should
diff --git a/compose/material/material/src/desktopMain/kotlin/androidx/compose/material/DesktopMenu.desktop.kt b/compose/material/material/src/desktopMain/kotlin/androidx/compose/material/DesktopMenu.desktop.kt
index c197e65..ea91b6c 100644
--- a/compose/material/material/src/desktopMain/kotlin/androidx/compose/material/DesktopMenu.desktop.kt
+++ b/compose/material/material/src/desktopMain/kotlin/androidx/compose/material/DesktopMenu.desktop.kt
@@ -232,6 +232,9 @@
* @param expanded Whether the menu is currently open and visible to the user
* @param onDismissRequest Called when the user requests to dismiss the menu, such as by
* tapping outside the menu's bounds
+ * @param focusable Sets the ability for the menu to capture focus
+ * @param modifier The modifier for this layout.
+ * @param content The content lambda.
*/
@Deprecated(
level = DeprecationLevel.HIDDEN,
diff --git a/compose/material3/material3-adaptive/build.gradle b/compose/material3/material3-adaptive/build.gradle
index c263c79..b1aaced 100644
--- a/compose/material3/material3-adaptive/build.gradle
+++ b/compose/material3/material3-adaptive/build.gradle
@@ -17,7 +17,7 @@
import androidx.build.AndroidXComposePlugin
import androidx.build.LibraryType
import androidx.build.Publish
-import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
+import androidx.build.KmpPlatformsKt
plugins {
id("AndroidXPlugin")
@@ -25,49 +25,61 @@
id("AndroidXComposePlugin")
}
-AndroidXComposePlugin.applyAndConfigureKotlinPlugin(project)
+def desktopEnabled = KmpPlatformsKt.enableDesktop(project)
-dependencies {
+androidXMultiplatform {
+ android()
+ if (desktopEnabled) desktop()
-
- if(!AndroidXComposePlugin.isMultiplatformEnabled(project)) {
- /*
- * When updating dependencies, make sure to make the analogous update in the
- * corresponding block below
- */
- implementation(libs.kotlinStdlibCommon)
-
- api("androidx.annotation:annotation:1.1.0")
-
- api(project(":compose:foundation:foundation"))
- }
-}
-
-if(AndroidXComposePlugin.isMultiplatformEnabled(project)) {
- androidXComposeMultiplatform {
- android()
- desktop()
- }
-
- kotlin {
- /*
- * When updating dependencies, make sure to make the analogous update in the
- * corresponding block above
- */
- sourceSets {
- commonMain.dependencies {
+ sourceSets {
+ commonMain {
+ dependencies {
implementation(libs.kotlinStdlibCommon)
api(project(":compose:foundation:foundation"))
}
+ }
- androidMain.dependencies {
- api("androidx.annotation:annotation:1.1.0")
+ commonTest {
+ dependencies {
}
+ }
- desktopMain.dependencies {
+ jvmMain {
+ dependsOn(commonMain)
+ dependencies {
implementation(libs.kotlinStdlib)
}
}
+
+ androidMain {
+ dependsOn(jvmMain)
+ dependencies {
+ api("androidx.annotation:annotation:1.1.0")
+ }
+ }
+
+ if (desktopEnabled) {
+ desktopMain {
+ dependsOn(jvmMain)
+ dependencies {
+ }
+ }
+ }
+
+ jvmTest {
+ dependencies {
+ }
+ }
+
+ if (desktopEnabled) {
+ desktopTest {
+ dependsOn(jvmTest)
+ }
+ }
+
+ androidTest {
+ dependsOn(jvmTest)
+ }
}
}
diff --git a/compose/material3/material3-window-size-class/build.gradle b/compose/material3/material3-window-size-class/build.gradle
index 9eb3383..495dd73 100644
--- a/compose/material3/material3-window-size-class/build.gradle
+++ b/compose/material3/material3-window-size-class/build.gradle
@@ -14,10 +14,10 @@
* limitations under the License.
*/
+import androidx.build.KmpPlatformsKt
import androidx.build.AndroidXComposePlugin
+import androidx.build.KmpPlatformsKt
import androidx.build.LibraryType
-import androidx.build.Publish
-import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
id("AndroidXPlugin")
@@ -25,69 +25,73 @@
id("AndroidXComposePlugin")
}
-AndroidXComposePlugin.applyAndConfigureKotlinPlugin(project)
+def desktopEnabled = KmpPlatformsKt.enableDesktop(project)
-dependencies {
+androidXMultiplatform {
+ android()
+ if (desktopEnabled) desktop()
- if(!AndroidXComposePlugin.isMultiplatformEnabled(project)) {
- /*
- * When updating dependencies, make sure to make the an an analogous update in the
- * corresponding block below
- */
- implementation(libs.kotlinStdlibCommon)
- api("androidx.compose.runtime:runtime:1.2.1")
- api("androidx.compose.ui:ui:1.2.1")
- api("androidx.compose.ui:ui-unit:1.2.1")
- implementation("androidx.window:window:1.0.0")
-
- testImplementation(libs.kotlinTest)
- testImplementation(libs.truth)
-
- androidTestImplementation(project(":compose:test-utils"))
- androidTestImplementation(project(":compose:foundation:foundation"))
- androidTestImplementation(libs.testRules)
- androidTestImplementation(libs.testRunner)
- androidTestImplementation(libs.junit)
- androidTestImplementation(libs.truth)
-
- samples(project(":compose:material3:material3-window-size-class:material3-window-size-class-samples"))
- }
-}
-
-if(AndroidXComposePlugin.isMultiplatformEnabled(project)) {
- kotlin {
- android()
- jvm("desktop")
-
- /*
- * When updating dependencies, make sure to make the an an analogous update in the
- * corresponding block above
- */
- sourceSets {
- commonMain.dependencies {
+ sourceSets {
+ commonMain {
+ dependencies {
implementation(libs.kotlinStdlibCommon)
api(project(":compose:runtime:runtime"))
api(project(":compose:ui:ui"))
api(project(":compose:ui:ui-unit"))
}
+ }
- jvmMain.dependencies {
+ commonTest {
+ dependencies {
+
+ }
+ }
+
+ jvmMain {
+ dependsOn(commonMain)
+ dependencies {
implementation(libs.kotlinStdlib)
}
+ }
- androidMain.dependencies {
+ if (desktopEnabled) {
+ skikoMain {
+ dependsOn(commonMain)
+ dependencies {
+ // Because dependencies are pinned in the android/common code.
+ api(project(":compose:runtime:runtime"))
+ api(project(":compose:ui:ui"))
+ api(project(":compose:ui:ui-unit"))
+ }
+ }
+ }
+
+ androidMain {
+ dependsOn(jvmMain)
+ dependencies {
implementation("androidx.window:window:1.0.0")
}
+ }
- androidMain.dependsOn(jvmMain)
- desktopMain.dependsOn(jvmMain)
+ if (desktopEnabled) {
+ desktopMain {
+ dependsOn(skikoMain)
+ dependsOn(jvmMain)
+ dependencies {
- androidTest.dependencies {
- implementation(libs.kotlinTest)
- implementation(libs.truth)
+ }
}
+ }
- androidAndroidTest.dependencies {
+ jvmTest {
+ dependsOn(commonTest)
+ dependencies {
+ }
+ }
+
+ androidAndroidTest {
+ dependsOn(jvmTest)
+ dependencies {
implementation(project(":compose:test-utils"))
implementation(project(":compose:foundation:foundation"))
implementation(libs.testRules)
@@ -96,9 +100,24 @@
implementation(libs.truth)
}
}
- }
- dependencies {
- samples(project(":compose:material3:material3-window-size-class:material3-window-size-class-samples"))
+
+ androidTest {
+ dependsOn(jvmTest)
+ dependencies {
+ implementation(libs.kotlinTest)
+ implementation(libs.truth)
+ }
+ }
+
+ if (desktopEnabled) {
+ desktopTest {
+ dependsOn(jvmTest)
+ dependsOn(desktopMain)
+ dependencies {
+
+ }
+ }
+ }
}
}
diff --git a/compose/runtime/runtime/integration-tests/build.gradle b/compose/runtime/runtime/integration-tests/build.gradle
index b9b65e5..f62e6ba 100644
--- a/compose/runtime/runtime/integration-tests/build.gradle
+++ b/compose/runtime/runtime/integration-tests/build.gradle
@@ -14,8 +14,7 @@
* limitations under the License.
*/
-
-import androidx.build.AndroidXComposePlugin
+import androidx.build.KmpPlatformsKt
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
@@ -24,69 +23,63 @@
id("AndroidXComposePlugin")
}
-AndroidXComposePlugin.applyAndConfigureKotlinPlugin(project)
+def desktopEnabled = KmpPlatformsKt.enableDesktop(project)
-dependencies {
+androidXMultiplatform {
+ android()
+ if (desktopEnabled) desktop()
- if(!AndroidXComposePlugin.isMultiplatformEnabled(project)) {
- androidTestImplementation(projectOrArtifact(":compose:ui:ui"))
- androidTestImplementation(projectOrArtifact(":compose:material:material"))
- androidTestImplementation(projectOrArtifact(":compose:ui:ui-test-junit4"))
- androidTestImplementation(project(":compose:runtime:runtime"))
- androidTestImplementation(projectOrArtifact(":compose:test-utils"))
- androidTestImplementation(projectOrArtifact(":activity:activity-compose"))
-
- androidTestImplementation(libs.junit)
- androidTestImplementation(libs.kotlinTestJunit)
- androidTestImplementation(libs.testExtJunit)
- androidTestImplementation(libs.testCore)
- androidTestImplementation(libs.testRunner)
- androidTestImplementation(libs.testRules)
- androidTestImplementation(libs.kotlinStdlib)
- androidTestImplementation(libs.kotlinReflect)
- androidTestImplementation(libs.truth)
- }
-}
-
-android {
- namespace "androidx.compose.runtime.integrationtests"
-}
-
-if(AndroidXComposePlugin.isMultiplatformEnabled(project)) {
- androidXComposeMultiplatform {
- android()
- desktop()
- }
-
- kotlin {
- /*
- * When updating dependencies, make sure to make the an an analogous update in the
- * corresponding block above
- */
- sourceSets {
- commonMain.dependencies {
+ sourceSets {
+ commonMain {
+ dependencies {
implementation(libs.kotlinStdlibCommon)
implementation(libs.kotlinCoroutinesCore)
implementation(projectOrArtifact(":compose:ui:ui"))
}
- jvmMain.dependencies {
+ }
+
+ commonTest {
+ dependencies {
+ implementation(kotlin("test-junit"))
+ }
+ }
+
+ jvmMain {
+ dependsOn(commonMain)
+ dependencies {
implementation(libs.kotlinStdlib)
api(libs.kotlinCoroutinesCore)
}
- androidMain.dependencies {
+ }
+
+
+ androidMain {
+ dependsOn(jvmMain)
+ dependencies {
api(libs.kotlinCoroutinesAndroid)
api("androidx.annotation:annotation:1.1.0")
implementation("androidx.core:core-ktx:1.1.0")
}
- desktopMain.dependencies {
- api(libs.kotlinCoroutinesSwing)
- }
+ }
- commonTest.dependencies {
- implementation(kotlin("test-junit"))
+ if (desktopEnabled) {
+ desktopMain {
+ dependsOn(jvmMain)
+ dependencies {
+ api(libs.kotlinCoroutinesSwing)
+ }
}
- androidAndroidTest.dependencies {
+ }
+
+ jvmTest {
+ dependencies {
+ }
+ }
+
+ androidAndroidTest {
+ dependsOn(jvmTest)
+ dependencies {
implementation(projectOrArtifact(":compose:ui:ui"))
implementation(projectOrArtifact(":compose:material:material"))
implementation(projectOrArtifact(":compose:ui:ui-test-junit4"))
@@ -98,9 +91,23 @@
implementation(libs.truth)
}
}
+
+ androidTest {
+ dependsOn(jvmTest)
+ }
+
+ if (desktopEnabled) {
+ desktopTest {
+ dependsOn(jvmTest)
+ }
+ }
}
}
+android {
+ namespace "androidx.compose.runtime.integrationtests"
+}
+
tasks.withType(KotlinCompile).configureEach {
kotlinOptions {
incremental = false
diff --git a/compose/ui/ui-graphics/build.gradle b/compose/ui/ui-graphics/build.gradle
index 815c1df..cb9f0da 100644
--- a/compose/ui/ui-graphics/build.gradle
+++ b/compose/ui/ui-graphics/build.gradle
@@ -14,9 +14,8 @@
* limitations under the License.
*/
-import androidx.build.AndroidXComposePlugin
+import androidx.build.KmpPlatformsKt
import androidx.build.LibraryType
-import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
id("AndroidXPlugin")
@@ -24,102 +23,72 @@
id("AndroidXComposePlugin")
}
-AndroidXComposePlugin.applyAndConfigureKotlinPlugin(project)
+def desktopEnabled = KmpPlatformsKt.enableDesktop(project)
-if(!AndroidXComposePlugin.isMultiplatformEnabled(project)) {
- dependencies {
- /*
- * When updating dependencies, make sure to make the an an analogous update in the
- * corresponding block below
- */
+androidXMultiplatform {
+ android()
+ if (desktopEnabled) desktop()
- api("androidx.annotation:annotation:1.2.0")
- api(project(":compose:ui:ui-unit"))
-
- implementation("androidx.compose.runtime:runtime:1.2.1")
- implementation(project(":compose:ui:ui-util"))
- implementation(libs.kotlinStdlibCommon)
-
- testImplementation(libs.testRules)
- testImplementation(libs.testRunner)
- testImplementation(libs.kotlinTestJunit)
- testImplementation(libs.junit)
- testImplementation(libs.truth)
-
- androidTestImplementation(project(":compose:ui:ui-graphics:ui-graphics-samples"))
- androidTestImplementation(project(":compose:ui:ui-test-junit4"))
- androidTestImplementation(project(":compose:test-utils"))
- androidTestImplementation(libs.testRules)
- androidTestImplementation(libs.testRunner)
- androidTestImplementation(libs.espressoCore)
- androidTestImplementation(libs.junit)
- androidTestImplementation(libs.truth)
-
- lintPublish(project(":compose:ui:ui-graphics-lint"))
-
- samples(projectOrArtifact(":compose:ui:ui-graphics:ui-graphics-samples"))
- }
-}
-
-if(AndroidXComposePlugin.isMultiplatformEnabled(project)) {
- androidXComposeMultiplatform {
- android()
- desktop()
- }
-
- kotlin {
-
- /*
- * When updating dependencies, make sure to make the an an analogous update in the
- * corresponding block above
- */
-
- sourceSets {
- commonMain.dependencies {
+ sourceSets {
+ commonMain {
+ dependencies {
implementation(libs.kotlinStdlibCommon)
api(project(":compose:ui:ui-unit"))
implementation(project(":compose:runtime:runtime"))
implementation(project(":compose:ui:ui-util"))
}
+ }
- androidMain.dependencies {
- api("androidx.annotation:annotation:1.2.0")
+ commonTest {
+ dependencies {
+ implementation(kotlin("test"))
}
+ }
+ if (desktopEnabled) {
skikoMain {
dependsOn(commonMain)
dependencies {
api(libs.skikoCommon)
+ implementation(project(":compose:runtime:runtime"))
}
}
+ }
+ jvmMain {
+ dependsOn(commonMain)
+ dependencies {
+ }
+ }
+
+
+ androidMain {
+ dependsOn(jvmMain)
+ dependencies {
+ api("androidx.annotation:annotation:1.2.0")
+ }
+ }
+
+ if (desktopEnabled) {
desktopMain {
- dependsOn skikoMain
+ dependsOn(jvmMain)
+ dependsOn(skikoMain)
dependencies {
implementation(libs.kotlinStdlib)
implementation(libs.kotlinStdlibJdk8)
}
}
+ }
- commonTest {
- dependencies {
- implementation(kotlin("test"))
- }
+ jvmTest {
+ dependencies {
}
+ }
- // TODO(b/214407011): These dependencies leak into instrumented tests as well. If you
- // need to add Robolectric (which must be kept out of androidAndroidTest), use a top
- // level dependencies block instead:
- // `dependencies { testImplementation(libs.robolectric) }`
- androidTest.dependencies {
- implementation(libs.testRules)
- implementation(libs.testRunner)
- implementation(libs.junit)
- implementation(libs.truth)
- }
-
- androidAndroidTest.dependencies {
+ androidAndroidTest {
+ dependsOn(jvmTest)
+ dependencies {
implementation(project(":compose:ui:ui-graphics:ui-graphics-samples"))
implementation(project(":compose:ui:ui-test-junit4"))
implementation(project(":compose:test-utils"))
@@ -128,9 +97,26 @@
implementation(libs.espressoCore)
implementation(libs.junit)
}
+ }
+ // TODO(b/214407011): These dependencies leak into instrumented tests as well. If you
+ // need to add Robolectric (which must be kept out of androidAndroidTest), use a top
+ // level dependencies block instead:
+ // `dependencies { testImplementation(libs.robolectric) }`
+ androidTest {
+ dependsOn(jvmTest)
+ dependencies {
+ implementation(libs.testRules)
+ implementation(libs.testRunner)
+ implementation(libs.junit)
+ implementation(libs.truth)
+ }
+ }
+
+ if (desktopEnabled) {
desktopTest {
resources.srcDirs += "src/desktopTest/res"
+ dependsOn(jvmTest)
dependencies {
implementation(project(":compose:ui:ui-test-junit4"))
implementation(libs.junit)
@@ -140,9 +126,10 @@
}
}
}
- dependencies {
- samples(projectOrArtifact(":compose:ui:ui-graphics:ui-graphics-samples"))
- }
+}
+
+dependencies {
+ lintPublish(project(":compose:ui:ui-graphics-lint"))
}
androidx {
@@ -161,7 +148,7 @@
namespace "androidx.compose.ui.graphics"
}
-if(AndroidXComposePlugin.isMultiplatformEnabled(project)) {
+if (desktopEnabled) {
tasks.findByName("desktopTest").configure {
systemProperties["GOLDEN_PATH"] = project.rootDir.absolutePath + "/../../golden"
}
diff --git a/compose/ui/ui-test-junit4/build.gradle b/compose/ui/ui-test-junit4/build.gradle
index 5e4501d..5db2d70 100644
--- a/compose/ui/ui-test-junit4/build.gradle
+++ b/compose/ui/ui-test-junit4/build.gradle
@@ -14,9 +14,8 @@
* limitations under the License.
*/
-import androidx.build.AndroidXComposePlugin
+import androidx.build.KmpPlatformsKt
import androidx.build.LibraryType
-import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
id("AndroidXPlugin")
@@ -24,81 +23,42 @@
id("AndroidXComposePlugin")
}
-AndroidXComposePlugin.applyAndConfigureKotlinPlugin(project)
+def desktopEnabled = KmpPlatformsKt.enableDesktop(project)
-android {
- lintOptions {
- disable("InvalidPackage")
- }
- namespace "androidx.compose.ui.test.junit4"
-}
+androidXMultiplatform {
+ android()
+ if (desktopEnabled) desktop()
-dependencies {
-
- if(!AndroidXComposePlugin.isMultiplatformEnabled(project)) {
- api(project(":compose:ui:ui-test"))
- api("androidx.activity:activity:1.2.1")
- api(libs.junit)
- api(libs.kotlinStdlib)
- api(libs.kotlinStdlibCommon)
- api(libs.testExtJunit)
-
- implementation("androidx.compose.runtime:runtime-saveable:1.2.1")
- implementation("androidx.activity:activity-compose:1.3.0")
- implementation("androidx.annotation:annotation:1.1.0")
- implementation("androidx.lifecycle:lifecycle-common:2.5.1")
- implementation("androidx.lifecycle:lifecycle-runtime:2.5.1")
- implementation("androidx.test:core:1.5.0")
- implementation("androidx.test:monitor:1.6.0")
- implementation("androidx.test.espresso:espresso-core:3.5.0")
- implementation("androidx.test.espresso:espresso-idling-resource:3.5.0")
- implementation(libs.kotlinCoroutinesCore)
- implementation(libs.kotlinCoroutinesTest)
-
- testImplementation(project(":compose:animation:animation-core"))
- testImplementation(project(":compose:material:material"))
- testImplementation(project(":compose:test-utils"))
- testImplementation(libs.truth)
- testImplementation(libs.robolectric)
-
- androidTestImplementation(project(":compose:animation:animation"))
- androidTestImplementation(project(":compose:test-utils"))
- androidTestImplementation(project(":compose:material:material"))
- androidTestImplementation("androidx.fragment:fragment-testing:1.4.1")
- androidTestImplementation(libs.testRules)
- androidTestImplementation(libs.testRunner)
- androidTestImplementation(libs.truth)
- androidTestImplementation(libs.mockitoCore)
- androidTestImplementation(libs.dexmakerMockito)
- androidTestImplementation(libs.mockitoKotlin)
- }
-}
-
-
-if(AndroidXComposePlugin.isMultiplatformEnabled(project)) {
- androidXComposeMultiplatform {
- android()
- desktop()
- }
-
- kotlin {
- sourceSets {
- commonMain.dependencies {
+ sourceSets {
+ commonMain {
+ dependencies {
api(project(":compose:ui:ui-test"))
implementation(libs.kotlinStdlib)
implementation(libs.kotlinCoroutinesCore)
implementation(libs.kotlinCoroutinesTest)
}
+ }
- jvmMain.dependencies {
+ commonTest {
+ dependencies {
+ }
+ }
+
+ jvmMain {
+ dependsOn(commonMain)
+ dependencies {
api(libs.junit)
api(libs.kotlinStdlib)
api(libs.kotlinStdlibCommon)
compileOnly("androidx.annotation:annotation:1.1.0")
}
+ }
- androidMain.dependencies {
+
+ androidMain {
+ dependsOn(jvmMain)
+ dependencies {
api("androidx.activity:activity:1.2.1")
implementation "androidx.activity:activity-compose:1.3.0"
api(libs.testExtJunit)
@@ -107,24 +67,31 @@
implementation(project(":compose:runtime:runtime-saveable"))
implementation("androidx.lifecycle:lifecycle-common:2.5.1")
implementation("androidx.lifecycle:lifecycle-runtime:2.5.1")
- implementation("androidx.test:core:1.4.0")
+ implementation("androidx.test:core:1.5.0")
implementation(libs.testMonitor)
implementation("androidx.test.espresso:espresso-core:3.3.0")
- implementation("androidx.test.espresso:espresso-idling-resource:3.3.0")
+ implementation("androidx.test.espresso:espresso-idling-resource:3.5.0")
}
+ }
- // TODO(b/214407011): These dependencies leak into instrumented tests as well. If you
- // need to add Robolectric (which must be kept out of androidAndroidTest), use a top
- // level dependencies block instead:
- // `dependencies { testImplementation(libs.robolectric) }`
- androidTest.dependencies {
- implementation(project(":compose:animation:animation-core"))
- implementation(project(":compose:material:material"))
- implementation(project(":compose:test-utils"))
- implementation(libs.truth)
+ if (desktopEnabled) {
+ desktopMain {
+ dependsOn(jvmMain)
+ dependencies {
+ implementation(libs.truth)
+ implementation(libs.skiko)
+ }
}
+ }
- androidAndroidTest.dependencies {
+ jvmTest {
+ dependencies {
+ }
+ }
+
+ androidAndroidTest {
+ dependsOn(jvmTest)
+ dependencies {
implementation(project(":compose:animation:animation"))
implementation(project(":compose:test-utils"))
implementation(project(":compose:material:material"))
@@ -136,28 +103,50 @@
implementation(libs.dexmakerMockito)
implementation(libs.mockitoKotlin)
}
+ }
- desktopMain.dependencies {
+ // TODO(b/214407011): These dependencies leak into instrumented tests as well. If you
+ // need to add Robolectric (which must be kept out of androidAndroidTest), use a top
+ // level dependencies block instead:
+ // `dependencies { testImplementation(libs.robolectric) }`
+ androidTest {
+ dependsOn(jvmTest)
+ dependencies {
+ implementation(project(":compose:animation:animation-core"))
+ implementation(project(":compose:material:material"))
+ implementation(project(":compose:test-utils"))
implementation(libs.truth)
- implementation(libs.skiko)
}
+ }
- desktopTest.dependencies {
- implementation(libs.truth)
- implementation(libs.junit)
- implementation(libs.kotlinTest)
- implementation(libs.skikoCurrentOs)
- implementation(project(":compose:foundation:foundation"))
- implementation(project(":compose:ui:ui-test-junit4"))
+ if (desktopEnabled) {
+ desktopTest {
+ dependsOn(jvmTest)
+ dependencies {
+ implementation(libs.truth)
+ implementation(libs.junit)
+ implementation(libs.kotlinTest)
+ implementation(libs.skikoCurrentOs)
+ implementation(project(":compose:foundation:foundation"))
+ implementation(project(":compose:ui:ui-test-junit4"))
+ }
}
}
}
+}
- dependencies {
- // Can't declare this in kotlin { sourceSets { androidTest.dependencies { .. } } } as that
- // leaks into instrumented tests (b/214407011)
- testImplementation(libs.robolectric)
+
+android {
+ lintOptions {
+ disable("InvalidPackage")
}
+ namespace "androidx.compose.ui.test.junit4"
+}
+
+dependencies {
+ // Can't declare this in kotlin { sourceSets { androidTest.dependencies { .. } } } as that
+ // leaks into instrumented tests (b/214407011)
+ testImplementation(libs.robolectric)
}
androidx {
diff --git a/compose/ui/ui-test-junit4/src/desktopMain/kotlin/androidx/compose/ui/test/ComposeUiTest.desktop.kt b/compose/ui/ui-test-junit4/src/desktopMain/kotlin/androidx/compose/ui/test/ComposeUiTest.desktop.kt
index 8af350a..6977ddf 100644
--- a/compose/ui/ui-test-junit4/src/desktopMain/kotlin/androidx/compose/ui/test/ComposeUiTest.desktop.kt
+++ b/compose/ui/ui-test-junit4/src/desktopMain/kotlin/androidx/compose/ui/test/ComposeUiTest.desktop.kt
@@ -182,6 +182,10 @@
}
}
+ /**
+ * @param matcher
+ * @param useUnmergedTree
+ */
override fun onNode(
matcher: SemanticsMatcher,
useUnmergedTree: Boolean
@@ -189,6 +193,10 @@
return SemanticsNodeInteraction(testContext, useUnmergedTree, matcher)
}
+ /**
+ * @param matcher
+ * @param useUnmergedTree
+ */
override fun onAllNodes(
matcher: SemanticsMatcher,
useUnmergedTree: Boolean
diff --git a/compose/ui/ui-test/build.gradle b/compose/ui/ui-test/build.gradle
index 097486a..ead9fac 100644
--- a/compose/ui/ui-test/build.gradle
+++ b/compose/ui/ui-test/build.gradle
@@ -14,9 +14,8 @@
* limitations under the License.
*/
-import androidx.build.AndroidXComposePlugin
+import androidx.build.KmpPlatformsKt
import androidx.build.LibraryType
-import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
id("AndroidXPlugin")
@@ -24,14 +23,115 @@
id("AndroidXComposePlugin")
}
-AndroidXComposePlugin.applyAndConfigureKotlinPlugin(project)
+def desktopEnabled = KmpPlatformsKt.enableDesktop(project)
+
+androidXMultiplatform {
+ android()
+ if (desktopEnabled) desktop()
+
+ sourceSets {
+ commonMain {
+ dependencies {
+ api(project(":compose:ui:ui"))
+ api(project(":compose:ui:ui-text"))
+ api(project(":compose:ui:ui-unit"))
+ api(project(":compose:runtime:runtime"))
+ api(libs.kotlinStdlib)
+
+ implementation(project(":compose:ui:ui-util"))
+ }
+ }
+
+ commonTest {
+ dependencies {
+ }
+ }
+
+ jvmMain {
+ dependsOn(commonMain)
+ dependencies {
+ api(libs.kotlinCoroutinesCore)
+ api(libs.kotlinCoroutinesTest)
+ api(libs.kotlinStdlibCommon)
+ }
+ }
+
+
+ androidMain {
+ dependsOn(jvmMain)
+ dependencies {
+ api(project(":compose:ui:ui-graphics"))
+
+ implementation("androidx.annotation:annotation:1.1.0")
+ implementation("androidx.core:core-ktx:1.2.0")
+ implementation("androidx.test.espresso:espresso-core:3.5.0")
+ implementation(libs.testMonitor)
+ }
+ }
+
+ if (desktopEnabled) {
+ desktopMain {
+ dependsOn(jvmMain)
+ dependencies {
+ implementation(libs.junit)
+ implementation(libs.truth)
+ implementation(libs.skiko)
+ }
+ }
+ }
+
+ jvmTest {
+ dependencies {
+ }
+ }
+
+ androidCommonTest {
+ dependsOn(commonTest)
+ dependencies {
+ implementation(project(":compose:test-utils"))
+ implementation(libs.truth)
+ }
+ }
+
+ androidAndroidTest {
+ dependsOn(jvmTest)
+ dependsOn(androidCommonTest)
+ dependencies {
+ implementation(project(":compose:material:material"))
+ implementation(project(":compose:ui:ui-test-junit4"))
+ implementation("androidx.activity:activity-compose:1.3.1")
+ implementation(libs.mockitoCore)
+ implementation(libs.mockitoKotlin)
+ implementation(libs.dexmakerMockito)
+ implementation(libs.kotlinTest)
+ }
+ }
+
+ // TODO(b/214407011): These dependencies leak into instrumented tests as well. If you
+ // need to add Robolectric (which must be kept out of androidAndroidTest), use a top
+ // level dependencies block instead:
+ // `dependencies { testImplementation(libs.robolectric) }`
+ androidTest {
+ dependsOn(jvmTest)
+ dependsOn(androidCommonTest)
+ dependencies {
+ implementation(libs.mockitoCore4)
+ implementation(libs.mockitoKotlin4)
+ }
+ }
+
+ if (desktopEnabled) {
+ desktopTest {
+ dependsOn(jvmTest)
+ }
+ }
+ }
+}
android {
- if (!AndroidXComposePlugin.isMultiplatformEnabled(project)) {
- sourceSets {
- test.java.srcDirs += "src/androidCommonTest/kotlin"
- androidTest.java.srcDirs += "src/androidCommonTest/kotlin"
- }
+ sourceSets {
+ test.java.srcDirs += "src/androidCommonTest/kotlin"
+ androidTest.java.srcDirs += "src/androidCommonTest/kotlin"
}
lintOptions {
@@ -41,121 +141,9 @@
}
dependencies {
-
- if (!AndroidXComposePlugin.isMultiplatformEnabled(project)) {
- api("androidx.compose.runtime:runtime:1.2.1")
- api(project(":compose:ui:ui"))
- api(project(":compose:ui:ui-graphics"))
- api(project(":compose:ui:ui-text"))
- api(project(":compose:ui:ui-unit"))
- api(libs.kotlinCoroutinesCore)
- api(libs.kotlinCoroutinesTest)
- api(libs.kotlinStdlib)
- api(libs.kotlinStdlibCommon)
-
- implementation(project(":compose:ui:ui-util"))
- implementation("androidx.annotation:annotation:1.1.0")
- implementation("androidx.core:core-ktx:1.1.0")
- implementation("androidx.test.espresso:espresso-core:3.5.0")
- implementation("androidx.test:monitor:1.6.0")
-
- testImplementation(project(":compose:test-utils"))
- testImplementation(libs.truth)
- testImplementation(libs.robolectric)
- testImplementation(libs.mockitoCore4)
- testImplementation(libs.mockitoKotlin4)
-
- androidTestImplementation("androidx.activity:activity-compose:1.3.1")
- androidTestImplementation(project(":compose:material:material"))
- androidTestImplementation(project(":compose:test-utils"))
- androidTestImplementation(project(":compose:ui:ui-test-junit4"))
- androidTestImplementation(libs.truth)
- androidTestImplementation(libs.mockitoCore)
- androidTestImplementation(libs.dexmakerMockito)
- androidTestImplementation(libs.mockitoKotlin)
- androidTestImplementation(libs.kotlinTest)
-
- samples(project(":compose:ui:ui-test:ui-test-samples"))
- }
-}
-
-
-if (AndroidXComposePlugin.isMultiplatformEnabled(project)) {
- androidXComposeMultiplatform {
- android()
- desktop()
- }
-
- kotlin {
- sourceSets {
- commonMain.dependencies {
- api(project(":compose:ui:ui"))
- api(project(":compose:ui:ui-text"))
- api(project(":compose:ui:ui-unit"))
- api(libs.kotlinStdlib)
-
- implementation(project(":compose:ui:ui-util"))
- }
-
- jvmMain.dependencies {
- api(project(":compose:runtime:runtime"))
- api(libs.kotlinCoroutinesCore)
- api(libs.kotlinCoroutinesTest)
- api(libs.kotlinStdlibCommon)
- }
-
- androidMain.dependencies {
- api(project(":compose:ui:ui-graphics"))
-
- implementation("androidx.annotation:annotation:1.1.0")
- implementation("androidx.core:core-ktx:1.2.0")
- implementation("androidx.test.espresso:espresso-core:3.3.0")
- implementation(libs.testMonitor)
- }
-
- androidCommonTest.dependencies {
- implementation(project(":compose:test-utils"))
- implementation(libs.truth)
- }
-
- // TODO(b/214407011): These dependencies leak into instrumented tests as well. If you
- // need to add Robolectric (which must be kept out of androidAndroidTest), use a top
- // level dependencies block instead:
- // `dependencies { testImplementation(libs.robolectric) }`
- androidTest.dependencies {
- implementation(libs.mockitoCore4)
- implementation(libs.mockitoKotlin4)
- }
-
- androidAndroidTest.dependencies {
- implementation(project(":compose:material:material"))
- implementation(project(":compose:ui:ui-test-junit4"))
- implementation("androidx.activity:activity-compose:1.3.1")
- implementation(libs.mockitoCore)
- implementation(libs.mockitoKotlin)
- implementation(libs.dexmakerMockito)
- implementation(libs.kotlinTest)
- }
-
- desktopMain.dependencies {
- implementation(libs.junit)
- implementation(libs.truth)
- implementation(libs.skiko)
- }
-
- androidCommonTest.dependsOn(commonTest)
- androidTest.dependsOn(androidCommonTest)
- androidAndroidTest.dependsOn(androidCommonTest)
- }
- }
-
- dependencies {
- // Can't declare this in kotlin { sourceSets { androidTest.dependencies { .. } } } as that
- // leaks into instrumented tests (b/214407011)
- testImplementation(libs.robolectric)
-
- samples(project(":compose:ui:ui-test:ui-test-samples"))
- }
+ // Can't declare this in kotlin { sourceSets { androidTest.dependencies { .. } } } as that
+ // leaks into instrumented tests (b/214407011)
+ testImplementation(libs.robolectric)
}
androidx {
diff --git a/compose/ui/ui-text/build.gradle b/compose/ui/ui-text/build.gradle
index c20c781..2903ae2 100644
--- a/compose/ui/ui-text/build.gradle
+++ b/compose/ui/ui-text/build.gradle
@@ -14,9 +14,8 @@
* limitations under the License.
*/
-import androidx.build.AndroidXComposePlugin
+import androidx.build.KmpPlatformsKt
import androidx.build.LibraryType
-import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
id("AndroidXPlugin")
@@ -24,77 +23,15 @@
id("AndroidXComposePlugin")
}
-AndroidXComposePlugin.applyAndConfigureKotlinPlugin(project)
+def desktopEnabled = KmpPlatformsKt.enableDesktop(project)
-if(!AndroidXComposePlugin.isMultiplatformEnabled(project)) {
- dependencies {
- /*
- * When updating dependencies, make sure to make the an an analogous update in the
- * corresponding block below
- */
- implementation(libs.kotlinStdlibCommon)
- implementation(libs.kotlinCoroutinesCore)
+androidXMultiplatform {
+ android()
+ if (desktopEnabled) desktop()
- api(project(":compose:ui:ui-graphics"))
- api(project(":compose:ui:ui-unit"))
- api("androidx.annotation:annotation:1.1.0")
-
- // when updating the runtime version please also update the runtime-saveable version
- implementation("androidx.compose.runtime:runtime:1.2.1")
- implementation("androidx.compose.runtime:runtime-saveable:1.2.1")
-
- implementation(project(":compose:ui:ui-util"))
- implementation(libs.kotlinStdlib)
- implementation("androidx.core:core:1.7.0")
- implementation('androidx.collection:collection:1.0.0')
- implementation("androidx.emoji2:emoji2:1.2.0")
-
- testImplementation(libs.testRules)
- testImplementation(libs.testRunner)
- testImplementation(libs.junit)
- testImplementation(libs.mockitoCore4)
- testImplementation(libs.truth)
- testImplementation(libs.kotlinReflect)
- testImplementation(libs.kotlinTest)
- testImplementation(libs.mockitoKotlin4)
-
- androidTestImplementation(project(":internal-testutils-fonts"))
- androidTestImplementation(project(":compose:ui:ui-test-junit4"))
- androidTestImplementation(libs.testCore)
- androidTestImplementation(libs.testRules)
- androidTestImplementation(libs.testRunner)
- androidTestImplementation(libs.espressoCore)
- androidTestImplementation(libs.junit)
- androidTestImplementation(libs.dexmakerMockito)
- androidTestImplementation(libs.mockitoCore)
- androidTestImplementation(libs.truth)
- androidTestImplementation(libs.mockitoKotlin)
-
- samples(projectOrArtifact(":compose:ui:ui-text:ui-text-samples"))
- }
-
- android {
- sourceSets {
- main {
- java.srcDirs += "${supportRootFolder}/text/text/src/main/java"
- }
- }
- }
-}
-
-if(AndroidXComposePlugin.isMultiplatformEnabled(project)) {
- androidXComposeMultiplatform {
- android()
- desktop()
- }
-
- kotlin {
- /*
- * When updating dependencies, make sure to make the an an analogous update in the
- * corresponding block below
- */
- sourceSets {
- commonMain.dependencies {
+ sourceSets {
+ commonMain {
+ dependencies {
implementation(libs.kotlinStdlibCommon)
implementation(libs.kotlinCoroutinesCore)
@@ -107,53 +44,58 @@
implementation(project(":compose:ui:ui-util"))
}
+ }
- jvmMain.dependencies {
- implementation(libs.kotlinStdlib)
+ commonTest {
+ dependencies {
}
+ }
+ if (desktopEnabled) {
skikoMain {
dependsOn(commonMain)
dependencies {
api(libs.skikoCommon)
+ implementation(project(":compose:runtime:runtime"))
+ implementation(project(":compose:runtime:runtime-saveable"))
}
}
+ }
- desktopMain {
- dependsOn(skikoMain)
- dependsOn(jvmMain)
+ jvmMain {
+ dependsOn(commonMain)
+ dependencies {
+ implementation(libs.kotlinStdlib)
}
+ }
- androidMain {
- dependsOn(commonMain)
- }
- androidMain.dependencies {
+ androidMain {
+ dependsOn(commonMain)
+ dependsOn(jvmMain)
+ dependencies {
api("androidx.annotation:annotation:1.1.0")
implementation("androidx.core:core:1.7.0")
implementation("androidx.emoji2:emoji2:1.2.0")
implementation('androidx.collection:collection:1.0.0')
}
+ }
- androidMain.kotlin.srcDirs("${supportRootFolder}/text/text/src/main/java")
-
- // TODO(b/214407011): These dependencies leak into instrumented tests as well. If you
- // need to add Robolectric (which must be kept out of androidAndroidTest), use a top
- // level dependencies block instead:
- // `dependencies { testImplementation(libs.robolectric) }`
- androidTest.dependencies {
- implementation(project(":internal-testutils-fonts"))
- implementation(libs.testRules)
- implementation(libs.testRunner)
- implementation(libs.junit)
- implementation(libs.mockitoCore4)
- implementation(libs.truth)
- implementation(libs.kotlinReflect)
- implementation(libs.kotlinTest)
- implementation(libs.mockitoKotlin4)
+ if (desktopEnabled) {
+ desktopMain {
+ dependsOn(skikoMain)
+ dependsOn(jvmMain)
}
+ }
- androidAndroidTest.dependencies {
+ jvmTest {
+ dependencies {
+ }
+ }
+
+ androidAndroidTest {
+ dependsOn(jvmTest)
+ dependencies {
implementation(project(":compose:ui:ui-test-junit4"))
implementation(project(":internal-testutils-fonts"))
implementation(libs.testRules)
@@ -165,20 +107,50 @@
implementation(libs.truth)
implementation(libs.mockitoKotlin)
}
+ }
- desktopTest.dependencies {
- implementation(libs.truth)
+
+ // TODO(b/214407011): These dependencies leak into instrumented tests as well. If you
+ // need to add Robolectric (which must be kept out of androidAndroidTest), use a top
+ // level dependencies block instead:
+ // `dependencies { testImplementation(libs.robolectric) }`
+ androidTest {
+ dependsOn(jvmTest)
+ dependencies {
+ implementation(project(":internal-testutils-fonts"))
+ implementation(libs.testRules)
+ implementation(libs.testRunner)
implementation(libs.junit)
+ implementation(libs.truth)
+ implementation(libs.kotlinReflect)
implementation(libs.kotlinTest)
- implementation(libs.skikoCurrentOs)
- implementation(project(":compose:foundation:foundation"))
- implementation(project(":compose:ui:ui-test-junit4"))
}
}
+
+ if (desktopEnabled) {
+ desktopTest {
+ dependsOn(jvmTest)
+ dependencies {
+ implementation(libs.truth)
+ implementation(libs.junit)
+ implementation(libs.kotlinTest)
+ implementation(libs.skikoCurrentOs)
+ implementation(project(":compose:foundation:foundation"))
+ implementation(project(":compose:ui:ui-test-junit4"))
+ implementation(project(":internal-testutils-fonts"))
+ }
+ }
+ }
+
+ androidMain.kotlin.srcDirs("${supportRootFolder}/text/text/src/main/java")
}
- dependencies {
- samples(projectOrArtifact(":compose:ui:ui-text:ui-text-samples"))
- }
+}
+
+dependencies {
+ // Can't declare this in kotlin { sourceSets { androidTest.dependencies { .. } } } as that
+ // leaks into instrumented tests (b/214407011)
+ testImplementation(libs.mockitoCore4)
+ testImplementation(libs.mockitoKotlin4)
}
androidx {
diff --git a/compose/ui/ui-tooling-data/build.gradle b/compose/ui/ui-tooling-data/build.gradle
index 13f1be5..b69203b 100644
--- a/compose/ui/ui-tooling-data/build.gradle
+++ b/compose/ui/ui-tooling-data/build.gradle
@@ -15,9 +15,8 @@
*/
-import androidx.build.AndroidXComposePlugin
+import androidx.build.KmpPlatformsKt
import androidx.build.LibraryType
-import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
id("AndroidXPlugin")
@@ -25,79 +24,70 @@
id("AndroidXComposePlugin")
}
-AndroidXComposePlugin.applyAndConfigureKotlinPlugin(project)
+def desktopEnabled = KmpPlatformsKt.enableDesktop(project)
-if(!AndroidXComposePlugin.isMultiplatformEnabled(project)) {
+androidXMultiplatform {
+ android()
+ if (desktopEnabled) desktop()
- dependencies {
- /*
- * When updating dependencies, make sure to make the an an analogous update in the
- * corresponding block below
- */
-
- implementation(libs.kotlinStdlib)
-
- api "androidx.annotation:annotation:1.1.0"
-
- api("androidx.compose.runtime:runtime:1.2.1")
- api(project(":compose:ui:ui"))
-
- androidTestImplementation project(":compose:ui:ui-test-junit4")
-
- androidTestImplementation(libs.junit)
- androidTestImplementation(libs.testCore)
- androidTestImplementation(libs.testRunner)
- androidTestImplementation(libs.testRules)
-
- androidTestImplementation(libs.truth)
- androidTestImplementation(project(":compose:foundation:foundation-layout"))
- androidTestImplementation(project(":compose:foundation:foundation"))
- androidTestImplementation(project(":compose:material:material"))
- androidTestImplementation("androidx.activity:activity-compose:1.3.1")
- }
-}
-
-if(AndroidXComposePlugin.isMultiplatformEnabled(project)) {
- androidXComposeMultiplatform {
- android()
- desktop()
- }
-
- kotlin {
-
- /*
- * When updating dependencies, make sure to make the an an analogous update in the
- * corresponding block above
- */
- sourceSets {
- commonMain.dependencies {
-
+ sourceSets {
+ commonMain {
+ dependencies {
implementation(libs.kotlinStdlib)
- api "androidx.annotation:annotation:1.1.0"
-
- api("androidx.compose.runtime:runtime:1.2.1")
+ api(project(":compose:runtime:runtime"))
api(project(":compose:ui:ui"))
}
- jvmMain.dependencies {
- implementation(libs.kotlinStdlib)
- }
- androidMain.dependencies {
- api("androidx.annotation:annotation:1.1.0")
- }
+ }
- commonTest.dependencies {
+ commonTest {
+ dependencies {
implementation(kotlin("test-junit"))
}
+ }
- // TODO(b/214407011): These dependencies leak into instrumented tests as well. If you
- // need to add Robolectric (which must be kept out of androidAndroidTest), use a top
- // level dependencies block instead:
- // `dependencies { testImplementation(libs.robolectric) }`
- androidTest.dependencies {
- implementation(libs.truth)
+ jvmMain {
+ dependsOn(commonMain)
+ dependencies {
+ implementation(libs.kotlinStdlib)
}
- androidAndroidTest.dependencies {
+ }
+
+ if (desktopEnabled) {
+ skikoMain {
+ dependsOn(commonMain)
+ dependencies {
+
+ }
+ }
+ }
+
+ androidMain {
+ dependsOn(jvmMain)
+ dependencies {
+ api("androidx.annotation:annotation:1.1.0")
+ }
+ }
+
+ if (desktopEnabled) {
+ desktopMain {
+ dependsOn(skikoMain)
+ dependsOn(jvmMain)
+ dependencies {
+
+ }
+ }
+ }
+
+ jvmTest {
+ dependsOn(commonTest)
+ dependencies {
+ }
+ }
+
+ androidAndroidTest {
+ dependsOn(jvmTest)
+ dependencies {
implementation(project(":compose:ui:ui-test-junit4"))
implementation(libs.junit)
@@ -112,9 +102,23 @@
implementation("androidx.activity:activity-compose:1.3.1")
}
}
- }
- dependencies {
- samples(projectOrArtifact(":compose:ui:ui-unit:ui-unit-samples"))
+
+ androidTest {
+ dependsOn(jvmTest)
+ dependencies {
+ implementation(libs.truth)
+ }
+ }
+
+ if (desktopEnabled) {
+ desktopTest {
+ dependsOn(jvmTest)
+ dependsOn(desktopMain)
+ dependencies {
+
+ }
+ }
+ }
}
}
diff --git a/compose/ui/ui-tooling/build.gradle b/compose/ui/ui-tooling/build.gradle
index 507d5fcf..ea90aee 100644
--- a/compose/ui/ui-tooling/build.gradle
+++ b/compose/ui/ui-tooling/build.gradle
@@ -14,9 +14,8 @@
* limitations under the License.
*/
-import androidx.build.AndroidXComposePlugin
+import androidx.build.KmpPlatformsKt
import androidx.build.LibraryType
-import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
id("AndroidXPlugin")
@@ -24,69 +23,51 @@
id("AndroidXComposePlugin")
}
-AndroidXComposePlugin.applyAndConfigureKotlinPlugin(project)
+def desktopEnabled = KmpPlatformsKt.enableDesktop(project)
-dependencies {
+androidXMultiplatform {
+ android()
+ if (desktopEnabled) desktop()
- if(!AndroidXComposePlugin.isMultiplatformEnabled(project)) {
- implementation(libs.kotlinStdlib)
-
- api("androidx.annotation:annotation:1.1.0")
- implementation(project(":compose:animation:animation"))
-
- api("androidx.compose.runtime:runtime:1.2.1")
- api(project(":compose:ui:ui"))
- api(project(":compose:ui:ui-tooling-preview"))
- api(project(":compose:ui:ui-tooling-data"))
- implementation("androidx.savedstate:savedstate-ktx:1.2.1")
- implementation("androidx.compose.material:material:1.0.0")
- implementation("androidx.activity:activity-compose:1.7.0")
- implementation("androidx.lifecycle:lifecycle-common:2.6.1")
-
- // kotlin-reflect and animation-tooling-internal are provided by Studio at runtime
- compileOnly(project(":compose:animation:animation-tooling-internal"))
- compileOnly(libs.kotlinReflect)
-
- androidTestImplementation(project(":compose:ui:ui-test-junit4"))
-
- androidTestImplementation(libs.junit)
- androidTestImplementation(libs.testRunner)
- androidTestImplementation(libs.testRules)
- androidTestImplementation(project(":compose:foundation:foundation-layout"))
- androidTestImplementation(project(":compose:foundation:foundation"))
- androidTestImplementation(project(":compose:test-utils"))
- androidTestImplementation(libs.truth)
- androidTestImplementation(libs.kotlinReflect)
- androidTestImplementation(project(":compose:animation:animation-tooling-internal"))
- androidTestImplementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.6.1")
- androidTestImplementation(project(":compose:runtime:runtime-livedata"))
- }
-}
-
-if(AndroidXComposePlugin.isMultiplatformEnabled(project)) {
- androidXComposeMultiplatform {
- android()
- desktop()
- }
-
- kotlin {
- /*
- * When updating dependencies, make sure to make the an an analogous update in the
- * corresponding block above
- */
- sourceSets {
- commonMain.dependencies {
+ sourceSets {
+ commonMain {
+ dependencies {
implementation(libs.kotlinStdlibCommon)
api(project(":compose:ui:ui-tooling-preview"))
api(project(":compose:runtime:runtime"))
api(project(":compose:ui:ui"))
api(project(":compose:ui:ui-tooling-data"))
}
- androidMain.dependencies {
+ }
+
+ commonTest {
+ dependencies {
+
+ }
+ }
+
+ jvmMain {
+ dependsOn(commonMain)
+ dependencies {
+ }
+ }
+
+ if (desktopEnabled) {
+ skikoMain {
+ dependsOn(commonMain)
+ dependencies {
+ api(project(":compose:runtime:runtime"))
+ }
+ }
+ }
+
+ androidMain {
+ dependsOn(jvmMain)
+ dependencies {
api("androidx.annotation:annotation:1.1.0")
implementation(project(":compose:animation:animation"))
implementation("androidx.savedstate:savedstate-ktx:1.2.1")
- implementation(project(":compose:material:material"))
+ implementation("androidx.compose.material:material:1.0.0")
implementation("androidx.activity:activity-compose:1.7.0")
implementation("androidx.lifecycle:lifecycle-common:2.6.1")
@@ -94,14 +75,29 @@
compileOnly(project(":compose:animation:animation-tooling-internal"))
compileOnly(libs.kotlinReflect)
}
+ }
- desktopMain.dependencies {
- implementation(libs.kotlinStdlib)
- implementation(project(":compose:runtime:runtime"))
- implementation(project(":compose:ui:ui"))
+ if (desktopEnabled) {
+ desktopMain {
+ dependsOn(skikoMain)
+ dependsOn(jvmMain)
+ dependencies {
+ implementation(libs.kotlinStdlib)
+ implementation(project(":compose:runtime:runtime"))
+ implementation(project(":compose:ui:ui"))
+ }
}
+ }
- androidAndroidTest.dependencies {
+ jvmTest {
+ dependsOn(commonTest)
+ dependencies {
+ }
+ }
+
+ androidAndroidTest {
+ dependsOn(jvmTest)
+ dependencies {
implementation(project(":compose:ui:ui-test-junit4"))
implementation(libs.junit)
@@ -117,10 +113,25 @@
implementation(project(":compose:runtime:runtime-livedata"))
}
}
+
+ androidTest {
+ dependsOn(jvmTest)
+ dependencies {
+ }
+ }
+
+ if (desktopEnabled) {
+ desktopTest {
+ dependsOn(jvmTest)
+ dependsOn(desktopMain)
+ dependencies {
+
+ }
+ }
+ }
}
}
-
androidx {
name = "Compose Tooling"
type = LibraryType.PUBLISHED_LIBRARY
diff --git a/compose/ui/ui/build.gradle b/compose/ui/ui/build.gradle
index 2b2f069..3beea81 100644
--- a/compose/ui/ui/build.gradle
+++ b/compose/ui/ui/build.gradle
@@ -14,9 +14,8 @@
* limitations under the License.
*/
-import androidx.build.AndroidXComposePlugin
+import androidx.build.KmpPlatformsKt
import androidx.build.LibraryType
-import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
import static androidx.inspection.gradle.InspectionPluginKt.packageInspector
@@ -26,130 +25,16 @@
id("AndroidXComposePlugin")
}
-AndroidXComposePlugin.applyAndConfigureKotlinPlugin(project)
+def desktopEnabled = KmpPlatformsKt.enableDesktop(project)
-dependencies {
+androidXMultiplatform {
+ android()
+ if (desktopEnabled) desktop()
- constraints {
- // In 1.4.0-alpha02 there was a change made in :compose:ui:ui which fixed an issue where
- // we were over-invalidating layout. This change caused a corresponding regression in
- // foundation's CoreText, where it was expecting a layout to happen but with this change
- // it would not. A corresponding fix for this was added in 1.4.0-alpha02 of
- // :compose:foundation:foundation. By adding this constraint, we are ensuring that the
- // if an app has this ui module _and_ the foundation module as a dependency, then the
- // version of foundation will be at least this version. This will prevent the bug in
- // foundation from occurring. This does _NOT_ require that the app have foundation as
- // a dependency.
- implementation(project(":compose:foundation:foundation")) {
- because 'prevents a critical bug in Text'
- }
- }
- if(!AndroidXComposePlugin.isMultiplatformEnabled(project)) {
- /*
- * When updating dependencies, make sure to make the an an analogous update in the
- * corresponding block below
- */
- implementation(libs.kotlinStdlibCommon)
- implementation(libs.kotlinCoroutinesCore)
- // when updating the runtime version please also update the runtime-saveable version
- implementation(project(":compose:runtime:runtime"))
- api(project(":compose:runtime:runtime-saveable"))
-
- api(project(":compose:ui:ui-geometry"))
- api(project(":compose:ui:ui-graphics"))
- api(project(":compose:ui:ui-text"))
- api(project(":compose:ui:ui-unit"))
- api("androidx.annotation:annotation:1.5.0")
-
- // This has stub APIs for access to legacy Android APIs, so we don't want
- // any dependency on this module.
- compileOnly(project(":compose:ui:ui-android-stubs"))
-
- implementation(project(":compose:ui:ui-util"))
- implementation(libs.kotlinStdlib)
- implementation("androidx.autofill:autofill:1.0.0")
- implementation(libs.kotlinCoroutinesAndroid)
-
- // Used to generate debug information in the layout inspector. If not present,
- // we may fall back to more limited data.
- compileOnly(libs.kotlinReflect)
- testImplementation(libs.kotlinReflect)
-
- implementation("androidx.activity:activity-ktx:1.7.0")
- implementation(project(":core:core"))
- implementation('androidx.collection:collection:1.0.0')
- implementation("androidx.customview:customview-poolingcontainer:1.0.0")
- implementation("androidx.savedstate:savedstate-ktx:1.2.1")
- implementation("androidx.lifecycle:lifecycle-runtime:2.6.1")
- implementation("androidx.lifecycle:lifecycle-viewmodel:2.6.1")
- implementation("androidx.profileinstaller:profileinstaller:1.3.0")
- implementation("androidx.emoji2:emoji2:1.2.0")
-
- testImplementation(libs.testRules)
- testImplementation(libs.testRunner)
- testImplementation(libs.kotlinCoroutinesTest)
- testImplementation(libs.junit)
- testImplementation(libs.truth)
- testImplementation(libs.mockitoCore4)
- testImplementation(libs.mockitoKotlin4)
- testImplementation(libs.robolectric)
- testImplementation(project(":compose:ui:ui-test-junit4"))
- testImplementation(project(":compose:test-utils"))
-
- androidTestImplementation(libs.testCore)
- androidTestImplementation(libs.testRules)
- androidTestImplementation(libs.testRunner)
- androidTestImplementation(libs.testExtJunitKtx)
- androidTestImplementation(libs.testUiautomator)
- androidTestImplementation(libs.kotlinCoroutinesTest)
- androidTestImplementation(libs.kotlinTest)
- androidTestImplementation(libs.espressoCore)
- androidTestImplementation(libs.bundles.espressoContrib)
- androidTestImplementation(libs.junit)
- androidTestImplementation(libs.dexmakerMockito)
- androidTestImplementation(libs.mockitoCore)
- androidTestImplementation(libs.truth)
- androidTestImplementation(libs.mockitoKotlin)
- androidTestImplementation(libs.material)
- androidTestImplementation(project(":compose:animation:animation-core"))
- androidTestImplementation(project(":compose:foundation:foundation"))
- androidTestImplementation(project(":compose:foundation:foundation-layout"))
- androidTestImplementation(project(":compose:material:material"))
- androidTestImplementation(project(":compose:test-utils"))
- androidTestImplementation(project(":internal-testutils-fonts"))
- androidTestImplementation(project(":compose:ui:ui-test-junit4"))
- androidTestImplementation(project(":internal-testutils-runtime"))
- androidTestImplementation(project(":test:screenshot:screenshot"))
- androidTestImplementation("androidx.lifecycle:lifecycle-runtime-testing:2.6.1")
- androidTestImplementation("androidx.recyclerview:recyclerview:1.3.0-alpha02")
- androidTestImplementation("androidx.core:core-ktx:1.9.0")
- androidTestImplementation("androidx.activity:activity-compose:1.7.0")
- androidTestImplementation("androidx.appcompat:appcompat:1.3.0")
- androidTestImplementation("androidx.fragment:fragment:1.3.0")
-
- lintChecks(project(":compose:ui:ui-lint"))
- lintPublish(project(":compose:ui:ui-lint"))
-
- samples(project(":compose:ui:ui:ui-samples"))
- }
-}
-
-packageInspector(project, ":compose:ui:ui-inspection")
-
-if(AndroidXComposePlugin.isMultiplatformEnabled(project)) {
- androidXComposeMultiplatform {
- android()
- desktop()
- }
-
- kotlin {
- /*
- * When updating dependencies, make sure to make the an an analogous update in the
- * corresponding block above
- */
- sourceSets {
- commonMain.dependencies {
+ sourceSets {
+ commonMain {
+ dependencies {
implementation(libs.kotlinStdlibCommon)
implementation(libs.kotlinCoroutinesCore)
@@ -163,8 +48,33 @@
api project(":compose:ui:ui-unit")
implementation(project(":compose:ui:ui-util"))
}
+ }
- androidMain.dependencies {
+ commonTest {
+ dependencies {
+ implementation(libs.kotlinReflect)
+ }
+ }
+
+ jvmMain {
+ dependsOn(commonMain)
+ dependencies {
+ }
+ }
+
+ if (desktopEnabled) {
+ skikoMain {
+ dependsOn(commonMain)
+ dependencies {
+ api(project(":compose:ui:ui-graphics"))
+ api(libs.skikoCommon)
+ }
+ }
+ }
+
+ androidMain {
+ dependsOn(jvmMain)
+ dependencies {
implementation(libs.kotlinStdlib)
// This has stub APIs for access to legacy Android APIs, so we don't want
// any dependency on this module.
@@ -181,48 +91,32 @@
implementation("androidx.lifecycle:lifecycle-runtime:2.6.1")
implementation("androidx.lifecycle:lifecycle-viewmodel:2.6.1")
implementation("androidx.emoji2:emoji2:1.2.0")
- }
- jvmMain.dependencies {
- implementation(libs.kotlinStdlib)
+ implementation("androidx.profileinstaller:profileinstaller:1.3.0")
}
- skikoMain {
- dependsOn(commonMain)
- dependencies {
- api(project(":compose:ui:ui-graphics"))
- api(libs.skikoCommon)
- }
- }
+ }
+
+ if (desktopEnabled) {
desktopMain {
dependsOn(skikoMain)
+ dependsOn(jvmMain)
dependencies {
+ implementation(libs.kotlinStdlib)
implementation(libs.kotlinStdlibJdk8)
api(libs.kotlinCoroutinesSwing)
}
}
+ }
- commonTest.dependencies {
- implementation(libs.kotlinReflect)
+ jvmTest {
+ dependsOn(commonTest)
+ dependencies {
}
+ }
- // TODO(b/214407011): These dependencies leak into instrumented tests as well. If you
- // need to add Robolectric (which must be kept out of androidAndroidTest), use a top
- // level dependencies block instead:
- // `dependencies { testImplementation(libs.robolectric) }`
- androidTest.dependencies {
- implementation(libs.testRules)
- implementation(libs.testRunner)
- implementation(libs.kotlinCoroutinesTest)
- implementation(libs.junit)
- implementation(libs.truth)
- implementation(libs.mockitoCore4)
- implementation(libs.mockitoKotlin4)
- implementation(project(":compose:ui:ui-test-junit4"))
- implementation(project(":internal-testutils-fonts"))
- implementation(project(":compose:test-utils"))
- }
-
- androidAndroidTest.dependencies {
+ androidAndroidTest {
+ dependsOn(jvmTest)
+ dependencies {
implementation("androidx.fragment:fragment:1.3.0")
implementation("androidx.appcompat:appcompat:1.3.0")
implementation(libs.testUiautomator)
@@ -253,27 +147,75 @@
implementation("androidx.core:core-ktx:1.2.0")
implementation("androidx.activity:activity-compose:1.7.0")
}
+ }
- desktopTest.dependencies {
- implementation(libs.truth)
+ // TODO(b/214407011): These dependencies leak into instrumented tests as well. If you
+ // need to add Robolectric (which must be kept out of androidAndroidTest), use a top
+ // level dependencies block instead:
+ // `dependencies { testImplementation(libs.robolectric) }`
+ androidTest {
+ dependsOn(jvmTest)
+ dependencies {
+ implementation(libs.testRules)
+ implementation(libs.testRunner)
+ implementation(libs.kotlinCoroutinesTest)
implementation(libs.junit)
- implementation(libs.mockitoCore)
- implementation(libs.mockitoKotlin)
- implementation(libs.skikoCurrentOs)
- implementation(project(":compose:material:material"))
+ implementation(libs.truth)
implementation(project(":compose:ui:ui-test-junit4"))
+ implementation(project(":internal-testutils-fonts"))
+ implementation(project(":compose:test-utils"))
+ }
+ }
+
+ if (desktopEnabled) {
+ desktopTest {
+ dependsOn(jvmTest)
+ dependsOn(desktopMain)
+ dependencies {
+ implementation(libs.truth)
+ implementation(libs.junit)
+ implementation(libs.mockitoCore)
+ implementation(libs.mockitoKotlin)
+ implementation(libs.skikoCurrentOs)
+ implementation(project(":compose:material:material"))
+ implementation(project(":compose:ui:ui-test-junit4"))
+ }
}
}
}
- dependencies {
- samples(project(":compose:ui:ui:ui-samples"))
+}
- // Can't declare this in kotlin { sourceSets { androidTest.dependencies { .. } } } as that
- // leaks into instrumented tests (b/214407011)
- testImplementation(libs.robolectric)
+dependencies {
+
+ constraints {
+ // In 1.4.0-alpha02 there was a change made in :compose:ui:ui which fixed an issue where
+ // we were over-invalidating layout. This change caused a corresponding regression in
+ // foundation's CoreText, where it was expecting a layout to happen but with this change
+ // it would not. A corresponding fix for this was added in 1.4.0-alpha02 of
+ // :compose:foundation:foundation. By adding this constraint, we are ensuring that the
+ // if an app has this ui module _and_ the foundation module as a dependency, then the
+ // version of foundation will be at least this version. This will prevent the bug in
+ // foundation from occurring. This does _NOT_ require that the app have foundation as
+ // a dependency.
+ implementation(project(":compose:foundation:foundation")) {
+ because 'prevents a critical bug in Text'
+ }
}
}
+packageInspector(project, ":compose:ui:ui-inspection")
+
+dependencies {
+ lintChecks(project(":compose:ui:ui-lint"))
+ lintPublish(project(":compose:ui:ui-lint"))
+
+ // Can't declare this in kotlin { sourceSets { androidTest.dependencies { .. } } } as that
+ // leaks into instrumented tests (b/214407011)
+ testImplementation(libs.robolectric)
+ testImplementation(libs.mockitoCore4)
+ testImplementation(libs.mockitoKotlin4)
+}
+
androidx {
name = "Compose UI primitives"
type = LibraryType.PUBLISHED_LIBRARY
@@ -282,7 +224,7 @@
legacyDisableKotlinStrictApiMode = true
}
-if(AndroidXComposePlugin.isMultiplatformEnabled(project)) {
+if (desktopEnabled) {
tasks.findByName("desktopTest").configure {
systemProperties["GOLDEN_PATH"] = project.rootDir.absolutePath + "/../../golden"
}
@@ -304,24 +246,3 @@
// the androidx.compose.ui:ui-test library
testNamespace "androidx.compose.ui.tests"
}
-
-// Diagnostics for b/188565660
-def verifyKotlinModule(String variant) {
- project.afterEvaluate {
- def capitalVariant = variant.capitalize()
- def moduleFile = new File("${buildDir}/tmp/kotlin-classes/${variant}/META-INF/ui_${variant}.kotlin_module")
- tasks.named("compile${capitalVariant}Kotlin").configure { t ->
- t.doLast {
- // This file should be large, about 3.2K. If this file is short then many symbols will fail to resolve
- if (moduleFile.length() < 250) {
- throw new GradleException("kotlin_module file ($moduleFile) too short! See b/188565660 for more information. File text: ${moduleFile.text}")
- }
- }
- }
- }
-}
-if (!AndroidXComposePlugin.isMultiplatformEnabled(project)) {
- for (variant in ["debug", "release"]) {
- verifyKotlinModule(variant)
- }
-}
diff --git a/development/project-creator/compose-template/groupId/artifactId/build.gradle b/development/project-creator/compose-template/groupId/artifactId/build.gradle
index a47774d..e09ec31 100644
--- a/development/project-creator/compose-template/groupId/artifactId/build.gradle
+++ b/development/project-creator/compose-template/groupId/artifactId/build.gradle
@@ -14,8 +14,8 @@
* limitations under the License.
*/
-import androidx.build.AndroidXComposePlugin
import androidx.build.LibraryType
+import androidx.build.KmpPlatformsKt
plugins {
id("AndroidXPlugin")
@@ -24,68 +24,75 @@
id("org.jetbrains.kotlin.android")
}
-AndroidXComposePlugin.applyAndConfigureKotlinPlugin(project)
+def desktopEnabled = KmpPlatformsKt.enableDesktop(project)
-dependencies {
+androidXMultiplatform {
+ android()
+ if (desktopEnabled) desktop()
-
- if(!AndroidXComposePlugin.isMultiplatformEnabled(project)) {
- /*
- * When updating dependencies, make sure to make the an an analogous update in the
- * corresponding block below
- */
- implementation(libs.kotlinStdlibCommon)
-
- api("androidx.annotation:annotation:1.1.0")
-
- testImplementation(libs.testRules)
- testImplementation(libs.testRunner)
- testImplementation(libs.junit)
- testImplementation(libs.truth)
-
- androidTestImplementation(libs.testRules)
- androidTestImplementation(libs.testRunner)
- androidTestImplementation(libs.junit)
- androidTestImplementation(libs.truth)
- }
-}
-
-if(AndroidXComposePlugin.isMultiplatformEnabled(project)) {
- androidXComposeMultiplatform {
- android()
- desktop()
- }
-
- kotlin {
- /*
- * When updating dependencies, make sure to make the an an analogous update in the
- * corresponding block above
- */
- sourceSets {
- commonMain.dependencies {
+ sourceSets {
+ commonMain {
+ dependencies {
implementation(libs.kotlinStdlibCommon)
}
+ }
+ androidMain.dependencies {
+ }
- androidMain.dependencies {
+ commonTest {
+ dependencies {
+ }
+ }
+
+ jvmMain {
+ dependsOn(commonMain)
+ dependencies {
+ implementation(libs.testRules)
+ implementation(libs.testRunner)
+ implementation(libs.junit)
+ implementation(libs.truth)
+ }
+ }
+
+
+ androidMain {
+ dependsOn(jvmMain)
+ dependencies {
api("androidx.annotation:annotation:1.1.0")
}
+ }
- desktopMain.dependencies {
- implementation(libs.kotlinStdlib)
+ if (desktopEnabled) {
+ desktopMain {
+ dependsOn(jvmMain)
+ dependencies {
+ implementation(libs.kotlinStdlib)
+ }
}
+ }
- test.dependencies {
+ jvmTest {
+ dependsOn(commonTest)
+ dependencies {
+ }
+ }
+
+ androidAndroidTest {
+ dependsOn(jvmTest)
+ dependencies {
implementation(libs.testRules)
implementation(libs.testRunner)
implementation(libs.junit)
implementation(libs.truth)
}
+ }
- androidAndroidTest.dependencies {
- implementation(libs.testRules)
- implementation(libs.testRunner)
- implementation(libs.junit)
- implementation(libs.truth)
+ if (desktopEnabled) {
+ desktopTest {
+ dependsOn(jvmTest)
+ dependsOn(desktopMain)
+ dependencies {
+ }
}
}
}