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

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/compose-publish-dry-run.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ jobs:

- name: Compose Publish Darwin + Native Linux
run: |
./gradlew publishComposeJb -Pcompose.platforms=macos,uikit,tvos,watchos,linux,mingw \
./gradlew publishComposeJb -Pcompose.platforms=macos,ios,tvos,watchos,linux,mingw \
--no-daemon --stacktrace

compose-web-publish:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/compose-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ jobs:
- name: Run iOS Tests
timeout-minutes: 15
run: |
./gradlew testUIKit \
./gradlew testIos \
--no-daemon --stacktrace

- name: Test Summary
Expand Down
6 changes: 3 additions & 3 deletions MULTIPLATFORM.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,10 @@ Run tests for Web:
./gradlew :mpp:testWeb
```

Run tests for UIKit:
Run tests for iOS:

```bash
./gradlew :mpp:testUIKit'
./gradlew :mpp:testIos'
```

Run iOS instrumented tests.
Expand Down Expand Up @@ -104,7 +104,7 @@ Compose Multiplatform core libraries can be published to local Maven with the fo
./gradlew :mpp:publishComposeJbToMavenLocal -Pcompose.platforms=all -Pjetbrains.publication.version.COMPOSE=0.1.0-dev1000 -Pjetbrains.publication.version.LIFECYCLE=0.1.0-dev1000
```

`-Pcompose.platforms=all` could be replace with comma-separated list of platforms, such as `js,jvm,androidDebug,androidRelease,macosx64,uikit`.
`-Pcompose.platforms=all` could be replace with comma-separated list of platforms, such as `js,jvm,androidDebug,androidRelease,macosx64,ios`.

3. Publish extended icons

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// Klib ABI Dump
// Targets: [iosArm64.uikitArm64, iosSimulatorArm64.uikitSimArm64, iosX64.uikitX64, js, linuxArm64, linuxX64, macosArm64, macosX64, mingwX64, tvosArm64, tvosSimulatorArm64, tvosX64, wasmJs, watchosArm32, watchosArm64, watchosSimulatorArm64, watchosX64]
// Targets: [iosArm64, iosSimulatorArm64, iosX64, js, linuxArm64, linuxX64, macosArm64, macosX64, mingwX64, tvosArm64, tvosSimulatorArm64, tvosX64, wasmJs, watchosArm32, watchosArm64, watchosSimulatorArm64, watchosX64]
// Rendering settings:
// - Signature version: 2
// - Show manifest properties: true
Expand Down
2 changes: 1 addition & 1 deletion annotation/annotation-compatibility-stub/gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,5 @@
# limitations under the License.
#

artifactRedirection.targetNames=android,jvm,macosX64,macosArm64,uikitX64,uikitArm64,uikitSimArm64,linuxX64
artifactRedirection.targetNames=android,jvm,macosX64,macosArm64,iosX64,iosArm64,iosSimulatorArm64,linuxX64
artifactRedirection.groupId=androidx.annotation
2 changes: 1 addition & 1 deletion annotation/annotation/gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,5 @@
# limitations under the License.
#

artifactRedirection.targetNames=android,jvm,macosX64,macosArm64,uikitX64,uikitArm64,uikitSimArm64,linuxX64
artifactRedirection.targetNames=android,jvm,macosX64,macosArm64,iosX64,iosArm64,iosSimulatorArm64,linuxX64
artifactRedirection.groupId=androidx.annotation
Original file line number Diff line number Diff line change
Expand Up @@ -737,8 +737,19 @@ abstract class AndroidXMultiplatformExtension(val project: Project) {
browser {
testTask {
it.useKarma {
useChromeHeadless()
useConfigDirectory(File(getSupportRootFolder(), "buildSrc/karmaconfig"))
// TODO(buildSrc) temporary
useChrome()
useFirefox()
useSafari()
useConfigDirectory(
project.rootProject.projectDir.resolve(
if (platform == PlatformIdentifier.JS) {
"mpp/karma.config.d/js"
} else {
"mpp/karma.config.d/wasm"
}
)
)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

package org.jetbrains.androidx.build

import androidx.build.AndroidXMultiplatformExtension
import androidx.build.multiplatformExtension
import javax.inject.Inject
import org.gradle.api.Project
Expand Down Expand Up @@ -161,6 +162,8 @@ fun Project.configureTargetsForComposeMultiplatform() {
abstract class AndroidXForkMultiplatformExtensionImpl @Inject constructor(
private val project: Project
) : AndroidXForkMultiplatformExtension {
private val androidxMultiplatformExtension by lazy { project.extensions.findByType(AndroidXMultiplatformExtension::class.java) }

override fun configureDarwinFlags() {
val darwinFlags = listOf(
"-linker-option", "-framework", "-linker-option", "Metal",
Expand Down Expand Up @@ -204,7 +207,8 @@ abstract class AndroidXForkMultiplatformExtensionImpl @Inject constructor(

override fun iosInstrumentedTest() {
project.multiplatformExtension!!.run {
val uikitInstrumentedTest = sourceSets.create("uikitInstrumentedTest")
val iosInstrumentedTest = sourceSets.create("iosInstrumentedTest")
iosInstrumentedTest.kotlin.srcDir("src/uikitInstrumentedTest/kotlin")

fun KotlinNativeTargetWithSimulatorTests.configureTestRun() {
val testCompilation = compilations.create("instrumentedTest") {
Expand All @@ -214,7 +218,7 @@ abstract class AndroidXForkMultiplatformExtensionImpl @Inject constructor(
}

it.associateWith(compilations.getByName("test"))
it.defaultSourceSet.dependsOn(uikitInstrumentedTest)
it.defaultSourceSet.dependsOn(iosInstrumentedTest)
}
binaries.framework("InstrumentedTest", setOf(DEBUG)) {
compilation = testCompilation
Expand All @@ -228,7 +232,7 @@ abstract class AndroidXForkMultiplatformExtensionImpl @Inject constructor(
KotlinNativeTargetWithSimulatorTests::configureTestRun
)
testableTargets.getByName(
"iosSimArm64",
"iosSimulatorArm64",
KotlinNativeTargetWithSimulatorTests::class,
KotlinNativeTargetWithSimulatorTests::configureTestRun
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,20 +89,6 @@ open class JetBrainsExtensions(
val test = compilations.getByName("test")

val targetName = name.lowercase()
// The target name in a dependency project might be different from this project,
// so we check for an alternative name too.
// Historically, we had such aliases only for the 'ios <-> uikit' pair.
val altName = if (targetName.startsWith("ios")) {
targetName
.replace("iossimulator", "uikitsim")
.replace("ios", "uikit")
} else if (targetName.startsWith("uikit")) {
targetName
.replace("uikitsim", "iossimulator")
.replace("uikit", "ios")
} else {
null
}

val rootProjectName = project.rootProject.name // compose-multiplatform-core
val redirectedProjects by lazy {
Expand All @@ -112,7 +98,7 @@ open class JetBrainsExtensions(
// they have a group name with rootProjectName in it
!it.group.toString().contains(rootProjectName)
}?.artifactRedirection()?.takeIf {
it.targetNames.contains(targetName) || it.targetNames.contains(altName)
it.targetNames.contains(targetName)
}?.let {
project.path to it.groupId + ":" + project.name + ":" + it.versionForTargetOrDefault(targetName)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ class JetBrainsAndroidXRootImplPlugin @Inject constructor(
val componentFactory: SoftwareComponentFactory
) : Plugin<Project> {
override fun apply(project: Project) {
project.subprojects { subproject ->
project.allprojects { subproject ->
subproject.tasks.configureEach {
if (it.name == "kotlinStoreYarnLock") it.enabled = false
if (it.name == "kotlinWasmStoreYarnLock") it.enabled = false
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ enum class KotlinTarget(val apiVersion: KotlinVersion, val catalogVersion: Strin
KOTLIN_2_0(KotlinVersion.KOTLIN_2_0, "kotlin20"),
KOTLIN_2_1(KotlinVersion.KOTLIN_2_1, "kotlin21"),
KOTLIN_2_2(KotlinVersion.KOTLIN_2_2, "kotlin22"),
DEFAULT(KOTLIN_2_0),
DEFAULT(KOTLIN_2_2),
LATEST(KOTLIN_2_2);

constructor(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@ enum class ComposePlatforms(vararg val alternativeNames: String) {
WasmJs("Web"),
MacosX64("Macos"),
MacosArm64("Macos"),
IosX64("Ios", "Uikit"),
IosArm64("Ios", "Uikit"),
IosSimulatorArm64("Ios", "Uikit"),
IosX64("Ios"),
IosArm64("Ios"),
IosSimulatorArm64("Ios"),
TvosArm64("TvOs"),
TvosX64("TvOs"),
TvosSimulatorArm64("TvOs"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import org.gradle.api.tasks.CacheableTask
import org.gradle.api.tasks.Internal

@CacheableTask
abstract class AbstractComposePublishingTask : DefaultTask() {
open class ComposePublishingTask : DefaultTask() {
@get:Internal
lateinit var repository: String

Expand All @@ -21,7 +21,9 @@ abstract class AbstractComposePublishingTask : DefaultTask() {
composeProperties.targetPlatforms
}

abstract fun dependsOnComposeTask(task: String)
fun dependsOnComposeTask(task: String) {
dependsOn(task)
}

fun publish(rootProject: Project, component: ComposeComponent) {
if (component.customTasks.isNotEmpty()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,17 +101,17 @@ object JetBrainsPublication {
// ComposeComponent(
// path = ":lifecycle:lifecycle-common",
// // No android target here - jvm artefact will be used for android apps as well
// supportedPlatforms = ComposePlatforms.ALL_AOSP - ComposePlatforms.ANDROID
// supportedPlatforms = ComposePlatforms.ALL - ComposePlatforms.ANDROID
// ),
// ComposeComponent(
// path = ":lifecycle:lifecycle-runtime",
// supportedPlatforms = ComposePlatforms.ALL_AOSP
// supportedPlatforms = ComposePlatforms.ALL
// ),
// ComposeComponent(
// path = ":lifecycle:lifecycle-viewmodel",
// supportedPlatforms = ComposePlatforms.ALL_AOSP
// supportedPlatforms = ComposePlatforms.ALL
// ),
// ComposeComponent(":lifecycle:lifecycle-viewmodel-savedstate", supportedPlatforms = ComposePlatforms.ALL_AOSP),
// ComposeComponent(":lifecycle:lifecycle-viewmodel-savedstate", supportedPlatforms = ComposePlatforms.ALL),
// ComposeComponent(":lifecycle:lifecycle-runtime-compose", supportedPlatforms = ComposePlatforms.ALL),
ComposeComponent(":lifecycle:lifecycle-viewmodel-compose"),
ComposeComponent(":lifecycle:lifecycle-viewmodel-navigation3"),
Expand All @@ -129,12 +129,12 @@ object JetBrainsPublication {
),
"SAVEDSTATE" to listOf(
// STUBs
// ComposeComponent(":savedstate:savedstate", supportedPlatforms = ComposePlatforms.ALL_AOSP),
// ComposeComponent(":savedstate:savedstate", supportedPlatforms = ComposePlatforms.ALL),
// ComposeComponent(":savedstate:savedstate-compose", supportedPlatforms = ComposePlatforms.ALL),
),
"WINDOW" to listOf(
// STUBS
// ComposeComponent(":window:window-core", supportedPlatforms = ComposePlatforms.ALL_AOSP - ComposePlatforms.WINDOWS_NATIVE),
// ComposeComponent(":window:window-core", supportedPlatforms = ComposePlatforms.ALL - ComposePlatforms.WINDOWS_NATIVE),
),
)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// Klib ABI Dump
// Targets: [iosArm64.uikitArm64, iosSimulatorArm64.uikitSimArm64, iosX64.uikitX64, js, linuxArm64, linuxX64, macosArm64, macosX64, mingwX64, tvosArm64, tvosSimulatorArm64, tvosX64, wasmJs, watchosArm32, watchosArm64, watchosSimulatorArm64, watchosX64]
// Targets: [iosArm64, iosSimulatorArm64, iosX64, js, linuxArm64, linuxX64, macosArm64, macosX64, mingwX64, tvosArm64, tvosSimulatorArm64, tvosX64, wasmJs, watchosArm32, watchosArm64, watchosSimulatorArm64, watchosX64]
// Rendering settings:
// - Signature version: 2
// - Show manifest properties: true
Expand Down
2 changes: 1 addition & 1 deletion collection/collection-compatibility-stub/gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,5 @@
# limitations under the License.
#

artifactRedirection.targetNames=android,jvm,macosX64,macosArm64,uikitX64,uikitArm64,uikitSimArm64,linuxX64
artifactRedirection.targetNames=android,jvm,macosX64,macosArm64,iosX64,iosArm64,iosSimulatorArm64,linuxX64
artifactRedirection.groupId=androidx.collection
2 changes: 1 addition & 1 deletion collection/collection/gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,5 @@
# limitations under the License.
#

artifactRedirection.targetNames=android,jvm,macosX64,macosArm64,uikitX64,uikitArm64,uikitSimArm64,linuxX64
artifactRedirection.targetNames=android,jvm,macosX64,macosArm64,iosX64,iosArm64,iosSimulatorArm64,linuxX64
artifactRedirection.groupId=androidx.collection
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// Klib ABI Dump
// Targets: [iosArm64.uikitArm64, iosSimulatorArm64.uikitSimArm64, iosX64.uikitX64, js, macosArm64, macosX64, wasmJs]
// Targets: [iosArm64, iosSimulatorArm64, iosX64, js, macosArm64, macosX64, wasmJs]
// Rendering settings:
// - Signature version: 2
// - Show manifest properties: true
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// Klib ABI Dump
// Targets: [iosArm64.uikitArm64, iosSimulatorArm64.uikitSimArm64, iosX64.uikitX64, js, macosArm64, macosX64, wasmJs]
// Targets: [iosArm64, iosSimulatorArm64, iosX64, js, macosArm64, macosX64, wasmJs]
// Rendering settings:
// - Signature version: 2
// - Show manifest properties: true
Expand Down
2 changes: 1 addition & 1 deletion compose/animation/animation/api/animation.klib.api
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// Klib ABI Dump
// Targets: [iosArm64.uikitArm64, iosSimulatorArm64.uikitSimArm64, iosX64.uikitX64, js, macosArm64, macosX64, wasmJs]
// Targets: [iosArm64, iosSimulatorArm64, iosX64, js, macosArm64, macosX64, wasmJs]
// Rendering settings:
// - Signature version: 2
// - Show manifest properties: true
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// Klib ABI Dump
// Targets: [iosArm64.uikitArm64, iosSimulatorArm64.uikitSimArm64, iosX64.uikitX64, js, macosArm64, macosX64, wasmJs]
// Targets: [iosArm64, iosSimulatorArm64, iosX64, js, macosArm64, macosX64, wasmJs]
// Rendering settings:
// - Signature version: 2
// - Show manifest properties: true
Expand Down
8 changes: 4 additions & 4 deletions compose/foundation/foundation-layout/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -146,11 +146,11 @@ androidXMultiplatform {
dependsOn(nonJvmTest)
}

uikitMain {
iosMain {
dependsOn(nativeMain)
}

uikitTest {
iosTest {
dependsOn(nativeTest)
}

Expand All @@ -177,8 +177,8 @@ androidXMultiplatform {

if (target.platformType == KotlinPlatformType.native) {
if (target.konanTarget.family == Family.IOS) {
target.compilations["main"].defaultSourceSet.dependsOn(uikitMain)
target.compilations["test"].defaultSourceSet.dependsOn(uikitTest)
target.compilations["main"].defaultSourceSet.dependsOn(iosMain)
target.compilations["test"].defaultSourceSet.dependsOn(iosTest)
} else if (target.konanTarget.family == Family.OSX) {
target.compilations["main"].defaultSourceSet.dependsOn(macosMain)
target.compilations["test"].defaultSourceSet.dependsOn(macosTest)
Expand Down
9 changes: 1 addition & 8 deletions compose/foundation/foundation/api/desktop/foundation.api
Original file line number Diff line number Diff line change
Expand Up @@ -720,6 +720,7 @@ public final class androidx/compose/foundation/gestures/TapGestureDetector_skiko
public abstract interface class androidx/compose/foundation/gestures/TargetedFlingBehavior : androidx/compose/foundation/gestures/FlingBehavior {
public fun performFling (Landroidx/compose/foundation/gestures/ScrollScope;FLkotlin/coroutines/Continuation;)Ljava/lang/Object;
public abstract fun performFling (Landroidx/compose/foundation/gestures/ScrollScope;FLkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
public static synthetic fun performFling$suspendImpl (Landroidx/compose/foundation/gestures/TargetedFlingBehavior;Landroidx/compose/foundation/gestures/ScrollScope;FLkotlin/coroutines/Continuation;)Ljava/lang/Object;
}

public final class androidx/compose/foundation/gestures/TransformGestureDetectorKt {
Expand Down Expand Up @@ -1293,10 +1294,6 @@ public final class androidx/compose/foundation/lazy/layout/LazyLayoutPinnedItemL
public synthetic fun add (Ljava/lang/Object;)Z
public fun addAll (ILjava/util/Collection;)Z
public fun addAll (Ljava/util/Collection;)Z
public fun addFirst (Landroidx/compose/foundation/lazy/layout/LazyLayoutPinnedItemList$PinnedItem;)V
public synthetic fun addFirst (Ljava/lang/Object;)V
public fun addLast (Landroidx/compose/foundation/lazy/layout/LazyLayoutPinnedItemList$PinnedItem;)V
public synthetic fun addLast (Ljava/lang/Object;)V
public fun clear ()V
public fun contains (Landroidx/compose/foundation/lazy/layout/LazyLayoutPinnedItemList$PinnedItem;)Z
public final fun contains (Ljava/lang/Object;)Z
Expand All @@ -1316,10 +1313,6 @@ public final class androidx/compose/foundation/lazy/layout/LazyLayoutPinnedItemL
public synthetic fun remove (I)Ljava/lang/Object;
public fun remove (Ljava/lang/Object;)Z
public fun removeAll (Ljava/util/Collection;)Z
public fun removeFirst ()Landroidx/compose/foundation/lazy/layout/LazyLayoutPinnedItemList$PinnedItem;
public synthetic fun removeFirst ()Ljava/lang/Object;
public fun removeLast ()Landroidx/compose/foundation/lazy/layout/LazyLayoutPinnedItemList$PinnedItem;
public synthetic fun removeLast ()Ljava/lang/Object;
public fun replaceAll (Ljava/util/function/UnaryOperator;)V
public fun retainAll (Ljava/util/Collection;)Z
public fun set (ILandroidx/compose/foundation/lazy/layout/LazyLayoutPinnedItemList$PinnedItem;)Landroidx/compose/foundation/lazy/layout/LazyLayoutPinnedItemList$PinnedItem;
Expand Down
4 changes: 2 additions & 2 deletions compose/foundation/foundation/api/foundation.klib.api
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// Klib ABI Dump
// Targets: [iosArm64.uikitArm64, iosSimulatorArm64.uikitSimArm64, iosX64.uikitX64, js, macosArm64, macosX64, wasmJs]
// Alias: ios => [iosArm64.uikitArm64, iosSimulatorArm64.uikitSimArm64, iosX64.uikitX64]
// Targets: [iosArm64, iosSimulatorArm64, iosX64, js, macosArm64, macosX64, wasmJs]
// Alias: ios => [iosArm64, iosSimulatorArm64, iosX64]
// Rendering settings:
// - Signature version: 2
// - Show manifest properties: true
Expand Down
13 changes: 9 additions & 4 deletions compose/foundation/foundation/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -206,15 +206,20 @@ androidXMultiplatform {
dependsOn(darwinTest)
}

uikitMain {
iosMain {

kotlin.srcDir("src/uikitMain/kotlin")
resources.srcDir("src/uikitMain/resources")
dependsOn(darwinMain)
dependencies {
// TODO: We shouldn't use it directly here
implementation(project(":compose:ui:ui-uikit"))
}
}

uikitTest {
iosTest {

kotlin.srcDir("src/uikitTest/kotlin")
dependsOn(darwinTest)
}

Expand Down Expand Up @@ -254,8 +259,8 @@ androidXMultiplatform {

if (target.platformType == KotlinPlatformType.native) {
if (target.konanTarget.family == Family.IOS) {
target.compilations["main"].defaultSourceSet.dependsOn(uikitMain)
target.compilations["test"].defaultSourceSet.dependsOn(uikitTest)
target.compilations["main"].defaultSourceSet.dependsOn(iosMain)
target.compilations["test"].defaultSourceSet.dependsOn(iosTest)
} else if (target.konanTarget.family == Family.OSX) {
target.compilations["main"].defaultSourceSet.dependsOn(macosMain)
target.compilations["test"].defaultSourceSet.dependsOn(macosTest)
Expand Down
Loading
Loading