diff --git a/.github/workflows/compose-tests.yml b/.github/workflows/compose-tests.yml
index f6601e2818962..70a8c75bd8d1e 100644
--- a/.github/workflows/compose-tests.yml
+++ b/.github/workflows/compose-tests.yml
@@ -6,6 +6,15 @@ on:
branches:
- jb-main
+env:
+ # TODO: https://youtrack.jetbrains.com/issue/CMP-9497/Investgate-CfW-tests-flakiness-with-enabled-gradle-configuration-cache-on-CI
+ # Web Tests require running additional processes: karma in node, browser;
+ # To reduce the memory pressure, we change some defaults:
+ GRADLE_WEB_TESTS_FLAGS: >-
+ --no-daemon --stacktrace --no-parallel --no-configuration-cache
+ -Dorg.gradle.jvmargs="-Xmx8g -XX:+UseParallelGC"
+ -Porg.gradle.workers.max=1
+
jobs:
compose-desktop-tests:
runs-on: ubuntu-24.04
@@ -203,8 +212,7 @@ jobs:
# Compile tests as a separate step to reduce memory usage and potential OOM during running tests.
- name: Compile ${{ matrix.task }} Tests
run: |
- ./gradlew compileTestKotlin${{ matrix.task }} \
- --no-daemon --stacktrace
+ ./gradlew compileTestKotlin${{ matrix.task }} ${{ env.GRADLE_WEB_TESTS_FLAGS }}
- name: Setup Google Chrome
uses: browser-actions/setup-chrome@v2
@@ -220,8 +228,7 @@ jobs:
- name: Run Web Chrome Tests
run: |
- ./gradlew :mpp:testWeb${{ matrix.task }} \
- --no-daemon --stacktrace --no-parallel \
+ ./gradlew :mpp:testWeb${{ matrix.task }} ${{ env.GRADLE_WEB_TESTS_FLAGS }} \
-Pjetbrains.androidx.web.tests.enableFirefox=false \
-Pjetbrains.androidx.web.tests.enableChrome=true
@@ -250,8 +257,7 @@ jobs:
# Compile tests as a separate step to reduce memory usage and potential OOM during running tests.
- name: Compile ${{ matrix.task }} Tests
run: |
- ./gradlew compileTestKotlin${{ matrix.task }} \
- --no-daemon --stacktrace
+ ./gradlew compileTestKotlin${{ matrix.task }} ${{ env.GRADLE_WEB_TESTS_FLAGS }}
- name: Setup Missing Packages
run: |
@@ -270,8 +276,7 @@ jobs:
- name: Run Web Firefox Tests
run: |
- ./gradlew :mpp:testWeb${{ matrix.task }} \
- --no-daemon --stacktrace --no-parallel \
+ ./gradlew :mpp:testWeb${{ matrix.task }} ${{ env.GRADLE_WEB_TESTS_FLAGS }} \
-Pjetbrains.androidx.web.tests.enableFirefox=true \
-Pjetbrains.androidx.web.tests.enableChrome=false
diff --git a/.run/desktop/test.run.xml b/.run/desktop/test.run.xml
index f6ff1ca382f10..c223f0f318a78 100644
--- a/.run/desktop/test.run.xml
+++ b/.run/desktop/test.run.xml
@@ -10,7 +10,7 @@
@@ -21,4 +21,4 @@
true
-
+
\ No newline at end of file
diff --git a/annotation/annotation-compatibility-stub/build.gradle b/annotation/annotation-compatibility-stub/build.gradle
index 5a9970ee9aebf..a7ce1cb326093 100644
--- a/annotation/annotation-compatibility-stub/build.gradle
+++ b/annotation/annotation-compatibility-stub/build.gradle
@@ -14,42 +14,29 @@
* limitations under the License.
*/
-import androidx.build.AndroidXComposePlugin
-import androidx.build.LibraryType
-import org.jetbrains.androidx.build.JetBrainsAndroidXPlugin
+import androidx.build.PlatformIdentifier
+import androidx.build.SoftwareType
plugins {
id("AndroidXPlugin")
-
- // TODO move all functionality to Compose-independent plugin (`collection` shouldn't depend on Compose concepts)
- id("AndroidXComposePlugin")
id("JetBrainsAndroidXPlugin")
}
-AndroidXComposePlugin.applyAndConfigureKotlinPlugin(project)
-JetBrainsAndroidXPlugin.applyAndConfigure(project)
-
-androidXComposeMultiplatform {
+androidXMultiplatform {
+ ios()
js()
- wasm()
- darwin()
- linux()
-}
-
-kotlin {
jvm()
- // Not all modules can have these targets, so declare them here instead of androidXComposeMultiplatform.
- // We can support the kotlin-native targets supported by kotlin coroutines:
- // https://github.com/Kotlin/kotlinx.coroutines/blob/master/gradle/compile-native-multiplatform.gradle
- // NOTE: Keep this list in sync with runtime-saveable's targets.
+ linux()
+ mac()
+ mingwX64()
+ tvos()
+ wasmJs()
watchosArm64()
watchosArm32()
watchosX64()
watchosSimulatorArm64()
- tvosArm64()
- tvosX64()
- tvosSimulatorArm64()
- mingwX64()
+
+ defaultPlatform(PlatformIdentifier.JVM)
sourceSets {
commonMain {
@@ -63,11 +50,8 @@ kotlin {
androidx {
name = "Annotation"
- type = LibraryType.PUBLISHED_LIBRARY
+ type = SoftwareType.PUBLISHED_LIBRARY
+ mavenVersion = LibraryVersions.ANNOTATION
inceptionYear = "2013"
description = "Provides source annotations for tooling and readability."
}
-
-androidxCompose {
- composeCompilerPluginEnabled = false
-}
diff --git a/buildSrc/plugins/src/main/kotlin/org/jetbrains/androidx/build/JetBrainsAndroidXPlugin.kt b/buildSrc/plugins/src/main/kotlin/org/jetbrains/androidx/build/JetBrainsAndroidXPlugin.kt
index f8252b62ac776..a5c38d6f8a183 100644
--- a/buildSrc/plugins/src/main/kotlin/org/jetbrains/androidx/build/JetBrainsAndroidXPlugin.kt
+++ b/buildSrc/plugins/src/main/kotlin/org/jetbrains/androidx/build/JetBrainsAndroidXPlugin.kt
@@ -29,13 +29,4 @@ class JetBrainsAndroidXPlugin : Plugin {
)
)
}
-
- companion object {
-
- @Suppress("UNUSED_PARAMETER")
- @JvmStatic
- fun applyAndConfigure(
- project: Project
- ) {}
- }
}
\ No newline at end of file
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/AndroidXImplPlugin.kt b/buildSrc/private/src/main/kotlin/androidx/build/AndroidXImplPlugin.kt
index 260cbc7c8d38c..908e9223d3adf 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/AndroidXImplPlugin.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/AndroidXImplPlugin.kt
@@ -218,7 +218,7 @@ abstract class AndroidXImplPlugin @Inject constructor() : Plugin {
it.configureWithAndroidXExtension(androidXExtension)
}
project.configureConstraintsWithinGroup(androidXExtension)
- project.validateProjectParser(androidXExtension)
+ if (!org.jetbrains.androidx.build.isJetBrainsForkStructureEnabled(project)) project.validateProjectParser(androidXExtension)
project.validateAllArchiveInputsRecognized()
project.afterEvaluate {
if (androidXExtension.shouldPublishSbom()) {
@@ -544,7 +544,7 @@ abstract class AndroidXImplPlugin @Inject constructor() : Plugin {
}
}
project.configureKmp()
- project.configureSourceJarForMultiplatform()
+ @Suppress("ConstantConditionIf") if (false) project.configureSourceJarForMultiplatform() // the fork has different logic
// Disable any source JAR task(s) added by KotlinMultiplatformPlugin.
// https://youtrack.jetbrains.com/issue/KT-55881
@@ -734,7 +734,7 @@ abstract class AndroidXImplPlugin @Inject constructor() : Plugin {
androidXExtension,
)
project.configurePublicResourcesStub(variant)
- project.configureMultiplatformSourcesForAndroid(androidXExtension.samplesProjects)
+ @Suppress("ConstantConditionIf") if (false) project.configureMultiplatformSourcesForAndroid(androidXExtension.samplesProjects) // the fork has different logic
}
project.configureVersionFileWriter(project.multiplatformExtension!!, androidXExtension)
@@ -928,7 +928,7 @@ abstract class AndroidXImplPlugin @Inject constructor() : Plugin {
)
}
if (variant.name == DEFAULT_PUBLISH_CONFIG) {
- project.configureSourceJarForAndroid(variant, androidXExtension.samplesProjects)
+ @Suppress("ConstantConditionIf") if (false) project.configureSourceJarForAndroid(variant, androidXExtension.samplesProjects) // the fork has different logic
project.configurePublicResourcesStub(variant)
project.configureDependencyVerification(androidXExtension) { taskProvider ->
taskProvider.configure { task -> task.dependsOn("compileReleaseJavaWithJavac") }
@@ -985,7 +985,7 @@ abstract class AndroidXImplPlugin @Inject constructor() : Plugin {
!project.plugins.hasPlugin(KotlinBasePluginWrapper::class.java) ||
!project.plugins.hasPlugin(KotlinBaseApiPlugin::class.java)
) {
- project.configureSourceJarForJava(androidXExtension.samplesProjects)
+ @Suppress("ConstantConditionIf") if (false) project.configureSourceJarForJava(androidXExtension.samplesProjects) // the fork has different logic
}
}
@@ -1059,8 +1059,9 @@ abstract class AndroidXImplPlugin @Inject constructor() : Plugin {
throw IllegalArgumentException("Unexpected extension: $this")
}
compileOptions.apply {
- sourceCompatibility = VERSION_1_8
- targetCompatibility = VERSION_1_8
+ // All fork Android libraries should target Java 11
+ sourceCompatibility = VERSION_11
+ targetCompatibility = VERSION_11
}
val defaultMinSdk = project.defaultAndroidConfig.minSdk
@@ -1455,19 +1456,14 @@ abstract class AndroidXImplPlugin @Inject constructor() : Plugin {
}
}
+@Suppress("unused")
internal fun getDefaultTargetJavaVersion(
softwareType: SoftwareType,
projectName: String? = null,
targetName: String? = null,
): JavaVersion {
- return when {
- // TODO(b/353328300): Move room-compiler-processing to Java 17 once Dagger is ready.
- projectName != null && projectName.contains("room3-compiler-processing") -> VERSION_11
- projectName != null && projectName.contains("desktop") -> VERSION_11
- targetName != null && (targetName == "desktop" || targetName == "jvmStubs") -> VERSION_11
- softwareType.compilationTarget == CompilationTarget.HOST -> VERSION_17
- else -> VERSION_1_8
- }
+ // All fork libraries (Android and Desktop) should target Java 11
+ return VERSION_11
}
/** Must be called from a `project.afterEvaluate` block. */
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/AndroidXMultiplatformExtension.kt b/buildSrc/private/src/main/kotlin/androidx/build/AndroidXMultiplatformExtension.kt
index 486018ed5cc80..e2c136106034d 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/AndroidXMultiplatformExtension.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/AndroidXMultiplatformExtension.kt
@@ -1,4 +1,4 @@
-/*
+/*
* Copyright 2022 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -34,10 +34,13 @@ import org.gradle.api.Project
import org.gradle.api.artifacts.Configuration
import org.gradle.api.configuration.BuildFeatures
import org.gradle.api.plugins.ExtensionAware
+import org.gradle.api.tasks.Copy
import org.gradle.api.tasks.PathSensitivity
import org.gradle.api.tasks.testing.Test
+import org.gradle.kotlin.dsl.dependencies
import org.gradle.kotlin.dsl.the
import org.gradle.kotlin.dsl.withType
+import org.jetbrains.androidx.build.configureForkWebTarget
import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
@@ -65,6 +68,7 @@ import org.jetbrains.kotlin.gradle.targets.wasm.yarn.WasmYarnPlugin
import org.jetbrains.kotlin.gradle.targets.wasm.yarn.WasmYarnRootEnvSpec
import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile
import org.jetbrains.kotlin.konan.target.LinkerOutputKind
+import org.tomlj.Toml
/**
* [AndroidXMultiplatformExtension] is an extension that wraps specific functionality of the Kotlin
@@ -705,7 +709,7 @@ abstract class AndroidXMultiplatformExtension(val project: Project) {
@JvmOverloads
fun js(block: Action? = null): KotlinJsTargetDsl? =
- project.configureWebTarget(
+ configureForkWebTarget(
platform = PlatformIdentifier.JS,
isEnabled = project.enableJs(),
createTarget = { configure -> kotlinExtension.js(configure) },
@@ -715,7 +719,7 @@ abstract class AndroidXMultiplatformExtension(val project: Project) {
@OptIn(ExperimentalWasmDsl::class)
@JvmOverloads
fun wasmJs(block: Action? = null): KotlinWasmTargetDsl? =
- project.configureWebTarget(
+ configureForkWebTarget(
platform = PlatformIdentifier.WASM_JS,
isEnabled = project.enableWasmJs(),
createTarget = { configure -> kotlinExtension.wasmJs(configure) },
@@ -768,6 +772,18 @@ abstract class AndroidXMultiplatformExtension(val project: Project) {
companion object {
const val EXTENSION_NAME = "androidXMultiplatform"
}
+
+ // FORK-only public extensions
+
+ /**
+ * Configures native compilation tasks with flags to link required frameworks
+ */
+ fun configureDarwinFlags() = org.jetbrains.androidx.build.configureDarwinFlags(project)
+
+ /**
+ * Configure instrumented tests to run on an actual iOS simulator.
+ */
+ fun iosInstrumentedTest() = org.jetbrains.androidx.build.addIosInstrumentedTestSourceset(project)
}
// TODO(https://youtrack.jetbrains.com/issue/KT-76874/):
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/clang/KonanBuildService.kt b/buildSrc/private/src/main/kotlin/androidx/build/clang/KonanBuildService.kt
index abf6e304bcd6d..9b4a9ed26f546 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/clang/KonanBuildService.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/clang/KonanBuildService.kt
@@ -55,17 +55,6 @@ import org.jetbrains.kotlin.konan.target.PlatformManager
abstract class KonanBuildService @Inject constructor(private val execOperations: ExecOperations) :
BuildService {
private val dist by lazy {
- // double check that we don't initialize konan distribution without prebuilts in AOSP
- check(
- parameters.projectLayoutType.get() == ProjectLayoutType.PLAYGROUND ||
- parameters.prebuilts.isPresent
- ) {
- """
- Prebuilts directory for Konan must be provided when the project is not a playground
- project.
- """
- .trimIndent()
- }
KonanPrebuiltsSetup.createKonanDistribution(
prebuiltsDirectory = parameters.prebuilts.orNull?.asFile,
konanHome = parameters.konanHome.get().asFile,
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/studio/StudioTask.kt b/buildSrc/private/src/main/kotlin/androidx/build/studio/StudioTask.kt
index b44d0f7b27eaf..4f4ce4046abbc 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/studio/StudioTask.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/studio/StudioTask.kt
@@ -445,6 +445,10 @@ abstract class StudioTask : DefaultTask() {
when (ProjectLayoutType.from(this)) {
ProjectLayoutType.ANDROIDX -> RootStudioTask::class.java
ProjectLayoutType.PLAYGROUND -> PlaygroundStudioTask::class.java
+
+ // For JetBrains' fork it's supposed to use IJ IDEA, so it's not required to have a task
+ // to automatically download and run Android Studio.
+ ProjectLayoutType.JETBRAINS_FORK -> return
}
tasks.register(STUDIO_TASK, studioTask)
}
diff --git a/buildSrc/private/src/main/kotlin/org/jetbrains/androidx/build/AndroidXForkTargetsExtensions.kt b/buildSrc/private/src/main/kotlin/org/jetbrains/androidx/build/AndroidXForkTargetsExtensions.kt
new file mode 100644
index 0000000000000..5778d9a15dbca
--- /dev/null
+++ b/buildSrc/private/src/main/kotlin/org/jetbrains/androidx/build/AndroidXForkTargetsExtensions.kt
@@ -0,0 +1,226 @@
+/*
+ * Copyright 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.jetbrains.androidx.build
+
+import androidx.build.AndroidXMultiplatformExtension
+import androidx.build.PlatformIdentifier
+import androidx.build.configurePinnedKotlinLibraries
+import org.gradle.api.Project
+import androidx.build.multiplatformExtension
+import org.gradle.api.Action
+import org.gradle.api.tasks.Copy
+import org.gradle.kotlin.dsl.dependencies
+import org.gradle.kotlin.dsl.getByName
+import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget
+import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTargetWithSimulatorTests
+import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsTargetDsl
+import org.jetbrains.kotlin.gradle.targets.js.testing.KotlinJsTest
+import org.jetbrains.kotlin.konan.target.KonanTarget
+import org.tomlj.Toml
+
+private fun KotlinJsTest.passTestFlagsToEnvironment() {
+ listOf(
+ "jetbrains.androidx.web.tests.enableChrome",
+ "jetbrains.androidx.web.tests.enableChromium",
+ "jetbrains.androidx.web.tests.enableFirefox",
+ "jetbrains.androidx.web.tests.enableSafari",
+ ).forEach { propertyName ->
+ if (project.findProperty(propertyName)?.toString()?.toBoolean() == true) {
+ environment(propertyName, "1")
+ }
+ }
+}
+
+fun AndroidXMultiplatformExtension.configureForkWebTarget(
+ platform: PlatformIdentifier,
+ isEnabled: Boolean,
+ createTarget: (KotlinJsTargetDsl.() -> Unit) -> T,
+ block: Action? = null,
+): T? {
+ val toml = Toml.parse(
+ project.rootProject.projectDir.resolve("gradle/libs.versions.toml").toPath()
+ )
+ val skikoVersion = toml.getTable("versions")!!.getString("skiko")!!
+ val skikoWasm = project.configurations.findByName("skikoWasm")
+ ?: project.configurations.create("skikoWasm")
+
+ supportedPlatforms.add(platform)
+ return if (isEnabled) {
+ val target = createTarget {
+ block?.execute(this)
+ project.configurePinnedKotlinLibraries(platform)
+ browser {
+ testTask {
+ // We need to set up at least one browser here due to kotlin tooling limitations
+ // Actual browser configuration is set in mpp/karma.config.d/js/config.js
+ it.passTestFlagsToEnvironment()
+ it.useKarma {
+ useChrome()
+ useFirefox()
+ useSafari()
+ useConfigDirectory(
+ project.rootProject.projectDir.resolve(
+ if (platform == PlatformIdentifier.JS) {
+ "mpp/karma.config.d/js"
+ } else {
+ "mpp/karma.config.d/wasm"
+ }
+ )
+ )
+ }
+ }
+ }
+ }
+
+ if (platform == PlatformIdentifier.JS) {
+ val resourcesDir = project.layout.buildDirectory.asFile.get().resolve("resources/skiko-js")
+
+ // Below code helps configure the tests for k/wasm targets
+ project.dependencies {
+ skikoWasm("org.jetbrains.skiko:skiko-js-wasm-runtime:${skikoVersion}")
+ }
+
+ val fetchSkikoWasmRuntime = project.tasks.register("fetchSkikoJsWasmRuntime", Copy::class.java) {
+ it.destinationDir = project.file(resourcesDir)
+ it.from(skikoWasm.map { artifact ->
+ project.zipTree(artifact)
+ .matching { pattern ->
+ pattern.include("skiko.wasm", "skiko.mjs", "js-reexport-symbols.mjs")
+ }
+ })
+ }
+
+ project.tasks.getByName("jsTestProcessResources").apply {
+ dependsOn(fetchSkikoWasmRuntime)
+ }
+
+ project.multiplatformExtension!!.sourceSets.getByName("jsTest").also {
+ it.resources.setSrcDirs(it.resources.srcDirs)
+ it.resources.srcDirs(fetchSkikoWasmRuntime.map { it.destinationDir })
+ }
+ } else {
+ val resourcesDir = project.layout.buildDirectory.asFile.get().resolve("resources/skiko-wasm")
+
+ // Below code helps configure the tests for k/wasm targets
+ project.dependencies {
+ skikoWasm("org.jetbrains.skiko:skiko-js-wasm-runtime:${skikoVersion}")
+ }
+
+ val fetchSkikoWasmRuntime = project.tasks.register("fetchSkikoWasmRuntime", Copy::class.java) {
+ it.destinationDir = project.file(resourcesDir)
+ it.from(skikoWasm.map { artifact ->
+ project.zipTree(artifact)
+ .matching { pattern ->
+ pattern.include("skiko.wasm", "skiko.mjs")
+ }
+ })
+ }
+
+ project.tasks.getByName("wasmJsTestProcessResources").apply {
+ dependsOn(fetchSkikoWasmRuntime)
+ }
+
+ project.multiplatformExtension!!.sourceSets.getByName("wasmJsTest").also {
+ it.resources.setSrcDirs(it.resources.srcDirs)
+ it.resources.srcDirs(fetchSkikoWasmRuntime.map { it.destinationDir })
+ }
+ }
+
+ target
+ } else null
+}
+
+/**
+ * Configures native compilation tasks with flags to link required frameworks
+ */
+fun configureDarwinFlags(project: Project) {
+ val darwinFlags = listOf(
+ "-linker-option", "-framework", "-linker-option", "Metal",
+ "-linker-option", "-framework", "-linker-option", "CoreText",
+ "-linker-option", "-framework", "-linker-option", "CoreGraphics",
+ "-linker-option", "-framework", "-linker-option", "CoreServices"
+ )
+ val iosFlags = listOf("-linker-option", "-framework", "-linker-option", "UIKit")
+
+ fun KotlinNativeTarget.configureFreeCompilerArgs() {
+ val isIOS = konanTarget == KonanTarget.IOS_X64 ||
+ konanTarget == KonanTarget.IOS_SIMULATOR_ARM64 ||
+ konanTarget == KonanTarget.IOS_ARM64
+
+ binaries.forEach {
+ val flags = mutableListOf().apply {
+ addAll(darwinFlags)
+ if (isIOS) addAll(iosFlags)
+ }
+
+ // TODO: Remove when the issue is fixed in KGP
+ // https://youtrack.jetbrains.com/issue/KT-74564
+ // it.freeCompilerArgs += flags
+ //
+ // Fixes problem when instrumented tests compilation is not properly applied to
+ // the framework configuration.
+ it.linkTaskProvider.configure {
+ @Suppress("DEPRECATION")
+ it.kotlinOptions.freeCompilerArgs += flags
+ }
+ }
+ }
+ project.multiplatformExtension!!.run {
+ macosX64 { configureFreeCompilerArgs() }
+ macosArm64 { configureFreeCompilerArgs() }
+ iosX64 { configureFreeCompilerArgs() }
+ iosArm64 { configureFreeCompilerArgs() }
+ iosSimulatorArm64 { configureFreeCompilerArgs() }
+ }
+}
+
+/**
+ * Configure instrumented tests to run on an actual iOS simulator.
+ */
+fun addIosInstrumentedTestSourceset(project: Project) {
+ project.multiplatformExtension!!.run {
+ val iosInstrumentedTest = sourceSets.create("iosInstrumentedTest")
+ iosInstrumentedTest.kotlin.srcDir("src/uikitInstrumentedTest/kotlin")
+
+ fun KotlinNativeTargetWithSimulatorTests.configureTestRun() {
+ val testCompilation = compilations.create("instrumentedTest") {
+ compilerOptions {
+ // Generate K/N test runner for kotlin.test @Test support
+ freeCompilerArgs.add("-tr")
+ }
+
+ it.associateWith(compilations.getByName("test"))
+ it.defaultSourceSet.dependsOn(iosInstrumentedTest)
+ }
+ binaries.framework("InstrumentedTest", setOf(DEBUG)) {
+ compilation = testCompilation
+ baseName = "InstrumentedTest"
+ isStatic = true
+ }
+ }
+ testableTargets.getByName(
+ "iosX64",
+ KotlinNativeTargetWithSimulatorTests::class,
+ KotlinNativeTargetWithSimulatorTests::configureTestRun
+ )
+ testableTargets.getByName(
+ "iosSimulatorArm64",
+ KotlinNativeTargetWithSimulatorTests::class,
+ KotlinNativeTargetWithSimulatorTests::configureTestRun
+ )
+ }
+}
diff --git a/buildSrc/private/src/main/kotlin/org/jetbrains/androidx/build/JetBrainsAndroidXImplPlugin.kt b/buildSrc/private/src/main/kotlin/org/jetbrains/androidx/build/JetBrainsAndroidXImplPlugin.kt
index 798c04798d2e1..03948a54ea263 100644
--- a/buildSrc/private/src/main/kotlin/org/jetbrains/androidx/build/JetBrainsAndroidXImplPlugin.kt
+++ b/buildSrc/private/src/main/kotlin/org/jetbrains/androidx/build/JetBrainsAndroidXImplPlugin.kt
@@ -18,8 +18,6 @@
package org.jetbrains.androidx.build
-import androidx.build.AndroidXExtension
-import androidx.build.AndroidXMultiplatformExtension
import androidx.build.multiplatformExtension
import javax.inject.Inject
import kotlinx.validation.ApiValidationExtension
@@ -29,12 +27,14 @@ import org.gradle.api.Project
import org.gradle.api.component.SoftwareComponentFactory
import org.gradle.kotlin.dsl.apply
import org.gradle.kotlin.dsl.create
+import org.jetbrains.kotlin.gradle.ExternalKotlinTargetApi
import org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
import org.jetbrains.kotlin.gradle.plugin.KotlinMultiplatformPluginWrapper
import org.jetbrains.kotlin.gradle.plugin.mpp.AbstractKotlinTarget
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinSoftwareComponentWithCoordinatesAndPublication
+import org.jetbrains.kotlin.gradle.plugin.mpp.external.DecoratedExternalKotlinTarget
import org.jetbrains.kotlin.konan.target.KonanTarget
open class JetBrainsExtensions(
@@ -139,36 +139,20 @@ class JetBrainsAndroidXImplPlugin @Inject constructor(
@Suppress("UNREACHABLE_CODE", "UNUSED_VARIABLE")
override fun apply(project: Project) {
- check(project.plugins.hasPlugin("AndroidXPlugin")) {
- "JetBrainsAndroidXPlugin should be applied after AndroidXPlugin"
- }
-
- val androidxExtension =
- project.extensions.getByType(AndroidXExtension::class.java)
- val androidxMultiplatformExtension =
- project.extensions.getByType(AndroidXMultiplatformExtension::class.java)
- project.changeMavenCoordinatesToJetBrains(androidxExtension)
- project.configureMavenArtifactUpload(
- androidxExtension, androidxMultiplatformExtension, componentFactory)
- project.configureDependencyVerification()
+ if (isJetBrainsForkStructureEnabled(project)) {
+ project.changeMavenCoordinatesToJetBrains()
+ project.configureMavenArtifactUpload(componentFactory)
+ project.configureDependencyVerification()
- project.plugins.all { plugin ->
- if (plugin is KotlinMultiplatformPluginWrapper) {
- onKotlinMultiplatformPluginApplied(project)
+ project.plugins.all { plugin ->
+ if (plugin is KotlinMultiplatformPluginWrapper) {
+ onKotlinMultiplatformPluginApplied(project)
+ }
}
}
}
private fun onKotlinMultiplatformPluginApplied(project: Project) {
- /*
- FIXME: No AndroidXComposeMultiplatformExtension anymore
- project.extensions.create(
- AndroidXComposeMultiplatformExtension::class.java,
- "androidXComposeMultiplatform",
- AndroidXComposeMultiplatformExtensionImpl::class.java
- )
- */
-
enableArtifactRedirectionPublishing(project)
enableBinaryCompatibilityValidator(project)
val multiplatformExtension =
@@ -187,11 +171,8 @@ class JetBrainsAndroidXImplPlugin @Inject constructor(
}
}
+@OptIn(ExternalKotlinTargetApi::class)
private fun enableArtifactRedirectionPublishing(project: Project) {
- /*
- FIXME: Deprecation + warnings as errors
- 'fun DependencyHandler.create(...): ExternalModuleDependency' is deprecated. Use single-string notation instead.
-
val redirection = project.artifactRedirection() ?: return
val ext = project.multiplatformExtension ?: error("expected a multiplatform project")
@@ -208,19 +189,20 @@ private fun enableArtifactRedirectionPublishing(project: Project) {
configuration.name.startsWith(it, ignoreCase = true)
}
val targetVersion = redirection.versionForTargetOrDefault(targetName ?: "")
- project.dependencies.create(
- redirection.groupId, project.name, targetVersion
- )
+ project.dependencies.create("${redirection.groupId}:${project.name}:${targetVersion}") as org.gradle.api.artifacts.ModuleDependency
}
}
@OptIn(InternalKotlinGradlePluginApi::class)
ext.targets.all { target ->
if (target.name.lowercase() in redirection.targetNames) {
- project.publishAndroidxReference(target as AbstractKotlinTarget, newRootComponent)
+ if (target is AbstractKotlinTarget) {
+ project.setupRedirection(target, newRootComponent)
+ } else if (target is DecoratedExternalKotlinTarget) {
+ project.setupRedirection(target, newRootComponent)
+ }
}
}
- */
}
@OptIn(ExperimentalBCVApi::class)
diff --git a/buildSrc/private/src/main/kotlin/org/jetbrains/androidx/build/JetBrainsAndroidXRedirectingPublicationHelpers.kt b/buildSrc/private/src/main/kotlin/org/jetbrains/androidx/build/JetBrainsAndroidXRedirectingPublicationHelpers.kt
index e9471425ceeb4..8fd97a5d4d99f 100644
--- a/buildSrc/private/src/main/kotlin/org/jetbrains/androidx/build/JetBrainsAndroidXRedirectingPublicationHelpers.kt
+++ b/buildSrc/private/src/main/kotlin/org/jetbrains/androidx/build/JetBrainsAndroidXRedirectingPublicationHelpers.kt
@@ -16,6 +16,7 @@
package org.jetbrains.androidx.build
+import com.android.utils.mapValuesNotNull
import org.gradle.api.Project
import org.jetbrains.kotlin.gradle.plugin.mpp.*
import org.gradle.api.publish.PublishingExtension
@@ -33,11 +34,16 @@ import org.gradle.api.capabilities.Capability
import org.gradle.api.component.ComponentWithCoordinates
import org.gradle.api.component.ComponentWithVariants
import org.gradle.api.component.SoftwareComponent
+import org.gradle.api.internal.artifacts.DefaultModuleIdentifier
+import org.gradle.api.internal.artifacts.DefaultModuleVersionIdentifier
import org.gradle.api.internal.component.SoftwareComponentInternal
import org.gradle.api.internal.component.UsageContext
import org.gradle.api.publish.maven.MavenPublication
import org.gradle.api.publish.maven.tasks.AbstractPublishToMaven
+import org.jetbrains.kotlin.gradle.ExternalKotlinTargetApi
import org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi
+import org.jetbrains.kotlin.gradle.plugin.KotlinTargetComponent
+import org.jetbrains.kotlin.gradle.plugin.mpp.external.DecoratedExternalKotlinTarget
/**
* Usage that should be added to rootSoftwareComponent to represent target-specific variants
@@ -57,8 +63,17 @@ internal class CustomUsage(
override fun getGlobalExcludes(): Set = emptySet()
}
+@OptIn(InternalKotlinGradlePluginApi::class, ExternalKotlinTargetApi::class)
+internal fun Project.setupRedirection(target: DecoratedExternalKotlinTarget, newRootComponent: CustomRootComponent) {
+ setupRedirection(target.name, target.kotlinComponents, newRootComponent)
+}
+@OptIn(InternalKotlinGradlePluginApi::class)
+internal fun Project.setupRedirection(target: AbstractKotlinTarget, newRootComponent: CustomRootComponent) {
+ setupRedirection(target.name, target.kotlinComponents, newRootComponent)
+}
+
@OptIn(InternalKotlinGradlePluginApi::class)
-internal fun Project.publishAndroidxReference(target: AbstractKotlinTarget, newRootComponent: CustomRootComponent) {
+internal fun Project.setupRedirection(targetName: String, kotlinComponents: Set, newRootComponent: CustomRootComponent) {
afterEvaluate {
extensions.getByType(PublishingExtension::class.java).apply {
val kotlinMultiplatform = publications
@@ -79,7 +94,7 @@ internal fun Project.publishAndroidxReference(target: AbstractKotlinTarget, newR
if (it.publication.name == "kotlinMultiplatform") it.enabled = false
}
- target.kotlinComponents.forEach { component ->
+ kotlinComponents.forEach { component ->
val componentName = component.name
if (component is KotlinVariant)
@@ -102,15 +117,17 @@ internal fun Project.publishAndroidxReference(target: AbstractKotlinTarget, newR
is KotlinVariant -> component.usages
is KotlinVariantWithMetadataVariant -> component.usages
is JointAndroidKotlinTargetComponent -> component.usages
+ is InternalKotlinTargetComponent -> component.usages
else -> emptyList()
}
usages.forEach { usage ->
// Use -published configuration because it would have correct attribute set
// required for publication.
- val configurationName = usage.name + "-published"
+ val configurationName = if (usage.name.endsWith("-published")) usage.name else usage.name + "-published"
+
configurations.matching { it.name == configurationName }.all { conf ->
- newRootComponent.addUsageFromConfiguration(conf, usage)
+ newRootComponent.replaceUsagesFor(targetName, conf, usage)
}
}
}
@@ -122,33 +139,38 @@ internal class CustomRootComponent(
val customizeDependencyPerConfiguration: (Configuration) -> ModuleDependency
) : SoftwareComponentInternal, ComponentWithVariants, ComponentWithCoordinates {
override fun getName(): String = "kotlinDecoratedRootComponent"
- override fun getVariants(): Set = rootComponent.variants
+ override fun getVariants(): Set =
+ rootComponent.variants.filterTo(mutableSetOf()) { it.name !in replacedTargets }
+
override fun getCoordinates(): ModuleVersionIdentifier =
rootComponent.coordinates
- override fun getUsages(): Set = rootComponent.usages + extraUsages
+ override fun getUsages(): Set = rootComponent.usages + extraUsages.map { it() }
- private val extraUsages = mutableSetOf()
+ private val replacedTargets = mutableSetOf()
+ private val extraUsages = mutableSetOf<() -> UsageContext>()
+
+ fun replaceUsagesFor(targetName: String, configuration: Configuration, defaultUsage: KotlinUsageContext) {
+ replacedTargets.add(targetName)
+ extraUsages.add { usageFor(configuration, defaultUsage) }
+ }
- fun addUsageFromConfiguration(configuration: Configuration, defaultUsage: KotlinUsageContext) {
+ private fun usageFor(configuration: Configuration, defaultUsage: KotlinUsageContext): CustomUsage {
val newDependency = customizeDependencyPerConfiguration(configuration)
- // Dependencies from metadataApiElements, metadataSourcesElements.
- // Includes not only commonMain, but also other non-target sourceSets (skikoMain, webMain)
- val metadataDependencies = rootComponent.usages.flatMap { it.dependencies }
+ // Dependencies from Main
+ val targetDependencies = defaultUsage.dependencies.toSet()
- // Dependencies from debugApiElements and other Android configurations
- val androidDependencies = defaultUsage.dependencies.toSet()
+ // Dependencies from commonMain/skikoMain/webMain/etc
+ val sharedSourcesetsDependencies = rootComponent.usages.flatMap { it.dependencies }
- // Intersection of metadataDependencies and androidDependencies gives us commonMain deps
- val commonMainDependencies = metadataDependencies.filter { it in androidDependencies }
+ // Intersection of the dependencies gives us commonMain deps
+ val commonMainDependencies = sharedSourcesetsDependencies.filter { it in targetDependencies }
- extraUsages.add(
- CustomUsage(
- name = configuration.name,
- attributes = configuration.attributes,
- dependencies = setOf(newDependency) + commonMainDependencies
- )
+ return CustomUsage(
+ name = configuration.name,
+ attributes = configuration.attributes,
+ dependencies = setOf(newDependency) + commonMainDependencies
)
}
}
@@ -185,10 +207,8 @@ internal fun Project.originalToRedirectedDependency(
* org.jetbrains.compose.collection-internal:collection-jvm=androidx.collection:collection-jvm:1.5.0-beta01
* ...
*/
- /* FIXME: Restore after fixing for new buildSrc state
val projectDefined =
- getProjectsMap()
- .values
+ JetBrainsPublication.projectPathToLibrary.keys
.mapNotNull { project.findProject(it) }
.flatMap { project ->
val redirecting = project.artifactRedirection() ?: return@flatMap emptyList()
@@ -206,7 +226,6 @@ internal fun Project.originalToRedirectedDependency(
}
}
.associate { it }
- */
fun mainConfiguration() =
configurations.find { it.name == "${componentName}RuntimeClasspath" } ?:
@@ -226,7 +245,6 @@ internal fun Project.originalToRedirectedDependency(
* https://youtrack.jetbrains.com/issue/CMP-7764/Redirection-of-artifacts-breaks-poms-for-multiplatform-libraries-that-use-them
* After it is resolved, externalWithHeuristic shouldn't be needed.
*/
- /* FIXME: Restore after fixing for new buildSrc state
val externalWithHeuristic = mainConfiguration()
.resolvedConfiguration
.firstLevelModuleDependencies
@@ -235,6 +253,4 @@ internal fun Project.originalToRedirectedDependency(
.mapValuesNotNull { it.value.findRedirectedDependencyHeuristically()?.module?.id }
return projectDefined + externalWithHeuristic
- */
- return emptyMap()
}
diff --git a/buildSrc/private/src/main/kotlin/org/jetbrains/androidx/build/JetBrainsAndroidXRootImplPlugin.kt b/buildSrc/private/src/main/kotlin/org/jetbrains/androidx/build/JetBrainsAndroidXRootImplPlugin.kt
index 31ffb11e1e4fe..0c2d8b7f57dbe 100644
--- a/buildSrc/private/src/main/kotlin/org/jetbrains/androidx/build/JetBrainsAndroidXRootImplPlugin.kt
+++ b/buildSrc/private/src/main/kotlin/org/jetbrains/androidx/build/JetBrainsAndroidXRootImplPlugin.kt
@@ -18,27 +18,52 @@
package org.jetbrains.androidx.build
+import androidx.build.AndroidXExtension
+import androidx.build.Publish
+import androidx.build.RunApiTasks
+import androidx.build.SoftwareType.ConfigurableSoftwareType
import javax.inject.Inject
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.component.SoftwareComponentFactory
import org.gradle.api.tasks.testing.AbstractTestTask
+import org.gradle.kotlin.dsl.create
import org.gradle.kotlin.dsl.withType
class JetBrainsAndroidXRootImplPlugin @Inject constructor(
val componentFactory: SoftwareComponentFactory
) : Plugin {
override fun apply(project: Project) {
- project.allprojects {
- it.tasks.configureEach {
+ project.allprojects { subproject ->
+ subproject.tasks.configureEach {
if (it.name == "kotlinStoreYarnLock") it.enabled = false
if (it.name == "kotlinWasmStoreYarnLock") it.enabled = false
}
// Never cache test results
- it.tasks.withType().configureEach {
+ subproject.tasks.withType().configureEach {
it.outputs.upToDateWhen { false }
}
+
+ // Disable Androidx publication, as the fork publication is configured
+ // by JetBrainsPublication.
+ //
+ // It disables Androidx checks for publishing libraries that are not needed or
+ // conflict with the fork publication
+ subproject.afterEvaluate {
+ val androidxExtension = subproject.extensions.findByType(AndroidXExtension::class.java)
+ androidxExtension?.type = ConfigurableSoftwareType(
+ name = "JB Library",
+ publish = Publish.NONE,
+ compilationTarget = androidxExtension.type.compilationTarget,
+ checkApi = RunApiTasks.No("JB Library"),
+ )
+ }
+
+ // register stub task to:
+ // - be sure that it is not registered before by AndroidXPlugin
+ // - to not crash code "tasks.named("multiplatformSourceJar").configure"
+ subproject.tasks.register("multiplatformSourceJar")
}
}
}
diff --git a/buildSrc/private/src/main/kotlin/org/jetbrains/androidx/build/JetBrainsMavenCoordinatesChanger.kt b/buildSrc/private/src/main/kotlin/org/jetbrains/androidx/build/JetBrainsMavenCoordinatesChanger.kt
index 504bc731645b5..20c5234909c1f 100644
--- a/buildSrc/private/src/main/kotlin/org/jetbrains/androidx/build/JetBrainsMavenCoordinatesChanger.kt
+++ b/buildSrc/private/src/main/kotlin/org/jetbrains/androidx/build/JetBrainsMavenCoordinatesChanger.kt
@@ -20,11 +20,21 @@ import androidx.build.AndroidXExtension
import androidx.build.Version
import org.gradle.api.Project
-fun Project.changeMavenCoordinatesToJetBrains(androidxExtension: AndroidXExtension) {
+fun Project.changeMavenCoordinatesToJetBrains() {
// we are interested in changing coordinates only for what we publish
val component = JetBrainsPublication.projectPathToComponent[path] ?: return
val versions = JetBrainsVersionsService.versions(project)
+ val androidxExtension = project.extensions.getByType(AndroidXExtension::class.java)
- group = JetBrainsPublication.mavenGroupFor(path, androidxExtension.mavenGroup?.group) ?: group
- version = Version(versions.versionOf(component.library()))
+ val group = JetBrainsPublication.mavenGroupFor(path, androidxExtension.mavenGroup?.group) ?: group
+ val version = Version(versions.versionOf(component.library()))
+ this.group = group
+ this.version = version
+
+ // we need to set them again in case they are overridden in build.gradle
+ // for example, version can be overriden via `androidx { mavenVersion = ... }`
+ afterEvaluate {
+ this.group = group
+ this.version = version
+ }
}
diff --git a/lifecycle/lifecycle-runtime/src/wasmJsTest/kotlin/androidx/lifecycle/runLifecycleTest.wasmJs.kt b/buildSrc/private/src/main/kotlin/org/jetbrains/androidx/build/JetBrainsProperties.kt
similarity index 65%
rename from lifecycle/lifecycle-runtime/src/wasmJsTest/kotlin/androidx/lifecycle/runLifecycleTest.wasmJs.kt
rename to buildSrc/private/src/main/kotlin/org/jetbrains/androidx/build/JetBrainsProperties.kt
index ff49f9ac95faf..b1a9ab176a5be 100644
--- a/lifecycle/lifecycle-runtime/src/wasmJsTest/kotlin/androidx/lifecycle/runLifecycleTest.wasmJs.kt
+++ b/buildSrc/private/src/main/kotlin/org/jetbrains/androidx/build/JetBrainsProperties.kt
@@ -13,12 +13,16 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package androidx.lifecycle
-import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.MainScope
-import kotlinx.coroutines.promise
-import kotlinx.coroutines.test.TestResult
+package org.jetbrains.androidx.build
-actual fun runLifecycleTest(block: suspend CoroutineScope.() -> Unit): TestResult =
- MainScope().promise { block() }
+import org.gradle.api.Project
+
+/**
+ * True if the JetBrains build code is added:
+ * - publication
+ * - version/group changes
+ * - JB-only API validation
+ */
+fun isJetBrainsForkStructureEnabled(project: Project) =
+ project.findProperty("jetbrains.forkStructureEnabled") == "true"
diff --git a/buildSrc/private/src/main/kotlin/org/jetbrains/androidx/build/MavenUploadHelper.kt b/buildSrc/private/src/main/kotlin/org/jetbrains/androidx/build/MavenUploadHelper.kt
index d7e2bab248517..a6f40fdd5ee4b 100644
--- a/buildSrc/private/src/main/kotlin/org/jetbrains/androidx/build/MavenUploadHelper.kt
+++ b/buildSrc/private/src/main/kotlin/org/jetbrains/androidx/build/MavenUploadHelper.kt
@@ -16,7 +16,11 @@
package org.jetbrains.androidx.build
-import androidx.build.*
+import androidx.build.AndroidXExtension
+import androidx.build.AndroidXMultiplatformExtension
+import androidx.build.getRepositoryDirectory
+import androidx.build.hasAndroidMultiplatformPlugin
+import androidx.build.multiplatformExtension
import com.android.build.gradle.LibraryPlugin
import com.android.utils.childrenIterator
import com.android.utils.forEach
@@ -26,8 +30,8 @@ import com.google.gson.stream.JsonWriter
import java.io.File
import java.io.StringReader
import java.io.StringWriter
-import java.util.*
-import kotlin.collections.iterator
+import java.util.StringTokenizer
+import kotlin.collections.find
import org.apache.xerces.jaxp.SAXParserImpl.JAXPSAXParser
import org.dom4j.Document
import org.dom4j.DocumentException
@@ -38,12 +42,9 @@ import org.dom4j.io.XMLWriter
import org.gradle.api.Project
import org.gradle.api.XmlProvider
import org.gradle.api.artifacts.Configuration
-import org.gradle.api.artifacts.ModuleIdentifier
-import org.gradle.api.artifacts.ModuleVersionIdentifier
import org.gradle.api.component.ComponentWithVariants
import org.gradle.api.component.SoftwareComponent
import org.gradle.api.component.SoftwareComponentFactory
-import org.gradle.api.internal.artifacts.DefaultModuleIdentifier
import org.gradle.api.internal.component.SoftwareComponentInternal
import org.gradle.api.internal.component.UsageContext
import org.gradle.api.plugins.JavaPlugin
@@ -59,20 +60,21 @@ import org.gradle.kotlin.dsl.create
import org.gradle.kotlin.dsl.findByType
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
import org.jetbrains.kotlin.gradle.plugin.KotlinMultiplatformPluginWrapper
-import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinAndroidTarget
import org.xml.sax.InputSource
import org.xml.sax.XMLReader
+import org.gradle.api.artifacts.ModuleIdentifier
+import org.gradle.api.artifacts.ModuleVersionIdentifier
+import org.gradle.api.internal.artifacts.DefaultModuleIdentifier
+import org.w3c.dom.Node
fun Project.configureMavenArtifactUpload(
- extension: AndroidXExtension,
- kmpExtension: AndroidXMultiplatformExtension,
componentFactory: SoftwareComponentFactory
) {
apply(mapOf("plugin" to "maven-publish"))
var registered = false
fun registerOnFirstPublishableArtifact(component: SoftwareComponent) {
if (!registered) {
- configureComponentPublishing(extension, kmpExtension, component, componentFactory)
+ configureComponentPublishing(component, componentFactory)
registered = true
}
}
@@ -92,11 +94,13 @@ fun Project.configureMavenArtifactUpload(
* Configure publishing for a [SoftwareComponent].
*/
private fun Project.configureComponentPublishing(
- extension: AndroidXExtension,
- kmpExtension: AndroidXMultiplatformExtension,
component: SoftwareComponent,
componentFactory: SoftwareComponentFactory
) {
+ val extension = project.extensions.getByType(AndroidXExtension::class.java)
+ val kmpExtension =
+ project.extensions.getByType(AndroidXMultiplatformExtension::class.java)
+
val projectArchiveDir = File(
getRepositoryDirectory(),
"${group.toString().replace('.', '/')}/$name"
@@ -109,22 +113,17 @@ private fun Project.configureComponentPublishing(
val androidLibrariesSetProvider: Provider> = provider {
val androidxAndroidProjects = mutableSetOf()
// Check every project is the project map to see if they are an Android Library
- /*
- FIXME: No getProjectsMap() anymore
- val projectModules = project.getProjectsMap()
- for ((mavenCoordinates, projectPath) in projectModules) {
- project.findProject(projectPath)?.plugins?.let { plugins ->
- if (plugins.hasPlugin(LibraryPlugin::class.java)) {
- if (plugins.hasPlugin(KotlinMultiplatformPluginWrapper::class.java)) {
- // For KMP projects, android AAR is published under -android
- androidxAndroidProjects.add("$mavenCoordinates-android")
- } else {
- androidxAndroidProjects.add(mavenCoordinates)
- }
+ for (projectPath in JetBrainsPublication.projectPathToLibrary.keys) {
+ project.findProject(projectPath)?.let { project ->
+ val mavenCoordinates = "${project.group}:${project.name}"
+ if (project.plugins.hasPlugin(LibraryPlugin::class.java)) {
+ androidxAndroidProjects.add(mavenCoordinates)
+ }
+ if (project.hasAndroidMultiplatformPlugin()) {
+ androidxAndroidProjects.add("$mavenCoordinates-android")
}
}
}
- */
androidxAndroidProjects
}
@@ -176,51 +175,51 @@ private fun Project.configureComponentPublishing(
}
}
}
- project.tasks.withType(GenerateMavenPom::class.java).configureEach { task ->
- task.doLast {
+ // run code only after all projects because it depends on redirection info,
+ // which is constructed at a project evaluation step
+ gradle.projectsEvaluated {
+ project.tasks.withType(GenerateMavenPom::class.java).configureEach { task ->
fun hasTargetWithComponent(componentName: String) =
- multiplatformExtension?.targets?.find { target ->
+ task.project.multiplatformExtension?.targets?.find { target ->
target.components.any { it.name == componentName }
} != null
- // extract heuristically from:
- // "build/publications/kotlinMultiplatformDecorated/pom-default.xml"
- // "build/publications/desktop/pom-default.xml"
+ // extract heuristically from the task name:
+ // generatePomFileForKotlinMultiplatformDecoratedPublication
+ // generatePomFileForDesktopDecoratedPublication
// ...
// and take only if it is a target's component (we redirect only targets)
- val componentName = task.destination.parentFile.name.takeIf(::hasTargetWithComponent)
-
- val pomFile = task.destination
- val pom = pomFile.readText()
- val modifiedPom = modifyPomDependencies(pom, componentName)
- if (pom != modifiedPom) {
- pomFile.writeText(modifiedPom)
+ val componentName: String? = Regex("^generatePomFileFor(.*)Publication$")
+ .matchEntire(task.name)
+ ?.groupValues?.get(1)
+ ?.replaceFirstChar { it.lowercase() }
+ ?.takeIf(::hasTargetWithComponent)
+
+ val originalToRedirected: Map = if (componentName != null) {
+ originalToRedirectedDependency(componentName)
+ } else {
+ emptyMap()
}
- }
- }
- // Workaround for https://github.com/gradle/gradle/issues/11717
- /*
- FIXME: ProviderFactory.getBuildId(): Provider now
- project.tasks.withType(GenerateModuleMetadata::class.java).configureEach { task ->
- task.doLast {
- val metadata = task.outputFile.asFile.get()
- val text = metadata.readText()
- metadata.writeText(
- text.replace(
- "\"buildId\": .*".toRegex(),
- "\"buildId:\": \"${getBuildId()}\""
- )
- )
+ task.doLast {
+ val pomFile = task.destination
+ val pom = pomFile.readText()
+ val modifiedPom = modifyPomDependencies(pom, originalToRedirected)
+ if (pom != modifiedPom) {
+ pomFile.writeText(modifiedPom)
+ }
+ }
}
}
- */
}
/**
* Looks for a dependencies XML element within [pom], sorts its contents and modify it by redirecting coordinates
*/
-internal fun Project.modifyPomDependencies(pom: String, componentName: String?): String {
+internal fun modifyPomDependencies(
+ pom: String,
+ originalToRedirected: Map
+): String {
// Workaround for using the default namespace in dom4j.
val namespaceUris = mapOf("ns" to "http://maven.apache.org/POM/4.0.0")
val docFactory = DocumentFactory()
@@ -229,12 +228,6 @@ internal fun Project.modifyPomDependencies(pom: String, componentName: String?):
val xmlReader = JAXPSAXParser()
val document = parseText(docFactory, xmlReader, pom)
- val originalToRedirected = if (componentName != null) {
- originalToRedirectedDependency(componentName)
- } else {
- emptyMap()
- }
-
// For each element, sort the contained elements in-place.
document.rootElement
.selectNodes("ns:dependencies")
@@ -358,16 +351,6 @@ private val jetBrainsLibrariesWithAndroidTarget = setOf(
)
private fun Project.configureMultiplatformPublication(componentFactory: SoftwareComponentFactory) {
if (project.path !in jetBrainsLibrariesWithAndroidTarget) return
- val multiplatformExtension = extensions.findByType()!!
- multiplatformExtension.targets.all { target ->
- if (target is KotlinAndroidTarget) {
- target.publishLibraryVariants(
- Release.DEFAULT_PUBLISH_CONFIG,
- "debug"
- )
- }
- }
-
replaceBaseMultiplatformPublication(componentFactory)
}
@@ -496,7 +479,6 @@ private fun Project.addInformativeMetadata(extension: AndroidXExtension, pom: Ma
license.url.set("http://www.apache.org/licenses/LICENSE-2.0.txt")
license.distribution.set("repo")
}
- // TODO: Replaced getLicenses() to getExtraLicenses(). Needs to be re-checked
for (extraLicense in extension.getExtraLicenses()) {
licenses.license { license ->
license.name.set(provider { extraLicense.name!! })
@@ -583,7 +565,7 @@ fun insertDefaultMultiplatformDependencies(
}
}
-private fun org.w3c.dom.Node.appendElement(
+private fun Node.appendElement(
tagName: String,
textValue: String? = null
): org.w3c.dom.Element {
@@ -598,9 +580,9 @@ private fun org.w3c.dom.Node.appendElement(
return element
}
-private fun org.w3c.dom.Node.find(
- predicate: (org.w3c.dom.Node) -> Boolean
-): org.w3c.dom.Node? {
+private fun Node.find(
+ predicate: (Node) -> Boolean
+): Node? {
val iterator = childrenIterator()
while (iterator.hasNext()) {
val node = iterator.next()
diff --git a/buildSrc/public/src/main/kotlin/androidx/build/AndroidXConfig.kt b/buildSrc/public/src/main/kotlin/androidx/build/AndroidXConfig.kt
index 34d787daf45e4..b57d0f0b210be 100644
--- a/buildSrc/public/src/main/kotlin/androidx/build/AndroidXConfig.kt
+++ b/buildSrc/public/src/main/kotlin/androidx/build/AndroidXConfig.kt
@@ -98,10 +98,17 @@ val Project.defaultAndroidConfig: AndroidConfig
?: extensions.create("androidx.build.AndroidConfigImpl", AndroidConfigImpl::class.java)
fun Project.getGradlePrebuiltsPath(): File {
+ if (ProjectLayoutType.isPlayground(project)) {
+ throw IllegalStateException("external projects are not available in playground project layout")
+ }
return File(rootProject.projectDir, "../../tools/external/gradle").canonicalFile
}
fun Project.getExternalProjectPath(): File {
+ if (ProjectLayoutType.isPlayground(project)) {
+ // In JetBrains Fork required parts of the "external" folder are copied into this repo.
+ return File(rootProject.projectDir, "external").canonicalFile
+ }
return File(rootProject.projectDir, "../../external").canonicalFile
}
@@ -110,6 +117,10 @@ fun Project.getKeystore(): File {
}
fun Project.getPrebuiltsRoot(): File {
+ if (ProjectLayoutType.isPlayground(project)) {
+ // Do not ban calling this because it's used in a lot benchmark projects during the configuration stage.
+ return rootProject.projectDir
+ }
return File(project.extraPropertyOrNull("prebuiltsRoot").toString())
}
diff --git a/buildSrc/public/src/main/kotlin/androidx/build/ProjectLayoutType.kt b/buildSrc/public/src/main/kotlin/androidx/build/ProjectLayoutType.kt
index c18a197e47aa4..7026dc2ebd20d 100644
--- a/buildSrc/public/src/main/kotlin/androidx/build/ProjectLayoutType.kt
+++ b/buildSrc/public/src/main/kotlin/androidx/build/ProjectLayoutType.kt
@@ -21,7 +21,8 @@ import org.gradle.api.Project
enum class ProjectLayoutType {
ANDROIDX,
- PLAYGROUND;
+ PLAYGROUND,
+ JETBRAINS_FORK;
companion object {
/** Returns the project layout type for the project (PLAYGROUND or ANDROIDX) */
@@ -30,8 +31,9 @@ enum class ProjectLayoutType {
val value = project.extraPropertyOrNull(STUDIO_TYPE)
return when (value) {
"playground" -> PLAYGROUND
- null,
"androidx" -> ANDROIDX
+ null,
+ "jetbrains-fork" -> JETBRAINS_FORK
else -> error("Invalid project type $value")
}
}
@@ -39,7 +41,14 @@ enum class ProjectLayoutType {
/** @return `true` if running in a Playground (Github) setup, `false` otherwise. */
@JvmStatic
fun isPlayground(project: Project): Boolean {
- return ProjectLayoutType.from(project) == PLAYGROUND
+ return when(ProjectLayoutType.from(project)) {
+ ANDROIDX -> false
+ PLAYGROUND -> true
+
+ // This check is used to determine if prebuilt dependencies are available,
+ // so despite of applying playground gradle plugin, we need to return true here
+ JETBRAINS_FORK -> true
+ }
}
}
}
diff --git a/buildSrc/public/src/main/kotlin/androidx/build/SdkHelper.kt b/buildSrc/public/src/main/kotlin/androidx/build/SdkHelper.kt
index 6855204f03212..46c5433af9f95 100644
--- a/buildSrc/public/src/main/kotlin/androidx/build/SdkHelper.kt
+++ b/buildSrc/public/src/main/kotlin/androidx/build/SdkHelper.kt
@@ -30,10 +30,7 @@ fun Project.getSdkDependency(): FileTree =
/** Returns the root project's platform-specific SDK path as a file. */
fun Project.getSdkPath(): File {
- if (
- ProjectLayoutType.from(project) == ProjectLayoutType.PLAYGROUND ||
- System.getenv("COMPOSE_DESKTOP_GITHUB_BUILD") != null
- ) {
+ if (ProjectLayoutType.isPlayground(project)) {
// This is not full checkout, use local settings instead.
// https://developer.android.com/studio/command-line/variables
// check for local.properties first
@@ -102,6 +99,9 @@ fun Project.getSupportRootFolder(): File {
* This method assumes that the canonical root project directory is {@code frameworks/support}.
*/
fun Project.getCheckoutRoot(): File {
+ if (!ProjectLayoutType.isPlayground(project)) {
+ throw IllegalStateException("repo checkout root is not available in playground project layout")
+ }
return project.getSupportRootFolder().parentFile.parentFile
}
diff --git a/buildSrc/public/src/main/kotlin/androidx/build/Version.kt b/buildSrc/public/src/main/kotlin/androidx/build/Version.kt
index 327ddf5cfc516..1098a9b272f7b 100644
--- a/buildSrc/public/src/main/kotlin/androidx/build/Version.kt
+++ b/buildSrc/public/src/main/kotlin/androidx/build/Version.kt
@@ -40,7 +40,7 @@ data class Version(
buildMetadata = checkedMatcher(versionString).group(5)?.ifEmpty { null },
)
- fun isSnapshot(): Boolean = "-SNAPSHOT" == preRelease
+ fun isSnapshot(): Boolean = "SNAPSHOT" == preRelease
fun isPrereleasePrefix(prefix: String): Boolean =
preRelease?.lowercase(Locale.getDefault())?.startsWith(prefix) ?: false
diff --git a/buildSrc/public/src/main/kotlin/org/jetbrains/androidx/build/ComposePlatforms.kt b/buildSrc/public/src/main/kotlin/org/jetbrains/androidx/build/ComposePlatforms.kt
index 33d5979b4067a..8ef0f015ecb00 100644
--- a/buildSrc/public/src/main/kotlin/org/jetbrains/androidx/build/ComposePlatforms.kt
+++ b/buildSrc/public/src/main/kotlin/org/jetbrains/androidx/build/ComposePlatforms.kt
@@ -14,8 +14,7 @@ import org.gradle.api.Project
enum class ComposePlatforms(vararg val alternativeNames: String) {
KotlinMultiplatform("Common", "Metadata"),
Desktop("Jvm"),
- AndroidDebug("Android"),
- AndroidRelease("Android"),
+ Android("Android"),
Js("Web"),
WasmJs("Web"),
MacosX64("Macos"),
@@ -50,8 +49,7 @@ enum class ComposePlatforms(vararg val alternativeNames: String) {
companion object {
val JVM_BASED = EnumSet.of(
Desktop,
- AndroidDebug,
- AndroidRelease
+ Android
)
val IOS = EnumSet.of(
@@ -74,8 +72,7 @@ enum class ComposePlatforms(vararg val alternativeNames: String) {
)
val ANDROID = EnumSet.of(
- AndroidDebug,
- AndroidRelease
+ Android
)
val WINDOWS_NATIVE = EnumSet.of(
diff --git a/buildSrc/public/src/main/kotlin/org/jetbrains/androidx/build/ComposeProperties.kt b/buildSrc/public/src/main/kotlin/org/jetbrains/androidx/build/ComposeProperties.kt
index dcc34976447fb..3d43e0693212c 100644
--- a/buildSrc/public/src/main/kotlin/org/jetbrains/androidx/build/ComposeProperties.kt
+++ b/buildSrc/public/src/main/kotlin/org/jetbrains/androidx/build/ComposeProperties.kt
@@ -6,10 +6,9 @@ package org.jetbrains.androidx.build
import org.gradle.api.Project
-class ComposeProperties(private val myProject: Project) {
- val targetPlatforms: Set
- get() {
- val requestedPlatforms = myProject.findProperty("compose.platforms")?.toString() ?: "jvm, android"
- return ComposePlatforms.parse(requestedPlatforms)
- }
+data class ComposeProperties(val targetPlatforms: Set) {
+ constructor(project: Project) : this(
+ targetPlatforms =
+ ComposePlatforms.parse(project.findProperty("compose.platforms")?.toString() ?: "jvm, android")
+ )
}
diff --git a/buildSrc/public/src/main/kotlin/org/jetbrains/androidx/build/ComposePublishingTask.kt b/buildSrc/public/src/main/kotlin/org/jetbrains/androidx/build/ComposePublishingTask.kt
index cbf0d8dbec564..de464814bdda3 100644
--- a/buildSrc/public/src/main/kotlin/org/jetbrains/androidx/build/ComposePublishingTask.kt
+++ b/buildSrc/public/src/main/kotlin/org/jetbrains/androidx/build/ComposePublishingTask.kt
@@ -5,6 +5,7 @@
package org.jetbrains.androidx.build
import org.gradle.api.DefaultTask
+import org.gradle.api.Project
import org.gradle.api.tasks.CacheableTask
import org.gradle.api.tasks.Internal
@@ -13,9 +14,8 @@ open class ComposePublishingTask : DefaultTask() {
@get:Internal
lateinit var repository: String
- private val composeProperties by lazy {
- ComposeProperties(project)
- }
+ @get:Internal
+ lateinit var composeProperties: ComposeProperties
private val targetPlatforms: Set by lazy {
composeProperties.targetPlatforms
@@ -25,7 +25,7 @@ open class ComposePublishingTask : DefaultTask() {
dependsOn(task)
}
- fun publish(component: ComposeComponent) {
+ fun publish(rootProject: Project, component: ComposeComponent) {
if (component.customTasks.isNotEmpty()) {
publish(
component.path,
@@ -33,25 +33,32 @@ open class ComposePublishingTask : DefaultTask() {
publications = component.customTasks
)
} else {
- publishMultiplatform(component)
+ publishMultiplatform(rootProject, component)
}
}
- private fun publish(project: String, publications: Collection) {
+ private fun publish(
+ project: String,
+ publications: Collection
+ ) {
for (publication in publications) {
dependsOnComposeTask("$project:publish${publication}PublicationTo$repository")
}
dependsOnComposeTask("$project:jbVerifyDependencyVersions")
}
- private fun publish(project: String, publications: Collection, onlyWithPlatforms: Set) {
+ private fun publish(
+ project: String,
+ publications: Collection,
+ onlyWithPlatforms: Set
+ ) {
if (onlyWithPlatforms.any { it in targetPlatforms }) {
- publish(project, publications)
+ publish( project, publications)
}
}
- private fun publishMultiplatform(component: ComposeComponent) {
- val project = project.rootProject.findProject(component.path) ?:
+ private fun publishMultiplatform(rootProject: Project, component: ComposeComponent) {
+ val project = rootProject.findProject(component.path) ?:
throw IllegalArgumentException("Cannot find project ${component.path}")
val useArtifactRedirectionPublication =
diff --git a/buildSrc/public/src/main/kotlin/org/jetbrains/androidx/build/JetBrainsPublication.kt b/buildSrc/public/src/main/kotlin/org/jetbrains/androidx/build/JetBrainsPublication.kt
index 06b4315391c6e..0f93ecb9b8db3 100644
--- a/buildSrc/public/src/main/kotlin/org/jetbrains/androidx/build/JetBrainsPublication.kt
+++ b/buildSrc/public/src/main/kotlin/org/jetbrains/androidx/build/JetBrainsPublication.kt
@@ -20,6 +20,8 @@ import org.jetbrains.androidx.build.JetBrainsPublication.projectPathToLibrary
import java.io.Serializable
import org.gradle.api.Project
+// TODO(buildsrc) restore stubs publication, ideally both in integration and jb-main
+
/**
* Library groups and associated with them projects and targets that are published when
* building the JetBrains fork of AOSP.
diff --git a/buildSrc/repos.gradle b/buildSrc/repos.gradle
index 562916e9b0e7f..de389c420fa22 100644
--- a/buildSrc/repos.gradle
+++ b/buildSrc/repos.gradle
@@ -38,6 +38,7 @@ def addMavenRepositories(RepositoryHandler handler) {
}
}
}
+ /*
handler.maven {
url = "${repos.prebuiltsRoot}/androidx/internal"
metadataSources {
@@ -63,7 +64,8 @@ def addMavenRepositories(RepositoryHandler handler) {
}
}
}
- if (System.getenv("ALLOW_PUBLIC_REPOS") != null || System.getProperty("ALLOW_PUBLIC_REPOS") != null) {
+ */
+ if (true /* In JetBrains Fork */) {
handler.mavenCentral()
handler.google {
content {
diff --git a/buildSrc/settings.gradle b/buildSrc/settings.gradle
index c84b8d1a0c84e..cb16ddf5495ab 100644
--- a/buildSrc/settings.gradle
+++ b/buildSrc/settings.gradle
@@ -16,11 +16,16 @@
apply from: "settingsScripts/out-setup.groovy"
getGradle().beforeProject { project ->
- def checkoutRoot = new File("${buildscript.sourceFile.parent}/../../..")
+ def checkoutRoot = new File("${buildscript.sourceFile.parent}/..")
init.chooseBuildDirectory(checkoutRoot, rootProject.name, project)
+
+ /*
+ Could not set unknown property 'kotlin.project.persistent.dir' for project ':buildSrc' of type org.gradle.api.Project.
+
// https://youtrack.jetbrains.com/issue/KT-58223
def kotlinDir = new File(System.env.OUT_DIR ?: checkoutRoot, ".kotlinBuildSrc")
project.setProperty("kotlin.project.persistent.dir", kotlinDir.absolutePath)
+ */
}
include ":jetpad-integration"
diff --git a/collection/collection-compatibility-stub/build.gradle b/collection/collection-compatibility-stub/build.gradle
index 68e1909a387d1..55308190ae0a5 100644
--- a/collection/collection-compatibility-stub/build.gradle
+++ b/collection/collection-compatibility-stub/build.gradle
@@ -14,42 +14,29 @@
* limitations under the License.
*/
-import androidx.build.AndroidXComposePlugin
-import androidx.build.LibraryType
-import org.jetbrains.androidx.build.JetBrainsAndroidXPlugin
+import androidx.build.SoftwareType
+import androidx.build.PlatformIdentifier
plugins {
id("AndroidXPlugin")
-
- // TODO move all functionality to Compose-independent plugin (`collection` shouldn't depend on Compose concepts)
- id("AndroidXComposePlugin")
id("JetBrainsAndroidXPlugin")
}
-AndroidXComposePlugin.applyAndConfigureKotlinPlugin(project)
-JetBrainsAndroidXPlugin.applyAndConfigure(project)
-
-androidXComposeMultiplatform {
+androidXMultiplatform {
+ ios()
js()
- wasm()
- darwin()
- linux()
-}
-
-kotlin {
jvm()
- // Not all modules can have these targets, so declare them here instead of androidXComposeMultiplatform.
- // We can support the kotlin-native targets supported by kotlin coroutines:
- // https://github.com/Kotlin/kotlinx.coroutines/blob/master/gradle/compile-native-multiplatform.gradle
- // NOTE: Keep this list in sync with runtime-saveable's targets.
+ linux()
+ mac()
+ mingwX64()
+ tvos()
+ wasmJs()
watchosArm64()
watchosArm32()
watchosX64()
watchosSimulatorArm64()
- tvosArm64()
- tvosX64()
- tvosSimulatorArm64()
- mingwX64()
+
+ defaultPlatform(PlatformIdentifier.JVM)
sourceSets {
commonMain {
@@ -63,16 +50,7 @@ kotlin {
androidx {
name = "collections"
- type = LibraryType.PUBLISHED_LIBRARY
+ type = SoftwareType.PUBLISHED_LIBRARY
inceptionYear = "2018"
description = "Standalone efficient collections."
}
-
-java {
- sourceCompatibility = JavaVersion.VERSION_11
- targetCompatibility = JavaVersion.VERSION_11
-}
-
-androidxCompose {
- composeCompilerPluginEnabled = false
-}
diff --git a/compose/animation/animation-core/build.gradle b/compose/animation/animation-core/build.gradle
index 9287d3307b067..05c7a81cc6d67 100644
--- a/compose/animation/animation-core/build.gradle
+++ b/compose/animation/animation-core/build.gradle
@@ -53,12 +53,12 @@ androidXMultiplatform {
sourceSets {
commonMain {
dependencies {
+ implementation(project(":annotation:annotation"))
+ implementation(project(":collection:collection"))
implementation(project(":compose:runtime:runtime"))
implementation(project(":compose:ui:ui"))
implementation(project(":compose:ui:ui-unit"))
- implementation(project(":compose:ui:ui-graphics"))
implementation(project(":compose:ui:ui-util"))
- implementation("androidx.collection:collection:1.5.0")
api(libs.kotlinCoroutinesCore)
}
}
diff --git a/compose/animation/animation-graphics/build.gradle b/compose/animation/animation-graphics/build.gradle
index 8c5e5b8144594..0322e89b861e9 100644
--- a/compose/animation/animation-graphics/build.gradle
+++ b/compose/animation/animation-graphics/build.gradle
@@ -49,6 +49,8 @@ androidXMultiplatform {
commonMain {
dependencies {
+ implementation(project(":collection:collection"))
+
api(project(":compose:animation:animation"))
api(project(":compose:foundation:foundation-layout"))
api(project(":compose:runtime:runtime"))
@@ -56,7 +58,6 @@ androidXMultiplatform {
api(project(":compose:ui:ui-geometry"))
implementation(project(":compose:ui:ui-util"))
- implementation("androidx.collection:collection:1.5.0")
}
}
androidMain.dependencies {
diff --git a/compose/animation/animation/build.gradle b/compose/animation/animation/build.gradle
index adfafd2ff520f..849fcbc564a8b 100644
--- a/compose/animation/animation/build.gradle
+++ b/compose/animation/animation/build.gradle
@@ -49,17 +49,15 @@ androidXMultiplatform {
sourceSets {
commonMain {
dependencies {
+ implementation(project(":collection:collection"))
api(project(":compose:animation:animation-core"))
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"))
implementation(project(":compose:ui:ui-util"))
- implementation(project(":compose:ui:ui-graphics"))
-
- implementation("androidx.collection:collection:1.5.0")
}
}
diff --git a/compose/desktop/desktop/build.gradle b/compose/desktop/desktop/build.gradle
index 0c97d38088217..9a9eeb8695b59 100644
--- a/compose/desktop/desktop/build.gradle
+++ b/compose/desktop/desktop/build.gradle
@@ -28,7 +28,6 @@ androidXMultiplatform {
sourceSets {
commonMain.dependencies {
- implementation(libs.kotlinStdlib)
implementation(project(":compose:ui:ui-util"))
api(project(":compose:foundation:foundation"))
api(project(":compose:material:material"))
@@ -38,7 +37,6 @@ androidXMultiplatform {
}
jvmMain.dependencies {
- implementation(libs.kotlinStdlib)
implementation(libs.kotlinCoroutinesCore)
}
diff --git a/compose/foundation/foundation-layout/build.gradle b/compose/foundation/foundation-layout/build.gradle
index e4c9e3e586b85..769a6c830d168 100644
--- a/compose/foundation/foundation-layout/build.gradle
+++ b/compose/foundation/foundation-layout/build.gradle
@@ -53,11 +53,12 @@ androidXMultiplatform {
sourceSets {
commonMain {
dependencies {
+ implementation(project(":annotation:annotation"))
+ implementation(project(":collection:collection"))
+
api(project(":compose:ui:ui"))
implementation(project(":compose:runtime:runtime"))
implementation(project(":compose:ui:ui-util"))
- implementation("androidx.collection:collection:1.5.0")
- implementation(project(":compose:ui:ui-unit"))
}
}
diff --git a/compose/foundation/foundation/api/desktop/foundation.api b/compose/foundation/foundation/api/desktop/foundation.api
index 639a44dbc9617..5a3d4b733c4c3 100644
--- a/compose/foundation/foundation/api/desktop/foundation.api
+++ b/compose/foundation/foundation/api/desktop/foundation.api
@@ -1306,10 +1306,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
@@ -1329,10 +1325,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;
diff --git a/compose/foundation/foundation/build.gradle b/compose/foundation/foundation/build.gradle
index d8afccb8cc006..4837a8501150e 100644
--- a/compose/foundation/foundation/build.gradle
+++ b/compose/foundation/foundation/build.gradle
@@ -55,13 +55,14 @@ androidXMultiplatform {
sourceSets {
commonMain {
dependencies {
- api("androidx.collection:collection:1.5.0")
- api(project(":compose:animation:animation"))
- api(project(":compose:runtime:runtime"))
- api(project(":compose:ui:ui"))
+ implementation(project(":annotation:annotation"))
+ implementation(project(":collection:collection"))
+ api(project(':compose:animation:animation'))
+ api(project(':compose:runtime:runtime'))
+ api(project(':compose:ui:ui'))
implementation(project(":compose:ui:ui-text"))
implementation(project(":compose:ui:ui-util"))
- implementation(project(":compose:foundation:foundation-layout"))
+ implementation(project(':compose:foundation:foundation-layout'))
}
}
@@ -227,7 +228,6 @@ androidXMultiplatform {
}
jsMain {
- kotlin.srcDir("src/webCommonW3C/kotlin")
dependsOn(webMain)
}
@@ -236,7 +236,6 @@ androidXMultiplatform {
}
wasmJsMain {
- kotlin.srcDir("src/webCommonW3C/kotlin")
dependsOn(webMain)
dependencies {
implementation(libs.kotlinXw3c)
diff --git a/compose/material/material-navigation/build.gradle b/compose/material/material-navigation/build.gradle
index f31975470c4a6..1111aea8b79a8 100644
--- a/compose/material/material-navigation/build.gradle
+++ b/compose/material/material-navigation/build.gradle
@@ -42,9 +42,8 @@ androidXMultiplatform {
sourceSets {
commonMain {
dependencies {
- api(project(":navigation:navigation-compose"))
+ implementation("org.jetbrains.androidx.navigation:navigation-compose:2.9.1")
implementation(project(":compose:material:material"))
- implementation(libs.kotlinSerializationCore)
}
}
diff --git a/compose/material/material-ripple/build.gradle b/compose/material/material-ripple/build.gradle
index ce945d866a95f..e227314fb8250 100644
--- a/compose/material/material-ripple/build.gradle
+++ b/compose/material/material-ripple/build.gradle
@@ -48,10 +48,10 @@ androidXMultiplatform {
sourceSets {
commonMain {
dependencies {
+ implementation(project(":collection:collection"))
api(project(":compose:foundation:foundation"))
api(project(":compose:runtime:runtime"))
- implementation("androidx.collection:collection:1.5.0")
implementation(project(":compose:animation:animation"))
implementation(project(":compose:ui:ui-util"))
}
diff --git a/compose/material/material/build.gradle b/compose/material/material/build.gradle
index d903d2dcc4f1b..028e34ddcca4c 100644
--- a/compose/material/material/build.gradle
+++ b/compose/material/material/build.gradle
@@ -57,7 +57,7 @@ androidXMultiplatform {
api(project(":compose:ui:ui"))
api(project(":compose:ui:ui-text"))
- implementation(project(":compose:animation:animation-core"))
+ implementation(project(":annotation:annotation"))
implementation(project(":compose:animation:animation"))
implementation(project(":compose:foundation:foundation-layout"))
implementation(project(":compose:ui:ui-util"))
diff --git a/compose/material3/adaptive/adaptive-layout/build.gradle b/compose/material3/adaptive/adaptive-layout/build.gradle
index 4ec54267ae9c5..2b27e3fb64a1f 100644
--- a/compose/material3/adaptive/adaptive-layout/build.gradle
+++ b/compose/material3/adaptive/adaptive-layout/build.gradle
@@ -50,7 +50,6 @@ androidXMultiplatform {
sourceSets {
commonMain {
dependencies {
- implementation("androidx.collection:collection:1.5.0")
api(project(":compose:material3:adaptive:adaptive"))
api(project(":compose:animation:animation-core"))
api(project(":compose:ui:ui"))
@@ -58,7 +57,9 @@ androidXMultiplatform {
implementation(project(":compose:foundation:foundation"))
implementation(project(":compose:foundation:foundation-layout"))
implementation(project(":compose:ui:ui-geometry"))
- implementation(project(":window:window-core"))
+ implementation(project(":compose:ui:ui-util"))
+ implementation("org.jetbrains.androidx.window:window-core:1.5.0")
+ implementation(project(":collection:collection"))
}
}
diff --git a/compose/material3/adaptive/adaptive-navigation3/build.gradle b/compose/material3/adaptive/adaptive-navigation3/build.gradle
index 3d4a7a25ccec3..94a79c27f7bd0 100644
--- a/compose/material3/adaptive/adaptive-navigation3/build.gradle
+++ b/compose/material3/adaptive/adaptive-navigation3/build.gradle
@@ -51,8 +51,8 @@ androidXMultiplatform {
dependencies {
api(project(":compose:material3:adaptive:adaptive-navigation"))
api(project(":navigation3:navigation3-ui"))
+ implementation("org.jetbrains.androidx.navigationevent:navigationevent-compose:1.0.0-rc02")
implementation("androidx.collection:collection:1.5.0")
- implementation(project(":navigationevent:navigationevent-compose"))
}
}
diff --git a/compose/material3/adaptive/adaptive/build.gradle b/compose/material3/adaptive/adaptive/build.gradle
index 49e2e96d49af6..ccd594d8f1ce4 100644
--- a/compose/material3/adaptive/adaptive/build.gradle
+++ b/compose/material3/adaptive/adaptive/build.gradle
@@ -49,9 +49,9 @@ androidXMultiplatform {
sourceSets {
commonMain {
dependencies {
- implementation(project(":compose:foundation:foundation"))
- implementation(project(":compose:ui:ui"))
- api(project(":window:window-core"))
+ api(project(":compose:foundation:foundation"))
+ api(project(":compose:ui:ui-geometry"))
+ api("org.jetbrains.androidx.window:window-core:1.5.0")
}
}
diff --git a/compose/material3/material3-adaptive-navigation-suite/build.gradle b/compose/material3/material3-adaptive-navigation-suite/build.gradle
index b2711cb92ea36..c243d06159286 100644
--- a/compose/material3/material3-adaptive-navigation-suite/build.gradle
+++ b/compose/material3/material3-adaptive-navigation-suite/build.gradle
@@ -49,9 +49,11 @@ androidXMultiplatform {
sourceSets {
commonMain {
dependencies {
- api(project(":compose:material3:material3"))
- api(project(":compose:material3:adaptive:adaptive"))
- implementation(project(":window:window-core"))
+ implementation(project(":compose:material3:material3"))
+ implementation("org.jetbrains.compose.material3.adaptive:adaptive:1.2.0")
+ implementation(project(":compose:ui:ui"))
+ implementation("org.jetbrains.androidx.window:window-core:1.4.0")
+ api("androidx.annotation:annotation:1.9.1")
}
}
diff --git a/compose/material3/material3/build.gradle b/compose/material3/material3/build.gradle
index 459aabf5c8286..0ac51e86715d8 100644
--- a/compose/material3/material3/build.gradle
+++ b/compose/material3/material3/build.gradle
@@ -51,17 +51,20 @@ androidXMultiplatform {
sourceSets {
commonMain {
dependencies {
- // Keep pinned unless there is a need for tip of tree behavior
- implementation(project(":collection:collection"))
implementation(project(":compose:animation:animation-core"))
- implementation(project(":compose:ui:ui-util"))
- api(project(":compose:foundation:foundation-layout"))
+
api(project(":compose:foundation:foundation"))
api(project(":compose:material:material-ripple"))
api(project(":compose:runtime:runtime"))
- api(project(":compose:ui:ui"))
+ api(project(":compose:ui:ui-graphics"))
api(project(":compose:ui:ui-text"))
- api(project(":graphics:graphics-shapes"))
+ api("androidx.graphics:graphics-shapes:1.1.0")
+
+ implementation(project(":compose:ui:ui-util"))
+ implementation(project(":compose:ui:ui-backhandler"))
+ implementation(project(":compose:foundation:foundation-layout"))
+ implementation("androidx.annotation:annotation:1.9.1")
+ implementation("androidx.collection:collection:1.5.0")
}
}
@@ -70,7 +73,7 @@ androidXMultiplatform {
implementation(libs.kotlinTest)
implementation(project(":compose:ui:ui-test"))
implementation(project(":navigationevent:navigationevent-testing"))
- implementation(project(":navigationevent:navigationevent-compose"))
+ implementation("org.jetbrains.androidx.navigationevent:navigationevent-compose:1.0.0-rc02")
}
}
@@ -198,7 +201,6 @@ androidXMultiplatform {
}
jsMain {
- kotlin.srcDir("src/webCommonW3C/kotlin")
dependsOn(webMain)
}
@@ -207,11 +209,7 @@ androidXMultiplatform {
}
wasmJsMain {
- kotlin.srcDir("src/webCommonW3C/kotlin")
dependsOn(webMain)
- dependencies {
- implementation(libs.kotlinXw3c)
- }
}
wasmJsTest {
diff --git a/compose/mpp/demo/build.gradle.kts b/compose/mpp/demo/build.gradle.kts
index 93bf2cfc9139a..944ad335ab7e2 100644
--- a/compose/mpp/demo/build.gradle.kts
+++ b/compose/mpp/demo/build.gradle.kts
@@ -14,7 +14,10 @@
* limitations under the License.
*/
+@file:OptIn(ExperimentalWasmDsl::class)
+
import java.util.*
+import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget
import org.jetbrains.kotlin.gradle.plugin.mpp.NativeBuildType
import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig
@@ -25,6 +28,18 @@ plugins {
alias(libs.plugins.kotlinSerialization)
}
+val resourcesDir = layout.buildDirectory.get().asFile.resolve("resources")
+val skikoWasm = configurations.findByName("skikoWasm") ?: configurations.create("skikoWasm")
+
+dependencies {
+ skikoWasm(libs.skikoJsWasmRuntime)
+}
+
+val unzipTask = tasks.register("unzipWasm", Copy::class) {
+ destinationDir = file(resourcesDir)
+ from(skikoWasm.map { zipTree(it) })
+}
+
kotlin {
jvm("desktop")
js {
@@ -40,7 +55,7 @@ kotlin {
outputModuleName = "mpp-demo"
browser {
// https://youtrack.jetbrains.com/issue/KT-68614
- val rootDirPath = project.projectDir.path
+ val rootDirPath = project.rootDir.path
val projectDirPath = project.projectDir.path
commonWebpackConfig {
outputFileName = "demo.js"
@@ -129,7 +144,6 @@ kotlin {
sourceSets {
val commonMain by getting {
dependencies {
- implementation(libs.kotlinStdlib)
implementation(libs.kotlinCoroutinesCore)
implementation(libs.kotlinSerializationCore)
@@ -182,8 +196,7 @@ kotlin {
val webMain by creating {
dependsOn(skikoMain)
resources.setSrcDirs(resources.srcDirs)
- // TODO Restore unzipTask
- // resources.srcDirs(unzipTask.map { it.destinationDir })
+ resources.srcDirs(unzipTask.map { it.destinationDir })
dependencies {
implementation(libs.kotlinSerializationJson)
diff --git a/compose/runtime/runtime-compatibility-stub/build.gradle b/compose/runtime/runtime-compatibility-stub/build.gradle
index 6729746cbe16f..e5f49109c869b 100644
--- a/compose/runtime/runtime-compatibility-stub/build.gradle
+++ b/compose/runtime/runtime-compatibility-stub/build.gradle
@@ -14,43 +14,34 @@
* limitations under the License.
*/
-import androidx.build.AndroidXComposePlugin
-import androidx.build.LibraryType
-import org.jetbrains.androidx.build.JetBrainsAndroidXPlugin
+import androidx.build.SoftwareType
+import androidx.build.PlatformIdentifier
+import com.android.build.api.dsl.KotlinMultiplatformAndroidHostTestCompilation
plugins {
id("AndroidXPlugin")
id("AndroidXComposePlugin")
- id("com.android.library")
id("JetBrainsAndroidXPlugin")
}
-AndroidXComposePlugin.applyAndConfigureKotlinPlugin(project)
-JetBrainsAndroidXPlugin.applyAndConfigure(project)
-
-androidXComposeMultiplatform {
- android()
+androidXMultiplatform {
+ androidLibrary {
+ namespace = "androidx.compose.runtime"
+ }
desktop()
- js()
- wasm()
- darwin()
+ mingwX64()
linux()
-}
-
-kotlin {
- // Not all modules can have these targets, so declare them here instead of androidXComposeMultiplatform.
- // We can support the kotlin-native targets supported by kotlin coroutines:
- // https://github.com/Kotlin/kotlinx.coroutines/blob/master/buildSrc/src/main/kotlin/kotlin-multiplatform-conventions.gradle.kts
- // NOTE: Keep this list in sync with runtime-saveable's targets.
+ mac()
+ ios()
+ tvos()
watchosArm64()
watchosArm32()
watchosX64()
watchosSimulatorArm64()
- tvosArm64()
- tvosX64()
- tvosSimulatorArm64()
- mingwX64()
- linuxArm64()
+ js()
+ wasmJs()
+
+ defaultPlatform(PlatformIdentifier.ANDROID)
sourceSets {
commonMain {
@@ -62,17 +53,9 @@ kotlin {
}
}
-android {
- defaultConfig {
- consumerProguardFiles 'proguard-rules.pro'
- }
- namespace "androidx.compose.runtime"
-}
-
androidx {
name = "Compose Runtime"
- type = LibraryType.PUBLISHED_LIBRARY
+ type = SoftwareType.PUBLISHED_LIBRARY_ONLY_USED_BY_KOTLIN_CONSUMERS
inceptionYear = "2019"
description = "Tree composition support for code generated by the Compose compiler plugin and corresponding public API"
- legacyDisableKotlinStrictApiMode = true
}
diff --git a/compose/runtime/runtime-saveable-compatibility-stub/build.gradle b/compose/runtime/runtime-saveable-compatibility-stub/build.gradle
index 12872d57611c4..190c5e49c302c 100644
--- a/compose/runtime/runtime-saveable-compatibility-stub/build.gradle
+++ b/compose/runtime/runtime-saveable-compatibility-stub/build.gradle
@@ -14,42 +14,33 @@
* limitations under the License.
*/
-import androidx.build.AndroidXComposePlugin
-import androidx.build.LibraryType
-import org.jetbrains.androidx.build.JetBrainsAndroidXPlugin
+import androidx.build.PlatformIdentifier
+import androidx.build.SoftwareType
plugins {
id("AndroidXPlugin")
id("AndroidXComposePlugin")
- id("com.android.library")
id("JetBrainsAndroidXPlugin")
}
-AndroidXComposePlugin.applyAndConfigureKotlinPlugin(project)
-JetBrainsAndroidXPlugin.applyAndConfigure(project)
-
-androidXComposeMultiplatform {
- android()
+androidXMultiplatform {
+ androidLibrary {
+ namespace = "androidx.compose.runtime.saveable"
+ }
desktop()
- darwin()
- js()
- wasm()
+ mingwX64()
linux()
-}
-
-kotlin {
- // Not all modules can have these targets, so declare them here instead of androidXComposeMultiplatform.
- // We can support the kotlin-native targets supported by kotlin coroutines:
- // https://github.com/Kotlin/kotlinx.coroutines/blob/master/buildSrc/src/main/kotlin/kotlin-multiplatform-conventions.gradle.kts
- // NOTE: Keep this list in sync with runtime's targets.
+ mac()
+ ios()
+ tvos()
watchosArm64()
watchosArm32()
watchosX64()
watchosSimulatorArm64()
- tvosArm64()
- tvosX64()
- tvosSimulatorArm64()
- mingwX64()
+ js()
+ wasmJs()
+
+ defaultPlatform(PlatformIdentifier.ANDROID)
sourceSets {
commonMain {
@@ -69,12 +60,7 @@ kotlin {
androidx {
name = "Compose Saveable"
- type = LibraryType.PUBLISHED_LIBRARY
+ type = SoftwareType.PUBLISHED_LIBRARY_ONLY_USED_BY_KOTLIN_CONSUMERS
inceptionYear = "2020"
description = "Compose components that allow saving and restoring the local ui state"
- legacyDisableKotlinStrictApiMode = true
-}
-
-android {
- namespace "androidx.compose.runtime.saveable"
}
diff --git a/compose/ui/ui-backhandler/build.gradle b/compose/ui/ui-backhandler/build.gradle
index 740821faa5526..cfeaef3523138 100644
--- a/compose/ui/ui-backhandler/build.gradle
+++ b/compose/ui/ui-backhandler/build.gradle
@@ -21,6 +21,7 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
plugins {
id("AndroidXPlugin")
id("AndroidXComposePlugin")
+ id("JetBrainsAndroidXPlugin")
}
androidXMultiplatform {
@@ -38,9 +39,8 @@ androidXMultiplatform {
sourceSets {
commonMain {
dependencies {
- implementation(libs.kotlinStdlib)
implementation(libs.kotlinCoroutinesCore)
- implementation("androidx.annotation:annotation:1.9.1")
+ implementation(project(":annotation:annotation"))
implementation(project(":compose:runtime:runtime"))
implementation(project(":compose:ui:ui-util"))
}
@@ -71,7 +71,8 @@ androidXMultiplatform {
jbMain {
dependsOn(commonMain)
dependencies {
- implementation(project(":navigationevent:navigationevent"))
+ def navigationEventVersion = project.findProperty('artifactRedirection.version.androidx.navigationevent')
+ implementation("androidx.navigationevent:navigationevent:$navigationEventVersion")
}
}
diff --git a/compose/ui/ui-graphics/api/desktop/ui-graphics.api b/compose/ui/ui-graphics/api/desktop/ui-graphics.api
index a4f41e3984f37..3677f81369b90 100644
--- a/compose/ui/ui-graphics/api/desktop/ui-graphics.api
+++ b/compose/ui/ui-graphics/api/desktop/ui-graphics.api
@@ -55,6 +55,7 @@ public final class androidx/compose/ui/graphics/BlendMode$Companion {
}
public final class androidx/compose/ui/graphics/BlendModeColorFilter : androidx/compose/ui/graphics/ColorFilter {
+ public static final field $stable I
public synthetic fun (JILkotlin/jvm/internal/DefaultConstructorMarker;)V
public fun equals (Ljava/lang/Object;)Z
public final fun getBlendMode-0nO6VwU ()I
@@ -64,6 +65,7 @@ public final class androidx/compose/ui/graphics/BlendModeColorFilter : androidx/
}
public final class androidx/compose/ui/graphics/BlurEffect : androidx/compose/ui/graphics/RenderEffect {
+ public static final field $stable I
public static final field Companion Landroidx/compose/ui/graphics/BlurEffect$Companion;
public synthetic fun (Landroidx/compose/ui/graphics/RenderEffect;FFIILkotlin/jvm/internal/DefaultConstructorMarker;)V
public synthetic fun (Landroidx/compose/ui/graphics/RenderEffect;FFILkotlin/jvm/internal/DefaultConstructorMarker;)V
@@ -78,6 +80,7 @@ public final class androidx/compose/ui/graphics/BlurEffect$Companion {
}
public abstract class androidx/compose/ui/graphics/Brush {
+ public static final field $stable I
public static final field Companion Landroidx/compose/ui/graphics/Brush$Companion;
public abstract fun applyTo-Pq9zytI (JLandroidx/compose/ui/graphics/Paint;F)V
public fun getIntrinsicSize-NH-jbRc ()J
@@ -241,6 +244,7 @@ public final class androidx/compose/ui/graphics/Color$Companion {
}
public class androidx/compose/ui/graphics/ColorFilter {
+ public static final field $stable I
public static final field Companion Landroidx/compose/ui/graphics/ColorFilter$Companion;
}
@@ -296,6 +300,7 @@ public final class androidx/compose/ui/graphics/ColorMatrix {
}
public final class androidx/compose/ui/graphics/ColorMatrixColorFilter : androidx/compose/ui/graphics/ColorFilter {
+ public static final field $stable I
public synthetic fun ([FLkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun copyColorMatrix-gBh15pI ([F)[F
public static synthetic fun copyColorMatrix-gBh15pI$default (Landroidx/compose/ui/graphics/ColorMatrixColorFilter;[FILjava/lang/Object;)[F
@@ -433,6 +438,7 @@ public final class androidx/compose/ui/graphics/Interpolatable$Companion {
}
public class androidx/compose/ui/graphics/Interval {
+ public static final field $stable I
public fun (FFLjava/lang/Object;)V
public synthetic fun (FFLjava/lang/Object;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun contains (F)Z
@@ -447,6 +453,7 @@ public class androidx/compose/ui/graphics/Interval {
}
public final class androidx/compose/ui/graphics/IntervalTree {
+ public static final field $stable I
public fun ()V
public final fun addInterval (FFLjava/lang/Object;)V
public final fun clear ()V
@@ -464,6 +471,7 @@ public final class androidx/compose/ui/graphics/IntervalTree {
}
public final class androidx/compose/ui/graphics/LightingColorFilter : androidx/compose/ui/graphics/ColorFilter {
+ public static final field $stable I
public synthetic fun (JJLkotlin/jvm/internal/DefaultConstructorMarker;)V
public fun equals (Ljava/lang/Object;)Z
public final fun getAdd-0d7_KjU ()J
@@ -473,6 +481,7 @@ public final class androidx/compose/ui/graphics/LightingColorFilter : androidx/c
}
public final class androidx/compose/ui/graphics/LinearGradient : androidx/compose/ui/graphics/ShaderBrush, androidx/compose/ui/graphics/Interpolatable {
+ public static final field $stable I
public synthetic fun (Ljava/util/List;Ljava/util/List;JJIILkotlin/jvm/internal/DefaultConstructorMarker;)V
public fun createShader-uvyYCjk (J)Lorg/jetbrains/skia/Shader;
public fun equals (Ljava/lang/Object;)Z
@@ -535,6 +544,7 @@ public final class androidx/compose/ui/graphics/MatrixKt {
}
public final class androidx/compose/ui/graphics/OffsetEffect : androidx/compose/ui/graphics/RenderEffect {
+ public static final field $stable I
public synthetic fun (Landroidx/compose/ui/graphics/RenderEffect;JLkotlin/jvm/internal/DefaultConstructorMarker;)V
public fun equals (Ljava/lang/Object;)Z
public fun hashCode ()I
@@ -542,16 +552,19 @@ public final class androidx/compose/ui/graphics/OffsetEffect : androidx/compose/
}
public abstract class androidx/compose/ui/graphics/Outline {
+ public static final field $stable I
public abstract fun getBounds ()Landroidx/compose/ui/geometry/Rect;
}
public final class androidx/compose/ui/graphics/Outline$Generic : androidx/compose/ui/graphics/Outline {
+ public static final field $stable I
public fun (Landroidx/compose/ui/graphics/Path;)V
public fun getBounds ()Landroidx/compose/ui/geometry/Rect;
public final fun getPath ()Landroidx/compose/ui/graphics/Path;
}
public final class androidx/compose/ui/graphics/Outline$Rectangle : androidx/compose/ui/graphics/Outline {
+ public static final field $stable I
public fun (Landroidx/compose/ui/geometry/Rect;)V
public fun equals (Ljava/lang/Object;)Z
public fun getBounds ()Landroidx/compose/ui/geometry/Rect;
@@ -560,6 +573,7 @@ public final class androidx/compose/ui/graphics/Outline$Rectangle : androidx/com
}
public final class androidx/compose/ui/graphics/Outline$Rounded : androidx/compose/ui/graphics/Outline {
+ public static final field $stable I
public fun (Landroidx/compose/ui/geometry/RoundRect;)V
public fun equals (Ljava/lang/Object;)Z
public fun getBounds ()Landroidx/compose/ui/geometry/Rect;
@@ -747,6 +761,7 @@ public final class androidx/compose/ui/graphics/PathGeometryKt {
}
public final class androidx/compose/ui/graphics/PathHitTester {
+ public static final field $stable I
public fun ()V
public final fun contains-k-4lQ0M (J)Z
public final fun updatePath (Landroidx/compose/ui/graphics/Path;F)V
@@ -825,6 +840,7 @@ public final class androidx/compose/ui/graphics/PathOperationKt {
}
public final class androidx/compose/ui/graphics/PathSegment {
+ public static final field $stable I
public fun equals (Ljava/lang/Object;)Z
public final fun getPoints ()[F
public final fun getType ()Landroidx/compose/ui/graphics/PathSegment$Type;
@@ -858,6 +874,7 @@ public final class androidx/compose/ui/graphics/PathSvgKt {
}
public final class androidx/compose/ui/graphics/PixelMap {
+ public static final field $stable I
public fun ([IIIII)V
public final fun get-WaAFU9c (II)J
public final fun getBuffer ()[I
@@ -887,6 +904,7 @@ public final class androidx/compose/ui/graphics/PointMode$Companion {
}
public final class androidx/compose/ui/graphics/RadialGradient : androidx/compose/ui/graphics/ShaderBrush, androidx/compose/ui/graphics/Interpolatable {
+ public static final field $stable I
public synthetic fun (Ljava/util/List;Ljava/util/List;JFIILkotlin/jvm/internal/DefaultConstructorMarker;)V
public fun createShader-uvyYCjk (J)Lorg/jetbrains/skia/Shader;
public fun equals (Ljava/lang/Object;)Z
@@ -907,6 +925,7 @@ public final class androidx/compose/ui/graphics/Rects_skikoKt {
}
public abstract class androidx/compose/ui/graphics/RenderEffect {
+ public static final field $stable I
public final fun asSkiaImageFilter ()Lorg/jetbrains/skia/ImageFilter;
protected abstract fun createImageFilter ()Lorg/jetbrains/skia/ImageFilter;
public fun isSupported ()Z
@@ -923,6 +942,7 @@ public final class androidx/compose/ui/graphics/RenderEffect_desktopKt {
}
public abstract class androidx/compose/ui/graphics/ShaderBrush : androidx/compose/ui/graphics/Brush {
+ public static final field $stable I
public fun ()V
public final fun applyTo-Pq9zytI (JLandroidx/compose/ui/graphics/Paint;F)V
public abstract fun createShader-uvyYCjk (J)Lorg/jetbrains/skia/Shader;
@@ -943,6 +963,7 @@ public final class androidx/compose/ui/graphics/ShaderKt {
}
public final class androidx/compose/ui/graphics/Shadow {
+ public static final field $stable I
public static final field Companion Landroidx/compose/ui/graphics/Shadow$Companion;
public synthetic fun (JJFILkotlin/jvm/internal/DefaultConstructorMarker;)V
public synthetic fun (JJFLkotlin/jvm/internal/DefaultConstructorMarker;)V
@@ -1021,6 +1042,7 @@ public final class androidx/compose/ui/graphics/SkiaTileMode_skikoKt {
}
public final class androidx/compose/ui/graphics/SolidColor : androidx/compose/ui/graphics/Brush, androidx/compose/ui/graphics/Interpolatable {
+ public static final field $stable I
public synthetic fun (JLkotlin/jvm/internal/DefaultConstructorMarker;)V
public fun applyTo-Pq9zytI (JLandroidx/compose/ui/graphics/Paint;F)V
public fun equals (Ljava/lang/Object;)Z
@@ -1088,6 +1110,7 @@ public final class androidx/compose/ui/graphics/StrokeJoin$Companion {
}
public final class androidx/compose/ui/graphics/SweepGradient : androidx/compose/ui/graphics/ShaderBrush, androidx/compose/ui/graphics/Interpolatable {
+ public static final field $stable I
public synthetic fun (JLjava/util/List;Ljava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public fun createShader-uvyYCjk (J)Lorg/jetbrains/skia/Shader;
public fun equals (Ljava/lang/Object;)Z
@@ -1136,6 +1159,7 @@ public final class androidx/compose/ui/graphics/VertexMode$Companion {
}
public final class androidx/compose/ui/graphics/Vertices {
+ public static final field $stable I
public synthetic fun (ILjava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/List;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun getColors ()[I
public final fun getIndices ()[S
@@ -1145,6 +1169,7 @@ public final class androidx/compose/ui/graphics/Vertices {
}
public abstract class androidx/compose/ui/graphics/colorspace/Adaptation {
+ public static final field $stable I
public static final field Companion Landroidx/compose/ui/graphics/colorspace/Adaptation$Companion;
public synthetic fun ([FLkotlin/jvm/internal/DefaultConstructorMarker;)V
}
@@ -1177,6 +1202,7 @@ public final class androidx/compose/ui/graphics/colorspace/ColorModel$Companion
}
public abstract class androidx/compose/ui/graphics/colorspace/ColorSpace {
+ public static final field $stable I
public synthetic fun (Ljava/lang/String;JLkotlin/jvm/internal/DefaultConstructorMarker;)V
public fun equals (Ljava/lang/Object;)Z
public final fun fromXyz (FFF)[F
@@ -1203,6 +1229,7 @@ public final class androidx/compose/ui/graphics/colorspace/ColorSpaceKt {
}
public final class androidx/compose/ui/graphics/colorspace/ColorSpaces {
+ public static final field $stable I
public static final field INSTANCE Landroidx/compose/ui/graphics/colorspace/ColorSpaces;
public final fun getAces ()Landroidx/compose/ui/graphics/colorspace/Rgb;
public final fun getAcescg ()Landroidx/compose/ui/graphics/colorspace/Rgb;
@@ -1227,6 +1254,7 @@ public final class androidx/compose/ui/graphics/colorspace/ColorSpaces {
}
public class androidx/compose/ui/graphics/colorspace/Connector {
+ public static final field $stable I
public final fun getDestination ()Landroidx/compose/ui/graphics/colorspace/ColorSpace;
public final fun getRenderIntent-uksYyKA ()I
public final fun getSource ()Landroidx/compose/ui/graphics/colorspace/ColorSpace;
@@ -1235,6 +1263,7 @@ public class androidx/compose/ui/graphics/colorspace/Connector {
}
public final class androidx/compose/ui/graphics/colorspace/Illuminant {
+ public static final field $stable I
public static final field INSTANCE Landroidx/compose/ui/graphics/colorspace/Illuminant;
public final fun getA ()Landroidx/compose/ui/graphics/colorspace/WhitePoint;
public final fun getB ()Landroidx/compose/ui/graphics/colorspace/WhitePoint;
@@ -1268,6 +1297,7 @@ public final class androidx/compose/ui/graphics/colorspace/RenderIntent$Companio
}
public final class androidx/compose/ui/graphics/colorspace/Rgb : androidx/compose/ui/graphics/colorspace/ColorSpace {
+ public static final field $stable I
public fun (Ljava/lang/String;[FD)V
public fun (Ljava/lang/String;[FLandroidx/compose/ui/graphics/colorspace/TransferParameters;)V
public fun (Ljava/lang/String;[FLandroidx/compose/ui/graphics/colorspace/WhitePoint;D)V
@@ -1299,6 +1329,7 @@ public final class androidx/compose/ui/graphics/colorspace/Rgb : androidx/compos
}
public final class androidx/compose/ui/graphics/colorspace/TransferParameters {
+ public static final field $stable I
public fun (DDDDDDD)V
public synthetic fun (DDDDDDDILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun component1 ()D
@@ -1323,6 +1354,7 @@ public final class androidx/compose/ui/graphics/colorspace/TransferParameters {
}
public final class androidx/compose/ui/graphics/colorspace/WhitePoint {
+ public static final field $stable I
public fun (FF)V
public fun (FFF)V
public final fun component1 ()F
@@ -1337,6 +1369,7 @@ public final class androidx/compose/ui/graphics/colorspace/WhitePoint {
}
public final class androidx/compose/ui/graphics/drawscope/CanvasDrawScope : androidx/compose/ui/graphics/drawscope/DrawScope {
+ public static final field $stable I
public fun ()V
public final fun draw-yzxVdVo (Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/graphics/Canvas;JLkotlin/jvm/functions/Function1;)V
public fun drawArc-illE91I (Landroidx/compose/ui/graphics/Brush;FFZJJFLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;I)V
@@ -1366,6 +1399,7 @@ public final class androidx/compose/ui/graphics/drawscope/CanvasDrawScope : andr
}
public final class androidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams {
+ public static final field $stable I
public synthetic fun (Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/graphics/Canvas;JILkotlin/jvm/internal/DefaultConstructorMarker;)V
public synthetic fun (Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/graphics/Canvas;JLkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun component1 ()Landroidx/compose/ui/unit/Density;
@@ -1548,6 +1582,7 @@ public abstract interface annotation class androidx/compose/ui/graphics/drawscop
}
public abstract class androidx/compose/ui/graphics/drawscope/DrawStyle {
+ public static final field $stable I
}
public abstract interface class androidx/compose/ui/graphics/drawscope/DrawTransform {
@@ -1587,10 +1622,12 @@ public final class androidx/compose/ui/graphics/drawscope/DrawTransformKt {
}
public final class androidx/compose/ui/graphics/drawscope/Fill : androidx/compose/ui/graphics/drawscope/DrawStyle {
+ public static final field $stable I
public static final field INSTANCE Landroidx/compose/ui/graphics/drawscope/Fill;
}
public final class androidx/compose/ui/graphics/drawscope/Stroke : androidx/compose/ui/graphics/drawscope/DrawStyle {
+ public static final field $stable I
public static final field Companion Landroidx/compose/ui/graphics/drawscope/Stroke$Companion;
public static final field DefaultMiter F
public static final field HairlineWidth F
@@ -1631,6 +1668,7 @@ public final class androidx/compose/ui/graphics/layer/CompositingStrategy$Compan
}
public final class androidx/compose/ui/graphics/layer/GraphicsLayer {
+ public static final field $stable I
public final fun getAlpha ()F
public final fun getAmbientShadowColor-0d7_KjU ()J
public final fun getBlendMode-0nO6VwU ()I
@@ -1688,6 +1726,7 @@ public final class androidx/compose/ui/graphics/layer/GraphicsLayerKt {
}
public final class androidx/compose/ui/graphics/painter/BitmapPainter : androidx/compose/ui/graphics/painter/Painter {
+ public static final field $stable I
public synthetic fun (Landroidx/compose/ui/graphics/ImageBitmap;JJILkotlin/jvm/internal/DefaultConstructorMarker;)V
public synthetic fun (Landroidx/compose/ui/graphics/ImageBitmap;JJLkotlin/jvm/internal/DefaultConstructorMarker;)V
public fun equals (Ljava/lang/Object;)Z
@@ -1702,6 +1741,7 @@ public final class androidx/compose/ui/graphics/painter/BitmapPainterKt {
}
public final class androidx/compose/ui/graphics/painter/BrushPainter : androidx/compose/ui/graphics/painter/Painter {
+ public static final field $stable I
public fun (Landroidx/compose/ui/graphics/Brush;)V
public fun equals (Ljava/lang/Object;)Z
public final fun getBrush ()Landroidx/compose/ui/graphics/Brush;
@@ -1711,6 +1751,7 @@ public final class androidx/compose/ui/graphics/painter/BrushPainter : androidx/
}
public final class androidx/compose/ui/graphics/painter/ColorPainter : androidx/compose/ui/graphics/painter/Painter {
+ public static final field $stable I
public synthetic fun (JLkotlin/jvm/internal/DefaultConstructorMarker;)V
public fun equals (Ljava/lang/Object;)Z
public final fun getColor-0d7_KjU ()J
@@ -1720,6 +1761,7 @@ public final class androidx/compose/ui/graphics/painter/ColorPainter : androidx/
}
public abstract class androidx/compose/ui/graphics/painter/Painter {
+ public static final field $stable I
public fun ()V
protected fun applyAlpha (F)Z
protected fun applyColorFilter (Landroidx/compose/ui/graphics/ColorFilter;)Z
@@ -1731,16 +1773,19 @@ public abstract class androidx/compose/ui/graphics/painter/Painter {
}
public final class androidx/compose/ui/graphics/shadow/DropShadowPainter : androidx/compose/ui/graphics/painter/Painter {
+ public static final field $stable I
public fun (Landroidx/compose/ui/graphics/Shape;Landroidx/compose/ui/graphics/shadow/Shadow;)V
public fun getIntrinsicSize-NH-jbRc ()J
}
public final class androidx/compose/ui/graphics/shadow/InnerShadowPainter : androidx/compose/ui/graphics/painter/Painter {
+ public static final field $stable I
public fun (Landroidx/compose/ui/graphics/Shape;Landroidx/compose/ui/graphics/shadow/Shadow;)V
public fun getIntrinsicSize-NH-jbRc ()J
}
public final class androidx/compose/ui/graphics/shadow/Shadow {
+ public static final field $stable I
public synthetic fun (FJFJFIILkotlin/jvm/internal/DefaultConstructorMarker;)V
public synthetic fun (FJFJFILkotlin/jvm/internal/DefaultConstructorMarker;)V
public synthetic fun (FLandroidx/compose/ui/graphics/Brush;FJFIILkotlin/jvm/internal/DefaultConstructorMarker;)V
@@ -1768,6 +1813,7 @@ public final class androidx/compose/ui/graphics/shadow/ShadowKt {
}
public final class androidx/compose/ui/graphics/vector/PathBuilder {
+ public static final field $stable I
public fun ()V
public final fun arcTo (FFFZZFF)Landroidx/compose/ui/graphics/vector/PathBuilder;
public final fun arcToRelative (FFFZZFF)Landroidx/compose/ui/graphics/vector/PathBuilder;
@@ -1792,6 +1838,7 @@ public final class androidx/compose/ui/graphics/vector/PathBuilder {
}
public abstract class androidx/compose/ui/graphics/vector/PathNode {
+ public static final field $stable I
public synthetic fun (ZZILkotlin/jvm/internal/DefaultConstructorMarker;)V
public synthetic fun (ZZLkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun isCurve ()Z
@@ -1799,6 +1846,7 @@ public abstract class androidx/compose/ui/graphics/vector/PathNode {
}
public final class androidx/compose/ui/graphics/vector/PathNode$ArcTo : androidx/compose/ui/graphics/vector/PathNode {
+ public static final field $stable I
public fun (FFFZZFF)V
public final fun component1 ()F
public final fun component2 ()F
@@ -1822,10 +1870,12 @@ public final class androidx/compose/ui/graphics/vector/PathNode$ArcTo : androidx
}
public final class androidx/compose/ui/graphics/vector/PathNode$Close : androidx/compose/ui/graphics/vector/PathNode {
+ public static final field $stable I
public static final field INSTANCE Landroidx/compose/ui/graphics/vector/PathNode$Close;
}
public final class androidx/compose/ui/graphics/vector/PathNode$CurveTo : androidx/compose/ui/graphics/vector/PathNode {
+ public static final field $stable I
public fun (FFFFFF)V
public final fun component1 ()F
public final fun component2 ()F
@@ -1847,6 +1897,7 @@ public final class androidx/compose/ui/graphics/vector/PathNode$CurveTo : androi
}
public final class androidx/compose/ui/graphics/vector/PathNode$HorizontalTo : androidx/compose/ui/graphics/vector/PathNode {
+ public static final field $stable I
public fun (F)V
public final fun component1 ()F
public final fun copy (F)Landroidx/compose/ui/graphics/vector/PathNode$HorizontalTo;
@@ -1858,6 +1909,7 @@ public final class androidx/compose/ui/graphics/vector/PathNode$HorizontalTo : a
}
public final class androidx/compose/ui/graphics/vector/PathNode$LineTo : androidx/compose/ui/graphics/vector/PathNode {
+ public static final field $stable I
public fun (FF)V
public final fun component1 ()F
public final fun component2 ()F
@@ -1871,6 +1923,7 @@ public final class androidx/compose/ui/graphics/vector/PathNode$LineTo : android
}
public final class androidx/compose/ui/graphics/vector/PathNode$MoveTo : androidx/compose/ui/graphics/vector/PathNode {
+ public static final field $stable I
public fun (FF)V
public final fun component1 ()F
public final fun component2 ()F
@@ -1884,6 +1937,7 @@ public final class androidx/compose/ui/graphics/vector/PathNode$MoveTo : android
}
public final class androidx/compose/ui/graphics/vector/PathNode$QuadTo : androidx/compose/ui/graphics/vector/PathNode {
+ public static final field $stable I
public fun (FFFF)V
public final fun component1 ()F
public final fun component2 ()F
@@ -1901,6 +1955,7 @@ public final class androidx/compose/ui/graphics/vector/PathNode$QuadTo : android
}
public final class androidx/compose/ui/graphics/vector/PathNode$ReflectiveCurveTo : androidx/compose/ui/graphics/vector/PathNode {
+ public static final field $stable I
public fun (FFFF)V
public final fun component1 ()F
public final fun component2 ()F
@@ -1918,6 +1973,7 @@ public final class androidx/compose/ui/graphics/vector/PathNode$ReflectiveCurveT
}
public final class androidx/compose/ui/graphics/vector/PathNode$ReflectiveQuadTo : androidx/compose/ui/graphics/vector/PathNode {
+ public static final field $stable I
public fun (FF)V
public final fun component1 ()F
public final fun component2 ()F
@@ -1931,6 +1987,7 @@ public final class androidx/compose/ui/graphics/vector/PathNode$ReflectiveQuadTo
}
public final class androidx/compose/ui/graphics/vector/PathNode$RelativeArcTo : androidx/compose/ui/graphics/vector/PathNode {
+ public static final field $stable I
public fun (FFFZZFF)V
public final fun component1 ()F
public final fun component2 ()F
@@ -1954,6 +2011,7 @@ public final class androidx/compose/ui/graphics/vector/PathNode$RelativeArcTo :
}
public final class androidx/compose/ui/graphics/vector/PathNode$RelativeCurveTo : androidx/compose/ui/graphics/vector/PathNode {
+ public static final field $stable I
public fun (FFFFFF)V
public final fun component1 ()F
public final fun component2 ()F
@@ -1975,6 +2033,7 @@ public final class androidx/compose/ui/graphics/vector/PathNode$RelativeCurveTo
}
public final class androidx/compose/ui/graphics/vector/PathNode$RelativeHorizontalTo : androidx/compose/ui/graphics/vector/PathNode {
+ public static final field $stable I
public fun (F)V
public final fun component1 ()F
public final fun copy (F)Landroidx/compose/ui/graphics/vector/PathNode$RelativeHorizontalTo;
@@ -1986,6 +2045,7 @@ public final class androidx/compose/ui/graphics/vector/PathNode$RelativeHorizont
}
public final class androidx/compose/ui/graphics/vector/PathNode$RelativeLineTo : androidx/compose/ui/graphics/vector/PathNode {
+ public static final field $stable I
public fun (FF)V
public final fun component1 ()F
public final fun component2 ()F
@@ -1999,6 +2059,7 @@ public final class androidx/compose/ui/graphics/vector/PathNode$RelativeLineTo :
}
public final class androidx/compose/ui/graphics/vector/PathNode$RelativeMoveTo : androidx/compose/ui/graphics/vector/PathNode {
+ public static final field $stable I
public fun (FF)V
public final fun component1 ()F
public final fun component2 ()F
@@ -2012,6 +2073,7 @@ public final class androidx/compose/ui/graphics/vector/PathNode$RelativeMoveTo :
}
public final class androidx/compose/ui/graphics/vector/PathNode$RelativeQuadTo : androidx/compose/ui/graphics/vector/PathNode {
+ public static final field $stable I
public fun (FFFF)V
public final fun component1 ()F
public final fun component2 ()F
@@ -2029,6 +2091,7 @@ public final class androidx/compose/ui/graphics/vector/PathNode$RelativeQuadTo :
}
public final class androidx/compose/ui/graphics/vector/PathNode$RelativeReflectiveCurveTo : androidx/compose/ui/graphics/vector/PathNode {
+ public static final field $stable I
public fun (FFFF)V
public final fun component1 ()F
public final fun component2 ()F
@@ -2046,6 +2109,7 @@ public final class androidx/compose/ui/graphics/vector/PathNode$RelativeReflecti
}
public final class androidx/compose/ui/graphics/vector/PathNode$RelativeReflectiveQuadTo : androidx/compose/ui/graphics/vector/PathNode {
+ public static final field $stable I
public fun (FF)V
public final fun component1 ()F
public final fun component2 ()F
@@ -2059,6 +2123,7 @@ public final class androidx/compose/ui/graphics/vector/PathNode$RelativeReflecti
}
public final class androidx/compose/ui/graphics/vector/PathNode$RelativeVerticalTo : androidx/compose/ui/graphics/vector/PathNode {
+ public static final field $stable I
public fun (F)V
public final fun component1 ()F
public final fun copy (F)Landroidx/compose/ui/graphics/vector/PathNode$RelativeVerticalTo;
@@ -2070,6 +2135,7 @@ public final class androidx/compose/ui/graphics/vector/PathNode$RelativeVertical
}
public final class androidx/compose/ui/graphics/vector/PathNode$VerticalTo : androidx/compose/ui/graphics/vector/PathNode {
+ public static final field $stable I
public fun (F)V
public final fun component1 ()F
public final fun copy (F)Landroidx/compose/ui/graphics/vector/PathNode$VerticalTo;
@@ -2081,6 +2147,7 @@ public final class androidx/compose/ui/graphics/vector/PathNode$VerticalTo : and
}
public final class androidx/compose/ui/graphics/vector/PathParser {
+ public static final field $stable I
public fun ()V
public final fun addPathNodes (Ljava/util/List;)Landroidx/compose/ui/graphics/vector/PathParser;
public final fun clear ()V
diff --git a/compose/ui/ui-graphics/api/ui-graphics.klib.api b/compose/ui/ui-graphics/api/ui-graphics.klib.api
index 9b571bb709a2a..112433ac628e1 100644
--- a/compose/ui/ui-graphics/api/ui-graphics.klib.api
+++ b/compose/ui/ui-graphics/api/ui-graphics.klib.api
@@ -1941,12 +1941,79 @@ final const val androidx.compose.ui.graphics/DefaultAlpha // androidx.compose.ui
final const val androidx.compose.ui.graphics/UnspecifiedColor // androidx.compose.ui.graphics/UnspecifiedColor|{}UnspecifiedColor[0]
final fun (): kotlin/ULong // androidx.compose.ui.graphics/UnspecifiedColor.|(){}[0]
+final val androidx.compose.ui.graphics.colorspace/androidx_compose_ui_graphics_colorspace_Adaptation$stableprop // androidx.compose.ui.graphics.colorspace/androidx_compose_ui_graphics_colorspace_Adaptation$stableprop|#static{}androidx_compose_ui_graphics_colorspace_Adaptation$stableprop[0]
+final val androidx.compose.ui.graphics.colorspace/androidx_compose_ui_graphics_colorspace_ColorSpace$stableprop // androidx.compose.ui.graphics.colorspace/androidx_compose_ui_graphics_colorspace_ColorSpace$stableprop|#static{}androidx_compose_ui_graphics_colorspace_ColorSpace$stableprop[0]
+final val androidx.compose.ui.graphics.colorspace/androidx_compose_ui_graphics_colorspace_ColorSpaces$stableprop // androidx.compose.ui.graphics.colorspace/androidx_compose_ui_graphics_colorspace_ColorSpaces$stableprop|#static{}androidx_compose_ui_graphics_colorspace_ColorSpaces$stableprop[0]
+final val androidx.compose.ui.graphics.colorspace/androidx_compose_ui_graphics_colorspace_Connector$stableprop // androidx.compose.ui.graphics.colorspace/androidx_compose_ui_graphics_colorspace_Connector$stableprop|#static{}androidx_compose_ui_graphics_colorspace_Connector$stableprop[0]
+final val androidx.compose.ui.graphics.colorspace/androidx_compose_ui_graphics_colorspace_Illuminant$stableprop // androidx.compose.ui.graphics.colorspace/androidx_compose_ui_graphics_colorspace_Illuminant$stableprop|#static{}androidx_compose_ui_graphics_colorspace_Illuminant$stableprop[0]
+final val androidx.compose.ui.graphics.colorspace/androidx_compose_ui_graphics_colorspace_Rgb$stableprop // androidx.compose.ui.graphics.colorspace/androidx_compose_ui_graphics_colorspace_Rgb$stableprop|#static{}androidx_compose_ui_graphics_colorspace_Rgb$stableprop[0]
+final val androidx.compose.ui.graphics.colorspace/androidx_compose_ui_graphics_colorspace_TransferParameters$stableprop // androidx.compose.ui.graphics.colorspace/androidx_compose_ui_graphics_colorspace_TransferParameters$stableprop|#static{}androidx_compose_ui_graphics_colorspace_TransferParameters$stableprop[0]
+final val androidx.compose.ui.graphics.colorspace/androidx_compose_ui_graphics_colorspace_WhitePoint$stableprop // androidx.compose.ui.graphics.colorspace/androidx_compose_ui_graphics_colorspace_WhitePoint$stableprop|#static{}androidx_compose_ui_graphics_colorspace_WhitePoint$stableprop[0]
+final val androidx.compose.ui.graphics.drawscope/androidx_compose_ui_graphics_drawscope_CanvasDrawScope$stableprop // androidx.compose.ui.graphics.drawscope/androidx_compose_ui_graphics_drawscope_CanvasDrawScope$stableprop|#static{}androidx_compose_ui_graphics_drawscope_CanvasDrawScope$stableprop[0]
+final val androidx.compose.ui.graphics.drawscope/androidx_compose_ui_graphics_drawscope_DrawStyle$stableprop // androidx.compose.ui.graphics.drawscope/androidx_compose_ui_graphics_drawscope_DrawStyle$stableprop|#static{}androidx_compose_ui_graphics_drawscope_DrawStyle$stableprop[0]
+final val androidx.compose.ui.graphics.drawscope/androidx_compose_ui_graphics_drawscope_Fill$stableprop // androidx.compose.ui.graphics.drawscope/androidx_compose_ui_graphics_drawscope_Fill$stableprop|#static{}androidx_compose_ui_graphics_drawscope_Fill$stableprop[0]
+final val androidx.compose.ui.graphics.drawscope/androidx_compose_ui_graphics_drawscope_Stroke$stableprop // androidx.compose.ui.graphics.drawscope/androidx_compose_ui_graphics_drawscope_Stroke$stableprop|#static{}androidx_compose_ui_graphics_drawscope_Stroke$stableprop[0]
+final val androidx.compose.ui.graphics.layer/androidx_compose_ui_graphics_layer_GraphicsLayer$stableprop // androidx.compose.ui.graphics.layer/androidx_compose_ui_graphics_layer_GraphicsLayer$stableprop|#static{}androidx_compose_ui_graphics_layer_GraphicsLayer$stableprop[0]
+final val androidx.compose.ui.graphics.painter/androidx_compose_ui_graphics_painter_BitmapPainter$stableprop // androidx.compose.ui.graphics.painter/androidx_compose_ui_graphics_painter_BitmapPainter$stableprop|#static{}androidx_compose_ui_graphics_painter_BitmapPainter$stableprop[0]
+final val androidx.compose.ui.graphics.painter/androidx_compose_ui_graphics_painter_BrushPainter$stableprop // androidx.compose.ui.graphics.painter/androidx_compose_ui_graphics_painter_BrushPainter$stableprop|#static{}androidx_compose_ui_graphics_painter_BrushPainter$stableprop[0]
+final val androidx.compose.ui.graphics.painter/androidx_compose_ui_graphics_painter_ColorPainter$stableprop // androidx.compose.ui.graphics.painter/androidx_compose_ui_graphics_painter_ColorPainter$stableprop|#static{}androidx_compose_ui_graphics_painter_ColorPainter$stableprop[0]
+final val androidx.compose.ui.graphics.painter/androidx_compose_ui_graphics_painter_Painter$stableprop // androidx.compose.ui.graphics.painter/androidx_compose_ui_graphics_painter_Painter$stableprop|#static{}androidx_compose_ui_graphics_painter_Painter$stableprop[0]
+final val androidx.compose.ui.graphics.shadow/androidx_compose_ui_graphics_shadow_DropShadowPainter$stableprop // androidx.compose.ui.graphics.shadow/androidx_compose_ui_graphics_shadow_DropShadowPainter$stableprop|#static{}androidx_compose_ui_graphics_shadow_DropShadowPainter$stableprop[0]
+final val androidx.compose.ui.graphics.shadow/androidx_compose_ui_graphics_shadow_InnerShadowPainter$stableprop // androidx.compose.ui.graphics.shadow/androidx_compose_ui_graphics_shadow_InnerShadowPainter$stableprop|#static{}androidx_compose_ui_graphics_shadow_InnerShadowPainter$stableprop[0]
+final val androidx.compose.ui.graphics.shadow/androidx_compose_ui_graphics_shadow_Shadow$stableprop // androidx.compose.ui.graphics.shadow/androidx_compose_ui_graphics_shadow_Shadow$stableprop|#static{}androidx_compose_ui_graphics_shadow_Shadow$stableprop[0]
+final val androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathBuilder$stableprop // androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathBuilder$stableprop|#static{}androidx_compose_ui_graphics_vector_PathBuilder$stableprop[0]
+final val androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode$stableprop // androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode$stableprop|#static{}androidx_compose_ui_graphics_vector_PathNode$stableprop[0]
+final val androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_ArcTo$stableprop // androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_ArcTo$stableprop|#static{}androidx_compose_ui_graphics_vector_PathNode_ArcTo$stableprop[0]
+final val androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_Close$stableprop // androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_Close$stableprop|#static{}androidx_compose_ui_graphics_vector_PathNode_Close$stableprop[0]
+final val androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_CurveTo$stableprop // androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_CurveTo$stableprop|#static{}androidx_compose_ui_graphics_vector_PathNode_CurveTo$stableprop[0]
+final val androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_HorizontalTo$stableprop // androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_HorizontalTo$stableprop|#static{}androidx_compose_ui_graphics_vector_PathNode_HorizontalTo$stableprop[0]
+final val androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_LineTo$stableprop // androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_LineTo$stableprop|#static{}androidx_compose_ui_graphics_vector_PathNode_LineTo$stableprop[0]
+final val androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_MoveTo$stableprop // androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_MoveTo$stableprop|#static{}androidx_compose_ui_graphics_vector_PathNode_MoveTo$stableprop[0]
+final val androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_QuadTo$stableprop // androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_QuadTo$stableprop|#static{}androidx_compose_ui_graphics_vector_PathNode_QuadTo$stableprop[0]
+final val androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_ReflectiveCurveTo$stableprop // androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_ReflectiveCurveTo$stableprop|#static{}androidx_compose_ui_graphics_vector_PathNode_ReflectiveCurveTo$stableprop[0]
+final val androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_ReflectiveQuadTo$stableprop // androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_ReflectiveQuadTo$stableprop|#static{}androidx_compose_ui_graphics_vector_PathNode_ReflectiveQuadTo$stableprop[0]
+final val androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_RelativeArcTo$stableprop // androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_RelativeArcTo$stableprop|#static{}androidx_compose_ui_graphics_vector_PathNode_RelativeArcTo$stableprop[0]
+final val androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_RelativeCurveTo$stableprop // androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_RelativeCurveTo$stableprop|#static{}androidx_compose_ui_graphics_vector_PathNode_RelativeCurveTo$stableprop[0]
+final val androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_RelativeHorizontalTo$stableprop // androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_RelativeHorizontalTo$stableprop|#static{}androidx_compose_ui_graphics_vector_PathNode_RelativeHorizontalTo$stableprop[0]
+final val androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_RelativeLineTo$stableprop // androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_RelativeLineTo$stableprop|#static{}androidx_compose_ui_graphics_vector_PathNode_RelativeLineTo$stableprop[0]
+final val androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_RelativeMoveTo$stableprop // androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_RelativeMoveTo$stableprop|#static{}androidx_compose_ui_graphics_vector_PathNode_RelativeMoveTo$stableprop[0]
+final val androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_RelativeQuadTo$stableprop // androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_RelativeQuadTo$stableprop|#static{}androidx_compose_ui_graphics_vector_PathNode_RelativeQuadTo$stableprop[0]
+final val androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_RelativeReflectiveCurveTo$stableprop // androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_RelativeReflectiveCurveTo$stableprop|#static{}androidx_compose_ui_graphics_vector_PathNode_RelativeReflectiveCurveTo$stableprop[0]
+final val androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_RelativeReflectiveQuadTo$stableprop // androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_RelativeReflectiveQuadTo$stableprop|#static{}androidx_compose_ui_graphics_vector_PathNode_RelativeReflectiveQuadTo$stableprop[0]
+final val androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_RelativeVerticalTo$stableprop // androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_RelativeVerticalTo$stableprop|#static{}androidx_compose_ui_graphics_vector_PathNode_RelativeVerticalTo$stableprop[0]
+final val androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_VerticalTo$stableprop // androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_VerticalTo$stableprop|#static{}androidx_compose_ui_graphics_vector_PathNode_VerticalTo$stableprop[0]
+final val androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathParser$stableprop // androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathParser$stableprop|#static{}androidx_compose_ui_graphics_vector_PathParser$stableprop[0]
final val androidx.compose.ui.graphics/CloseSegment // androidx.compose.ui.graphics/CloseSegment|{}CloseSegment[0]
final fun (): androidx.compose.ui.graphics/PathSegment // androidx.compose.ui.graphics/CloseSegment.|(){}[0]
final val androidx.compose.ui.graphics/DoneSegment // androidx.compose.ui.graphics/DoneSegment|{}DoneSegment[0]
final fun (): androidx.compose.ui.graphics/PathSegment // androidx.compose.ui.graphics/DoneSegment.|(){}[0]
final val androidx.compose.ui.graphics/RectangleShape // androidx.compose.ui.graphics/RectangleShape|{}RectangleShape[0]
final fun (): androidx.compose.ui.graphics/Shape // androidx.compose.ui.graphics/RectangleShape.|(){}[0]
+final val androidx.compose.ui.graphics/androidx_compose_ui_graphics_BlendModeColorFilter$stableprop // androidx.compose.ui.graphics/androidx_compose_ui_graphics_BlendModeColorFilter$stableprop|#static{}androidx_compose_ui_graphics_BlendModeColorFilter$stableprop[0]
+final val androidx.compose.ui.graphics/androidx_compose_ui_graphics_BlurEffect$stableprop // androidx.compose.ui.graphics/androidx_compose_ui_graphics_BlurEffect$stableprop|#static{}androidx_compose_ui_graphics_BlurEffect$stableprop[0]
+final val androidx.compose.ui.graphics/androidx_compose_ui_graphics_Brush$stableprop // androidx.compose.ui.graphics/androidx_compose_ui_graphics_Brush$stableprop|#static{}androidx_compose_ui_graphics_Brush$stableprop[0]
+final val androidx.compose.ui.graphics/androidx_compose_ui_graphics_ColorFilter$stableprop // androidx.compose.ui.graphics/androidx_compose_ui_graphics_ColorFilter$stableprop|#static{}androidx_compose_ui_graphics_ColorFilter$stableprop[0]
+final val androidx.compose.ui.graphics/androidx_compose_ui_graphics_ColorMatrixColorFilter$stableprop // androidx.compose.ui.graphics/androidx_compose_ui_graphics_ColorMatrixColorFilter$stableprop|#static{}androidx_compose_ui_graphics_ColorMatrixColorFilter$stableprop[0]
+final val androidx.compose.ui.graphics/androidx_compose_ui_graphics_Interval$stableprop // androidx.compose.ui.graphics/androidx_compose_ui_graphics_Interval$stableprop|#static{}androidx_compose_ui_graphics_Interval$stableprop[0]
+final val androidx.compose.ui.graphics/androidx_compose_ui_graphics_IntervalTree$stableprop // androidx.compose.ui.graphics/androidx_compose_ui_graphics_IntervalTree$stableprop|#static{}androidx_compose_ui_graphics_IntervalTree$stableprop[0]
+final val androidx.compose.ui.graphics/androidx_compose_ui_graphics_LightingColorFilter$stableprop // androidx.compose.ui.graphics/androidx_compose_ui_graphics_LightingColorFilter$stableprop|#static{}androidx_compose_ui_graphics_LightingColorFilter$stableprop[0]
+final val androidx.compose.ui.graphics/androidx_compose_ui_graphics_LinearGradient$stableprop // androidx.compose.ui.graphics/androidx_compose_ui_graphics_LinearGradient$stableprop|#static{}androidx_compose_ui_graphics_LinearGradient$stableprop[0]
+final val androidx.compose.ui.graphics/androidx_compose_ui_graphics_OffsetEffect$stableprop // androidx.compose.ui.graphics/androidx_compose_ui_graphics_OffsetEffect$stableprop|#static{}androidx_compose_ui_graphics_OffsetEffect$stableprop[0]
+final val androidx.compose.ui.graphics/androidx_compose_ui_graphics_Outline$stableprop // androidx.compose.ui.graphics/androidx_compose_ui_graphics_Outline$stableprop|#static{}androidx_compose_ui_graphics_Outline$stableprop[0]
+final val androidx.compose.ui.graphics/androidx_compose_ui_graphics_Outline_Generic$stableprop // androidx.compose.ui.graphics/androidx_compose_ui_graphics_Outline_Generic$stableprop|#static{}androidx_compose_ui_graphics_Outline_Generic$stableprop[0]
+final val androidx.compose.ui.graphics/androidx_compose_ui_graphics_Outline_Rectangle$stableprop // androidx.compose.ui.graphics/androidx_compose_ui_graphics_Outline_Rectangle$stableprop|#static{}androidx_compose_ui_graphics_Outline_Rectangle$stableprop[0]
+final val androidx.compose.ui.graphics/androidx_compose_ui_graphics_Outline_Rounded$stableprop // androidx.compose.ui.graphics/androidx_compose_ui_graphics_Outline_Rounded$stableprop|#static{}androidx_compose_ui_graphics_Outline_Rounded$stableprop[0]
+final val androidx.compose.ui.graphics/androidx_compose_ui_graphics_PathHitTester$stableprop // androidx.compose.ui.graphics/androidx_compose_ui_graphics_PathHitTester$stableprop|#static{}androidx_compose_ui_graphics_PathHitTester$stableprop[0]
+final val androidx.compose.ui.graphics/androidx_compose_ui_graphics_PathSegment$stableprop // androidx.compose.ui.graphics/androidx_compose_ui_graphics_PathSegment$stableprop|#static{}androidx_compose_ui_graphics_PathSegment$stableprop[0]
+final val androidx.compose.ui.graphics/androidx_compose_ui_graphics_PixelMap$stableprop // androidx.compose.ui.graphics/androidx_compose_ui_graphics_PixelMap$stableprop|#static{}androidx_compose_ui_graphics_PixelMap$stableprop[0]
+final val androidx.compose.ui.graphics/androidx_compose_ui_graphics_RadialGradient$stableprop // androidx.compose.ui.graphics/androidx_compose_ui_graphics_RadialGradient$stableprop|#static{}androidx_compose_ui_graphics_RadialGradient$stableprop[0]
+final val androidx.compose.ui.graphics/androidx_compose_ui_graphics_RenderEffect$stableprop // androidx.compose.ui.graphics/androidx_compose_ui_graphics_RenderEffect$stableprop|#static{}androidx_compose_ui_graphics_RenderEffect$stableprop[0]
+final val androidx.compose.ui.graphics/androidx_compose_ui_graphics_ShaderBrush$stableprop // androidx.compose.ui.graphics/androidx_compose_ui_graphics_ShaderBrush$stableprop|#static{}androidx_compose_ui_graphics_ShaderBrush$stableprop[0]
+final val androidx.compose.ui.graphics/androidx_compose_ui_graphics_Shadow$stableprop // androidx.compose.ui.graphics/androidx_compose_ui_graphics_Shadow$stableprop|#static{}androidx_compose_ui_graphics_Shadow$stableprop[0]
+final val androidx.compose.ui.graphics/androidx_compose_ui_graphics_SkiaGraphicsContext$stableprop // androidx.compose.ui.graphics/androidx_compose_ui_graphics_SkiaGraphicsContext$stableprop|#static{}androidx_compose_ui_graphics_SkiaGraphicsContext$stableprop[0]
+final val androidx.compose.ui.graphics/androidx_compose_ui_graphics_SolidColor$stableprop // androidx.compose.ui.graphics/androidx_compose_ui_graphics_SolidColor$stableprop|#static{}androidx_compose_ui_graphics_SolidColor$stableprop[0]
+final val androidx.compose.ui.graphics/androidx_compose_ui_graphics_SweepGradient$stableprop // androidx.compose.ui.graphics/androidx_compose_ui_graphics_SweepGradient$stableprop|#static{}androidx_compose_ui_graphics_SweepGradient$stableprop[0]
+final val androidx.compose.ui.graphics/androidx_compose_ui_graphics_Vertices$stableprop // androidx.compose.ui.graphics/androidx_compose_ui_graphics_Vertices$stableprop|#static{}androidx_compose_ui_graphics_Vertices$stableprop[0]
final val androidx.compose.ui.graphics/difference // androidx.compose.ui.graphics/difference|@androidx.compose.ui.graphics.PathOperation.Companion{}difference[0]
final fun (androidx.compose.ui.graphics/PathOperation.Companion).(): androidx.compose.ui.graphics/PathOperation // androidx.compose.ui.graphics/difference.|@androidx.compose.ui.graphics.PathOperation.Companion(){}[0]
final val androidx.compose.ui.graphics/intersect // androidx.compose.ui.graphics/intersect|@androidx.compose.ui.graphics.PathOperation.Companion{}intersect[0]
@@ -2007,8 +2074,50 @@ final fun (org.jetbrains.skia/Path).androidx.compose.ui.graphics/asComposePath()
final fun (org.jetbrains.skia/PathEffect).androidx.compose.ui.graphics/asComposePathEffect(): androidx.compose.ui.graphics/PathEffect // androidx.compose.ui.graphics/asComposePathEffect|asComposePathEffect@org.jetbrains.skia.PathEffect(){}[0]
final fun (org.jetbrains.skia/PathMeasure).androidx.compose.ui.graphics/asComposePathEffect(): androidx.compose.ui.graphics/PathMeasure // androidx.compose.ui.graphics/asComposePathEffect|asComposePathEffect@org.jetbrains.skia.PathMeasure(){}[0]
final fun (org.jetbrains.skia/Rect).androidx.compose.ui.graphics/toComposeRect(): androidx.compose.ui.geometry/Rect // androidx.compose.ui.graphics/toComposeRect|toComposeRect@org.jetbrains.skia.Rect(){}[0]
+final fun androidx.compose.ui.graphics.colorspace/androidx_compose_ui_graphics_colorspace_Adaptation$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics.colorspace/androidx_compose_ui_graphics_colorspace_Adaptation$stableprop_getter|androidx_compose_ui_graphics_colorspace_Adaptation$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics.colorspace/androidx_compose_ui_graphics_colorspace_ColorSpace$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics.colorspace/androidx_compose_ui_graphics_colorspace_ColorSpace$stableprop_getter|androidx_compose_ui_graphics_colorspace_ColorSpace$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics.colorspace/androidx_compose_ui_graphics_colorspace_ColorSpaces$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics.colorspace/androidx_compose_ui_graphics_colorspace_ColorSpaces$stableprop_getter|androidx_compose_ui_graphics_colorspace_ColorSpaces$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics.colorspace/androidx_compose_ui_graphics_colorspace_Connector$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics.colorspace/androidx_compose_ui_graphics_colorspace_Connector$stableprop_getter|androidx_compose_ui_graphics_colorspace_Connector$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics.colorspace/androidx_compose_ui_graphics_colorspace_Illuminant$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics.colorspace/androidx_compose_ui_graphics_colorspace_Illuminant$stableprop_getter|androidx_compose_ui_graphics_colorspace_Illuminant$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics.colorspace/androidx_compose_ui_graphics_colorspace_Rgb$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics.colorspace/androidx_compose_ui_graphics_colorspace_Rgb$stableprop_getter|androidx_compose_ui_graphics_colorspace_Rgb$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics.colorspace/androidx_compose_ui_graphics_colorspace_TransferParameters$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics.colorspace/androidx_compose_ui_graphics_colorspace_TransferParameters$stableprop_getter|androidx_compose_ui_graphics_colorspace_TransferParameters$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics.colorspace/androidx_compose_ui_graphics_colorspace_WhitePoint$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics.colorspace/androidx_compose_ui_graphics_colorspace_WhitePoint$stableprop_getter|androidx_compose_ui_graphics_colorspace_WhitePoint$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics.drawscope/androidx_compose_ui_graphics_drawscope_CanvasDrawScope$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics.drawscope/androidx_compose_ui_graphics_drawscope_CanvasDrawScope$stableprop_getter|androidx_compose_ui_graphics_drawscope_CanvasDrawScope$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics.drawscope/androidx_compose_ui_graphics_drawscope_DrawStyle$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics.drawscope/androidx_compose_ui_graphics_drawscope_DrawStyle$stableprop_getter|androidx_compose_ui_graphics_drawscope_DrawStyle$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics.drawscope/androidx_compose_ui_graphics_drawscope_Fill$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics.drawscope/androidx_compose_ui_graphics_drawscope_Fill$stableprop_getter|androidx_compose_ui_graphics_drawscope_Fill$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics.drawscope/androidx_compose_ui_graphics_drawscope_Stroke$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics.drawscope/androidx_compose_ui_graphics_drawscope_Stroke$stableprop_getter|androidx_compose_ui_graphics_drawscope_Stroke$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics.layer/androidx_compose_ui_graphics_layer_GraphicsLayer$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics.layer/androidx_compose_ui_graphics_layer_GraphicsLayer$stableprop_getter|androidx_compose_ui_graphics_layer_GraphicsLayer$stableprop_getter(){}[0]
final fun androidx.compose.ui.graphics.painter/BitmapPainter(androidx.compose.ui.graphics/ImageBitmap, androidx.compose.ui.unit/IntOffset = ..., androidx.compose.ui.unit/IntSize = ..., androidx.compose.ui.graphics/FilterQuality = ...): androidx.compose.ui.graphics.painter/BitmapPainter // androidx.compose.ui.graphics.painter/BitmapPainter|BitmapPainter(androidx.compose.ui.graphics.ImageBitmap;androidx.compose.ui.unit.IntOffset;androidx.compose.ui.unit.IntSize;androidx.compose.ui.graphics.FilterQuality){}[0]
+final fun androidx.compose.ui.graphics.painter/androidx_compose_ui_graphics_painter_BitmapPainter$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics.painter/androidx_compose_ui_graphics_painter_BitmapPainter$stableprop_getter|androidx_compose_ui_graphics_painter_BitmapPainter$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics.painter/androidx_compose_ui_graphics_painter_BrushPainter$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics.painter/androidx_compose_ui_graphics_painter_BrushPainter$stableprop_getter|androidx_compose_ui_graphics_painter_BrushPainter$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics.painter/androidx_compose_ui_graphics_painter_ColorPainter$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics.painter/androidx_compose_ui_graphics_painter_ColorPainter$stableprop_getter|androidx_compose_ui_graphics_painter_ColorPainter$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics.painter/androidx_compose_ui_graphics_painter_Painter$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics.painter/androidx_compose_ui_graphics_painter_Painter$stableprop_getter|androidx_compose_ui_graphics_painter_Painter$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics.shadow/androidx_compose_ui_graphics_shadow_DropShadowPainter$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics.shadow/androidx_compose_ui_graphics_shadow_DropShadowPainter$stableprop_getter|androidx_compose_ui_graphics_shadow_DropShadowPainter$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics.shadow/androidx_compose_ui_graphics_shadow_InnerShadowPainter$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics.shadow/androidx_compose_ui_graphics_shadow_InnerShadowPainter$stableprop_getter|androidx_compose_ui_graphics_shadow_InnerShadowPainter$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics.shadow/androidx_compose_ui_graphics_shadow_Shadow$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics.shadow/androidx_compose_ui_graphics_shadow_Shadow$stableprop_getter|androidx_compose_ui_graphics_shadow_Shadow$stableprop_getter(){}[0]
final fun androidx.compose.ui.graphics.shadow/lerp(androidx.compose.ui.graphics.shadow/Shadow?, androidx.compose.ui.graphics.shadow/Shadow?, kotlin/Float): androidx.compose.ui.graphics.shadow/Shadow? // androidx.compose.ui.graphics.shadow/lerp|lerp(androidx.compose.ui.graphics.shadow.Shadow?;androidx.compose.ui.graphics.shadow.Shadow?;kotlin.Float){}[0]
+final fun androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathBuilder$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathBuilder$stableprop_getter|androidx_compose_ui_graphics_vector_PathBuilder$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode$stableprop_getter|androidx_compose_ui_graphics_vector_PathNode$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_ArcTo$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_ArcTo$stableprop_getter|androidx_compose_ui_graphics_vector_PathNode_ArcTo$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_Close$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_Close$stableprop_getter|androidx_compose_ui_graphics_vector_PathNode_Close$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_CurveTo$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_CurveTo$stableprop_getter|androidx_compose_ui_graphics_vector_PathNode_CurveTo$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_HorizontalTo$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_HorizontalTo$stableprop_getter|androidx_compose_ui_graphics_vector_PathNode_HorizontalTo$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_LineTo$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_LineTo$stableprop_getter|androidx_compose_ui_graphics_vector_PathNode_LineTo$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_MoveTo$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_MoveTo$stableprop_getter|androidx_compose_ui_graphics_vector_PathNode_MoveTo$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_QuadTo$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_QuadTo$stableprop_getter|androidx_compose_ui_graphics_vector_PathNode_QuadTo$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_ReflectiveCurveTo$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_ReflectiveCurveTo$stableprop_getter|androidx_compose_ui_graphics_vector_PathNode_ReflectiveCurveTo$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_ReflectiveQuadTo$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_ReflectiveQuadTo$stableprop_getter|androidx_compose_ui_graphics_vector_PathNode_ReflectiveQuadTo$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_RelativeArcTo$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_RelativeArcTo$stableprop_getter|androidx_compose_ui_graphics_vector_PathNode_RelativeArcTo$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_RelativeCurveTo$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_RelativeCurveTo$stableprop_getter|androidx_compose_ui_graphics_vector_PathNode_RelativeCurveTo$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_RelativeHorizontalTo$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_RelativeHorizontalTo$stableprop_getter|androidx_compose_ui_graphics_vector_PathNode_RelativeHorizontalTo$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_RelativeLineTo$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_RelativeLineTo$stableprop_getter|androidx_compose_ui_graphics_vector_PathNode_RelativeLineTo$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_RelativeMoveTo$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_RelativeMoveTo$stableprop_getter|androidx_compose_ui_graphics_vector_PathNode_RelativeMoveTo$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_RelativeQuadTo$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_RelativeQuadTo$stableprop_getter|androidx_compose_ui_graphics_vector_PathNode_RelativeQuadTo$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_RelativeReflectiveCurveTo$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_RelativeReflectiveCurveTo$stableprop_getter|androidx_compose_ui_graphics_vector_PathNode_RelativeReflectiveCurveTo$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_RelativeReflectiveQuadTo$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_RelativeReflectiveQuadTo$stableprop_getter|androidx_compose_ui_graphics_vector_PathNode_RelativeReflectiveQuadTo$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_RelativeVerticalTo$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_RelativeVerticalTo$stableprop_getter|androidx_compose_ui_graphics_vector_PathNode_RelativeVerticalTo$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_VerticalTo$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathNode_VerticalTo$stableprop_getter|androidx_compose_ui_graphics_vector_PathNode_VerticalTo$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathParser$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics.vector/androidx_compose_ui_graphics_vector_PathParser$stableprop_getter|androidx_compose_ui_graphics_vector_PathParser$stableprop_getter(){}[0]
final fun androidx.compose.ui.graphics/BlurEffect(kotlin/Float, kotlin/Float, androidx.compose.ui.graphics/TileMode = ...): androidx.compose.ui.graphics/BlurEffect // androidx.compose.ui.graphics/BlurEffect|BlurEffect(kotlin.Float;kotlin.Float;androidx.compose.ui.graphics.TileMode){}[0]
final fun androidx.compose.ui.graphics/Canvas(androidx.compose.ui.graphics/ImageBitmap): androidx.compose.ui.graphics/Canvas // androidx.compose.ui.graphics/Canvas|Canvas(androidx.compose.ui.graphics.ImageBitmap){}[0]
final fun androidx.compose.ui.graphics/Color(kotlin/Float, kotlin/Float, kotlin/Float, kotlin/Float = ..., androidx.compose.ui.graphics.colorspace/ColorSpace = ...): androidx.compose.ui.graphics/Color // androidx.compose.ui.graphics/Color|Color(kotlin.Float;kotlin.Float;kotlin.Float;kotlin.Float;androidx.compose.ui.graphics.colorspace.ColorSpace){}[0]
@@ -2028,6 +2137,31 @@ final fun androidx.compose.ui.graphics/PathMeasure(): androidx.compose.ui.graphi
final fun androidx.compose.ui.graphics/RadialGradientShader(androidx.compose.ui.geometry/Offset, kotlin/Float, kotlin.collections/List, kotlin.collections/List? = ..., androidx.compose.ui.graphics/TileMode = ...): org.jetbrains.skia/Shader // androidx.compose.ui.graphics/RadialGradientShader|RadialGradientShader(androidx.compose.ui.geometry.Offset;kotlin.Float;kotlin.collections.List;kotlin.collections.List?;androidx.compose.ui.graphics.TileMode){}[0]
final fun androidx.compose.ui.graphics/ShaderBrush(org.jetbrains.skia/Shader): androidx.compose.ui.graphics/ShaderBrush // androidx.compose.ui.graphics/ShaderBrush|ShaderBrush(org.jetbrains.skia.Shader){}[0]
final fun androidx.compose.ui.graphics/SweepGradientShader(androidx.compose.ui.geometry/Offset, kotlin.collections/List, kotlin.collections/List? = ...): org.jetbrains.skia/Shader // androidx.compose.ui.graphics/SweepGradientShader|SweepGradientShader(androidx.compose.ui.geometry.Offset;kotlin.collections.List;kotlin.collections.List?){}[0]
+final fun androidx.compose.ui.graphics/androidx_compose_ui_graphics_BlendModeColorFilter$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics/androidx_compose_ui_graphics_BlendModeColorFilter$stableprop_getter|androidx_compose_ui_graphics_BlendModeColorFilter$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics/androidx_compose_ui_graphics_BlurEffect$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics/androidx_compose_ui_graphics_BlurEffect$stableprop_getter|androidx_compose_ui_graphics_BlurEffect$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics/androidx_compose_ui_graphics_Brush$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics/androidx_compose_ui_graphics_Brush$stableprop_getter|androidx_compose_ui_graphics_Brush$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics/androidx_compose_ui_graphics_ColorFilter$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics/androidx_compose_ui_graphics_ColorFilter$stableprop_getter|androidx_compose_ui_graphics_ColorFilter$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics/androidx_compose_ui_graphics_ColorMatrixColorFilter$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics/androidx_compose_ui_graphics_ColorMatrixColorFilter$stableprop_getter|androidx_compose_ui_graphics_ColorMatrixColorFilter$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics/androidx_compose_ui_graphics_Interval$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics/androidx_compose_ui_graphics_Interval$stableprop_getter|androidx_compose_ui_graphics_Interval$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics/androidx_compose_ui_graphics_IntervalTree$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics/androidx_compose_ui_graphics_IntervalTree$stableprop_getter|androidx_compose_ui_graphics_IntervalTree$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics/androidx_compose_ui_graphics_LightingColorFilter$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics/androidx_compose_ui_graphics_LightingColorFilter$stableprop_getter|androidx_compose_ui_graphics_LightingColorFilter$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics/androidx_compose_ui_graphics_LinearGradient$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics/androidx_compose_ui_graphics_LinearGradient$stableprop_getter|androidx_compose_ui_graphics_LinearGradient$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics/androidx_compose_ui_graphics_OffsetEffect$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics/androidx_compose_ui_graphics_OffsetEffect$stableprop_getter|androidx_compose_ui_graphics_OffsetEffect$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics/androidx_compose_ui_graphics_Outline$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics/androidx_compose_ui_graphics_Outline$stableprop_getter|androidx_compose_ui_graphics_Outline$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics/androidx_compose_ui_graphics_Outline_Generic$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics/androidx_compose_ui_graphics_Outline_Generic$stableprop_getter|androidx_compose_ui_graphics_Outline_Generic$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics/androidx_compose_ui_graphics_Outline_Rectangle$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics/androidx_compose_ui_graphics_Outline_Rectangle$stableprop_getter|androidx_compose_ui_graphics_Outline_Rectangle$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics/androidx_compose_ui_graphics_Outline_Rounded$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics/androidx_compose_ui_graphics_Outline_Rounded$stableprop_getter|androidx_compose_ui_graphics_Outline_Rounded$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics/androidx_compose_ui_graphics_PathHitTester$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics/androidx_compose_ui_graphics_PathHitTester$stableprop_getter|androidx_compose_ui_graphics_PathHitTester$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics/androidx_compose_ui_graphics_PathSegment$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics/androidx_compose_ui_graphics_PathSegment$stableprop_getter|androidx_compose_ui_graphics_PathSegment$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics/androidx_compose_ui_graphics_PixelMap$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics/androidx_compose_ui_graphics_PixelMap$stableprop_getter|androidx_compose_ui_graphics_PixelMap$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics/androidx_compose_ui_graphics_RadialGradient$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics/androidx_compose_ui_graphics_RadialGradient$stableprop_getter|androidx_compose_ui_graphics_RadialGradient$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics/androidx_compose_ui_graphics_RenderEffect$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics/androidx_compose_ui_graphics_RenderEffect$stableprop_getter|androidx_compose_ui_graphics_RenderEffect$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics/androidx_compose_ui_graphics_ShaderBrush$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics/androidx_compose_ui_graphics_ShaderBrush$stableprop_getter|androidx_compose_ui_graphics_ShaderBrush$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics/androidx_compose_ui_graphics_Shadow$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics/androidx_compose_ui_graphics_Shadow$stableprop_getter|androidx_compose_ui_graphics_Shadow$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics/androidx_compose_ui_graphics_SkiaGraphicsContext$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics/androidx_compose_ui_graphics_SkiaGraphicsContext$stableprop_getter|androidx_compose_ui_graphics_SkiaGraphicsContext$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics/androidx_compose_ui_graphics_SolidColor$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics/androidx_compose_ui_graphics_SolidColor$stableprop_getter|androidx_compose_ui_graphics_SolidColor$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics/androidx_compose_ui_graphics_SweepGradient$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics/androidx_compose_ui_graphics_SweepGradient$stableprop_getter|androidx_compose_ui_graphics_SweepGradient$stableprop_getter(){}[0]
+final fun androidx.compose.ui.graphics/androidx_compose_ui_graphics_Vertices$stableprop_getter(): kotlin/Int // androidx.compose.ui.graphics/androidx_compose_ui_graphics_Vertices$stableprop_getter|androidx_compose_ui_graphics_Vertices$stableprop_getter(){}[0]
final fun androidx.compose.ui.graphics/computeCubicVerticalBounds(kotlin/Float, kotlin/Float, kotlin/Float, kotlin/Float, kotlin/FloatArray, kotlin/Int = ...): androidx.collection/FloatFloatPair // androidx.compose.ui.graphics/computeCubicVerticalBounds|computeCubicVerticalBounds(kotlin.Float;kotlin.Float;kotlin.Float;kotlin.Float;kotlin.FloatArray;kotlin.Int){}[0]
final fun androidx.compose.ui.graphics/computeHorizontalBounds(androidx.compose.ui.graphics/PathSegment, kotlin/FloatArray, kotlin/Int = ...): androidx.collection/FloatFloatPair // androidx.compose.ui.graphics/computeHorizontalBounds|computeHorizontalBounds(androidx.compose.ui.graphics.PathSegment;kotlin.FloatArray;kotlin.Int){}[0]
final fun androidx.compose.ui.graphics/degrees(kotlin/Float): kotlin/Float // androidx.compose.ui.graphics/degrees|degrees(kotlin.Float){}[0]
diff --git a/compose/ui/ui-graphics/build.gradle b/compose/ui/ui-graphics/build.gradle
index 6fcf7e4847778..2e38ea8732293 100644
--- a/compose/ui/ui-graphics/build.gradle
+++ b/compose/ui/ui-graphics/build.gradle
@@ -52,6 +52,8 @@ androidXMultiplatform {
defaultPlatform(PlatformIdentifier.ANDROID)
+ configureDarwinFlags()
+
sourceSets {
commonMain {
dependencies {
@@ -60,7 +62,9 @@ androidXMultiplatform {
api(project(":compose:ui:ui-unit"))
implementation(project(":compose:runtime:runtime"))
implementation(project(":compose:ui:ui-util"))
- implementation("androidx.collection:collection:1.5.0")
+ implementation(project(":compose:ui:ui-geometry"))
+ implementation(project(":annotation:annotation"))
+ implementation(project(":collection:collection"))
}
}
@@ -152,6 +156,7 @@ androidXMultiplatform {
dependsOn(jvmTest)
dependsOn(skikoTest)
dependsOn(skikoExcludingWebTest)
+ resources.srcDirs += "src/desktopTest/res"
dependencies {
implementation(libs.truth)
implementation(libs.skikoCurrentOs)
diff --git a/compose/ui/ui-test-junit4/build.gradle b/compose/ui/ui-test-junit4/build.gradle
index c2a51454950f9..f1d047b04e2ea 100644
--- a/compose/ui/ui-test-junit4/build.gradle
+++ b/compose/ui/ui-test-junit4/build.gradle
@@ -44,7 +44,7 @@ androidXMultiplatform {
commonMain {
dependencies {
api(project(":compose:ui:ui-test"))
- implementation("androidx.annotation:annotation:1.9.1")
+ implementation(project(":annotation:annotation"))
implementation(libs.kotlinCoroutinesCore)
implementation(libs.kotlinCoroutinesTest)
}
diff --git a/compose/ui/ui-test/build.gradle b/compose/ui/ui-test/build.gradle
index 6fd0e334ec17f..d695c0fda5d2b 100644
--- a/compose/ui/ui-test/build.gradle
+++ b/compose/ui/ui-test/build.gradle
@@ -53,11 +53,11 @@ androidXMultiplatform {
api(project(":compose:ui:ui"))
api(project(":compose:ui:ui-text"))
api(project(":compose:ui:ui-unit"))
- api(project(":compose:runtime:runtime"))
api(libs.kotlinCoroutinesCore)
api(libs.kotlinCoroutinesTest)
+ implementation(project(":annotation:annotation"))
+ implementation(project(":collection:collection"))
implementation(project(":compose:ui:ui-util"))
- implementation("androidx.collection:collection:1.5.0")
}
}
@@ -143,10 +143,17 @@ androidXMultiplatform {
// Required to properly resolve supertypes of DefaultArchitectureComponentsOwner
// Keep in sync with :ui:ui module
- implementation(project(":lifecycle:lifecycle-runtime-compose"))
- implementation(project(":lifecycle:lifecycle-viewmodel"))
- implementation(project(":lifecycle:lifecycle-viewmodel-savedstate"))
- implementation(project(":navigationevent:navigationevent"))
+ implementation("org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.6")
+ implementation("org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.6")
+ implementation("org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.6")
+
+ // Use direct dependency to AOSP's artifact instead of using project reference
+ // because this module supports all KMP platforms from the beginning
+ // Project dependency (commented out version) is required for `integration` branch setup
+ // implementation(project(":navigationevent:navigationevent"))
+ def navigationEventVersion = project.findProperty('artifactRedirection.version.androidx.navigationevent')
+ implementation("androidx.navigationevent:navigationevent:$navigationEventVersion")
+
}
}
diff --git a/compose/ui/ui-text/api/desktop/ui-text.api b/compose/ui/ui-text/api/desktop/ui-text.api
index a1eace361769f..b2e1720173111 100644
--- a/compose/ui/ui-text/api/desktop/ui-text.api
+++ b/compose/ui/ui-text/api/desktop/ui-text.api
@@ -884,10 +884,6 @@ public final class androidx/compose/ui/text/font/FontListFontFamily : androidx/c
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/ui/text/font/Font;)V
- public synthetic fun addFirst (Ljava/lang/Object;)V
- public fun addLast (Landroidx/compose/ui/text/font/Font;)V
- public synthetic fun addLast (Ljava/lang/Object;)V
public fun clear ()V
public fun contains (Landroidx/compose/ui/text/font/Font;)Z
public final fun contains (Ljava/lang/Object;)Z
@@ -910,10 +906,6 @@ public final class androidx/compose/ui/text/font/FontListFontFamily : androidx/c
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/ui/text/font/Font;
- public synthetic fun removeFirst ()Ljava/lang/Object;
- public fun removeLast ()Landroidx/compose/ui/text/font/Font;
- 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/ui/text/font/Font;)Landroidx/compose/ui/text/font/Font;
diff --git a/compose/ui/ui-text/build.gradle b/compose/ui/ui-text/build.gradle
index 6e973d4c1810d..af70683e69e03 100644
--- a/compose/ui/ui-text/build.gradle
+++ b/compose/ui/ui-text/build.gradle
@@ -65,9 +65,10 @@ androidXMultiplatform {
implementation(project(":compose:runtime:runtime-saveable"))
implementation(project(":compose:ui:ui-util"))
+ implementation(project(":compose:ui:ui-geometry"))
- api("androidx.annotation:annotation:1.9.1")
- implementation("androidx.collection:collection:1.5.0")
+ implementation(project(":annotation:annotation"))
+ implementation(project(":collection:collection"))
}
}
@@ -155,8 +156,6 @@ androidXMultiplatform {
desktopTest {
dependsOn(jvmTest)
dependsOn(skikoTest)
- kotlin.srcDirs("src/test/java", "src/desktopTest/kotlin")
- resources.srcDirs("src/test/resources", "src/desktopTest/resources")
dependencies {
implementation(libs.truth)
implementation(libs.junit)
@@ -221,11 +220,11 @@ androidXMultiplatform {
}
jsMain {
- kotlin.srcDir("src/webCommonW3C/kotlin")
+ dependsOn(webMain)
}
wasmJsMain {
- kotlin.srcDir("src/webCommonW3C/kotlin")
+ dependsOn(webMain)
dependencies {
implementation(libs.skikoWasmJs)
implementation(libs.skikoJsWasmRuntime)
@@ -278,3 +277,9 @@ androidx {
metalavaK2UastEnabled = false
samples(project(":compose:ui:ui-text:ui-text-samples"))
}
+
+afterEvaluate {
+ tasks.withType(Test) { t ->
+ t.jvmArgs += ["--add-opens=java.desktop/sun.font=ALL-UNNAMED"]
+ }
+}
diff --git a/compose/ui/ui-text/src/desktopTest/kotlin/androidx/compose/ui/text/DesktopFontTest.kt b/compose/ui/ui-text/src/desktopTest/kotlin/androidx/compose/ui/text/DesktopFontTest.kt
index 7c9a1dafb4f5c..68a0d794880ce 100644
--- a/compose/ui/ui-text/src/desktopTest/kotlin/androidx/compose/ui/text/DesktopFontTest.kt
+++ b/compose/ui/ui-text/src/desktopTest/kotlin/androidx/compose/ui/text/DesktopFontTest.kt
@@ -41,7 +41,7 @@ class DesktopFontTest {
private val fontListFontFamily by lazy {
FontFamily(
Font(
- "font/sample_font.ttf"
+ "font/sample_font_fork.ttf"
),
Font(
"font/test_400_italic.ttf",
@@ -54,7 +54,7 @@ class DesktopFontTest {
val bytes = Thread
.currentThread()
.contextClassLoader
- .getResourceAsStream("font/sample_font.ttf")!!
+ .getResourceAsStream("font/sample_font_fork.ttf")!!
.readAllBytes()
FontMgr.default.makeFromData(Data.makeFromBytes(bytes))
?: error("loadedTypeface failed: FontMgr.default.makeFromData returned null")
diff --git a/compose/ui/ui-text/src/desktopTest/kotlin/androidx/compose/ui/text/DesktopParagraphIntegrationLineHeightStyleTest.kt b/compose/ui/ui-text/src/desktopTest/kotlin/androidx/compose/ui/text/DesktopParagraphIntegrationLineHeightStyleTest.kt
index 8b070b7364aa8..5d366ec53b831 100644
--- a/compose/ui/ui-text/src/desktopTest/kotlin/androidx/compose/ui/text/DesktopParagraphIntegrationLineHeightStyleTest.kt
+++ b/compose/ui/ui-text/src/desktopTest/kotlin/androidx/compose/ui/text/DesktopParagraphIntegrationLineHeightStyleTest.kt
@@ -43,7 +43,7 @@ class DesktopParagraphIntegrationLineHeightStyleTest {
private val fontFamilyMeasureFont =
FontFamily(
Font(
- "font/sample_font.ttf",
+ "font/sample_font_fork.ttf",
weight = FontWeight.Normal,
style = FontStyle.Normal
)
diff --git a/compose/ui/ui-text/src/desktopTest/kotlin/androidx/compose/ui/text/DesktopParagraphIntegrationTest.kt b/compose/ui/ui-text/src/desktopTest/kotlin/androidx/compose/ui/text/DesktopParagraphIntegrationTest.kt
index 20a6f074b3566..1e8aa54990a52 100644
--- a/compose/ui/ui-text/src/desktopTest/kotlin/androidx/compose/ui/text/DesktopParagraphIntegrationTest.kt
+++ b/compose/ui/ui-text/src/desktopTest/kotlin/androidx/compose/ui/text/DesktopParagraphIntegrationTest.kt
@@ -67,7 +67,7 @@ class DesktopParagraphIntegrationTest {
private val fontFamilyMeasureFont =
FontFamily(
Font(
- "font/sample_font.ttf",
+ "font/sample_font_fork.ttf",
weight = FontWeight.Normal,
style = FontStyle.Normal
)
@@ -2888,7 +2888,7 @@ class DesktopParagraphIntegrationTest {
// First/last line is influenced by top/bottom padding
for (i in 1 until paragraph.lineCount - 1) {
val actualHeight = paragraph.getLineHeight(i)
- // In the sample_font.ttf, the height of the line should be
+ // In the sample_font_fork.ttf, the height of the line should be
// fontSize + 0.2f * fontSize(line gap)
assertWithMessage("line number $i").that(actualHeight).isEqualToWithTolerance(lineHeight)
}
@@ -2913,7 +2913,7 @@ class DesktopParagraphIntegrationTest {
// First/last line is influenced by top/bottom padding
for (i in 1 until paragraph.lineCount - 1) {
val actualHeight = paragraph.getLineHeight(i)
- // In the sample_font.ttf, the height of the line should be
+ // In the sample_font_fork.ttf, the height of the line should be
// fontSize + 0.2f * fontSize(line gap)
assertWithMessage("line number $i").that(actualHeight).isEqualToWithTolerance(lineHeight * fontSize)
}
diff --git a/compose/ui/ui-text/src/desktopTest/kotlin/androidx/compose/ui/text/DesktopParagraphTest.kt b/compose/ui/ui-text/src/desktopTest/kotlin/androidx/compose/ui/text/DesktopParagraphTest.kt
index 2f3cca9adc15f..b79fd1651194d 100644
--- a/compose/ui/ui-text/src/desktopTest/kotlin/androidx/compose/ui/text/DesktopParagraphTest.kt
+++ b/compose/ui/ui-text/src/desktopTest/kotlin/androidx/compose/ui/text/DesktopParagraphTest.kt
@@ -53,7 +53,7 @@ class DesktopParagraphTest {
private val fontFamilyMeasureFont =
FontFamily(
Font(
- "font/sample_font.ttf",
+ "font/sample_font_fork.ttf",
weight = FontWeight.Normal,
style = FontStyle.Normal
)
diff --git a/compose/ui/ui-tooling/build.gradle b/compose/ui/ui-tooling/build.gradle
index d0c05f18b9c51..ac43f3d7ea912 100644
--- a/compose/ui/ui-tooling/build.gradle
+++ b/compose/ui/ui-tooling/build.gradle
@@ -44,8 +44,8 @@ androidXMultiplatform {
sourceSets {
commonMain {
dependencies {
- api(project(":compose:runtime:runtime"))
api(project(":compose:ui:ui-tooling-preview"))
+ api(project(":compose:runtime:runtime"))
api(project(":compose:ui:ui"))
api(project(":compose:ui:ui-tooling-data"))
}
diff --git a/compose/ui/ui-uikit/build.gradle b/compose/ui/ui-uikit/build.gradle
index 5f5dbaecd4c42..e6a226f577976 100644
--- a/compose/ui/ui-uikit/build.gradle
+++ b/compose/ui/ui-uikit/build.gradle
@@ -1,3 +1,8 @@
+import androidx.build.KotlinTarget
+import androidx.build.SoftwareType
+import org.gradle.api.services.BuildService
+import org.gradle.api.services.BuildServiceParameters
+
/*
* Copyright 2023 The Android Open Source Project
*
@@ -14,10 +19,6 @@
* limitations under the License.
*/
-import androidx.build.KotlinTarget
-
-// TODO: Correctly apply AndroidXPlugin to pass all verification checks.
-
plugins {
id("AndroidXPlugin")
id("kotlin-multiplatform")
@@ -54,6 +55,13 @@ kotlin {
}
private def configure(target, isDevice, architecture, testTarget) {
+ // to prevent "Process 'command 'xcodebuild'' finished with non-zero exit value 65"
+ // "error: unable to attach DB: unable to initialize database (database is locked)"
+ def xcodeLock =
+ project.gradle.sharedServices.registerIfAbsent("xcodeBuildLock", XcodeBuildLock) {
+ maxParallelUsages.set(1)
+ }
+
def frameworkName = "CMPUIKitUtils"
def buildSchemeName = frameworkName
def testSchemeName = "${frameworkName}Tests"
@@ -119,6 +127,7 @@ private def configure(target, isDevice, architecture, testTarget) {
target.compilations.main {
def libTaskName = "${compileTaskProvider.name}ObjCLib"
project.tasks.register(libTaskName, Exec) {
+ usesService(xcodeLock)
inputs.dir(frameworkSourcesDir)
.withPropertyName("${frameworkName}-${sdkName}")
.withPathSensitivity(PathSensitivity.RELATIVE)
@@ -168,3 +177,13 @@ private def configure(target, isDevice, architecture, testTarget) {
}
}
}
+
+androidx {
+ name = "Compose UIKit Utils"
+ type = SoftwareType.PUBLISHED_LIBRARY
+ inceptionYear = "2023"
+ description = "Internal iOS UIKit utilities including Objective-C library."
+ legacyDisableKotlinStrictApiMode = true
+}
+
+abstract class XcodeBuildLock implements BuildService {}
diff --git a/compose/ui/ui-unit/build.gradle b/compose/ui/ui-unit/build.gradle
index d3acd14733853..1550e30c1365c 100644
--- a/compose/ui/ui-unit/build.gradle
+++ b/compose/ui/ui-unit/build.gradle
@@ -51,9 +51,9 @@ androidXMultiplatform {
sourceSets {
commonMain {
dependencies {
- api("androidx.annotation:annotation:1.9.1")
api(project(":compose:ui:ui-geometry"))
- implementation("androidx.collection:collection:1.5.0")
+
+ implementation(project(":annotation:annotation"))
implementation(project(":compose:runtime:runtime"))
implementation(project(":compose:ui:ui-util"))
}
diff --git a/compose/ui/ui-util/build.gradle b/compose/ui/ui-util/build.gradle
index acf512f3fa35b..60faacefb2a31 100644
--- a/compose/ui/ui-util/build.gradle
+++ b/compose/ui/ui-util/build.gradle
@@ -52,7 +52,7 @@ androidXMultiplatform {
sourceSets {
commonMain {
dependencies {
- implementation("androidx.collection:collection:1.5.0")
+ implementation(project(":collection:collection"))
implementation(project(":compose:runtime:runtime"))
}
}
diff --git a/compose/ui/ui/build.gradle b/compose/ui/ui/build.gradle
index b326066784e6f..4b80f304637f0 100644
--- a/compose/ui/ui/build.gradle
+++ b/compose/ui/ui/build.gradle
@@ -65,38 +65,35 @@ androidXMultiplatform {
js()
wasmJs()
- // TODO: Migrate iosInstrumentedTest to kotlin 2.1.0
- // https://youtrack.jetbrains.com/issue/CMP-7390/Migrate-iosInstrumentedTest-target-to-kotlin-2.1.0
- // Kotlin 2.1.0 doesn't support declaring multiple targets of the same type
- // iosInstrumentedTest()
-
- // TODO: apply linker flags
- // configureDarwinFlags()
-
defaultPlatform(PlatformIdentifier.ANDROID)
+ iosInstrumentedTest()
+ configureDarwinFlags()
+
sourceSets {
commonMain {
dependencies {
+ implementation(project(":annotation:annotation"))
+ implementation(project(":collection:collection"))
+ implementation(libs.kotlinStdlib)
implementation(libs.kotlinCoroutinesCore)
- api("androidx.annotation:annotation:1.9.1")
- implementation("androidx.collection:collection:1.5.0")
+
// when updating the runtime version please also update the runtime-saveable version
implementation(project(":compose:runtime:runtime"))
- api(project(":compose:runtime:runtime-retain"))
+ def composeVersion = project.findProperty('artifactRedirection.version.androidx.compose')
+ api("androidx.compose.runtime:runtime-retain:$composeVersion")
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(project(":compose:ui:ui-util"))
-
- api(project(":lifecycle:lifecycle-runtime-compose"))
- api(project(":savedstate:savedstate-compose"))
-
- implementation(project(":lifecycle:lifecycle-viewmodel"))
- implementation(project(":lifecycle:lifecycle-viewmodel-savedstate"))
+ 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 project(":compose:ui:ui-util")
+ api("org.jetbrains.androidx.lifecycle:lifecycle-common:2.9.6")
+ implementation("org.jetbrains.androidx.lifecycle:lifecycle-runtime:2.9.6")
+ implementation("org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.6")
+ implementation("org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.6")
+ implementation("org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.6")
}
}
@@ -229,12 +226,20 @@ androidXMultiplatform {
skikoMain {
dependsOn(commonMain)
dependencies {
+ api(project(":compose:ui:ui-graphics"))
+ api(project(":compose:ui:ui-text"))
api(libs.skiko)
implementation(libs.atomicFu)
// Keep this dependency for compatibility due to https://youtrack.jetbrains.com/issue/KT-60874
implementation(project(":compose:ui:ui-backhandler"))
- implementation(project(":navigationevent:navigationevent"))
+
+ // Use direct dependency to AOSP's artifact instead of using project reference
+ // because this module supports all KMP platforms from the beginning.
+ // Project dependency (commented out version) is required for `integration` branch setup
+ // implementation(project(":navigationevent:navigationevent"))
+ def navigationEventVersion = project.findProperty('artifactRedirection.version.androidx.navigationevent')
+ implementation("androidx.navigationevent:navigationevent:$navigationEventVersion")
}
}
@@ -244,7 +249,7 @@ androidXMultiplatform {
// TODO: Move to commonTest?
implementation(project(":compose:material:material"))
implementation(project(":compose:foundation:foundation"))
- implementation(project(":navigationevent:navigationevent-compose"))
+ implementation("org.jetbrains.androidx.navigationevent:navigationevent-compose:1.0.0-rc02")
}
}
@@ -306,43 +311,45 @@ androidXMultiplatform {
dependsOn(nativeTest)
}
- uikitInstrumentedTest {
- dependencies {
- implementation(project(":compose:material:material"))
- implementation(project(":compose:foundation:foundation"))
- }
+ iosInstrumentedTest.dependencies {
+ implementation(project(":compose:material:material"))
+ implementation(project(":compose:material3:material3"))
+ implementation(project(":compose:foundation:foundation"))
+ implementation(project(":compose:ui:ui-test-junit4"))
+ implementation(project(":internal-testutils-xctest"))
}
webMain {
dependsOn(nonJvmMain)
+ dependsOn(skikoMain)
+
+ dependencies {
+ implementation(libs.skiko)
+ api(libs.kotlinXw3c)
+ }
}
webTest {
- dependsOn(nonJvmTest)
+ dependsOn(skikoTest)
}
jsMain {
- kotlin.srcDir("src/webCommonW3C/kotlin")
dependsOn(webMain)
}
jsTest {
- kotlin.srcDir("src/webTest/kotlin")
dependsOn(webTest)
}
wasmJsMain {
- kotlin.srcDir("src/webCommonW3C/kotlin")
dependsOn(webMain)
dependencies {
- api(libs.kotlinXw3c)
implementation(libs.skikoWasmJs)
implementation(libs.skikoJsWasmRuntime)
}
}
wasmJsTest {
- kotlin.srcDir("src/webTest/kotlin")
dependsOn(webTest)
}
diff --git a/compose/ui/ui/gradle.properties b/compose/ui/ui/gradle.properties
new file mode 100644
index 0000000000000..529a7add87c61
--- /dev/null
+++ b/compose/ui/ui/gradle.properties
@@ -0,0 +1,17 @@
+#
+# Copyright 2025 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+kotlin.js.ir.output.granularity=whole-program
\ No newline at end of file
diff --git a/compose/ui/ui/integration-tests/ui-demos/build.gradle b/compose/ui/ui/integration-tests/ui-demos/build.gradle
index b81db219a2252..7700069d2d5bd 100644
--- a/compose/ui/ui/integration-tests/ui-demos/build.gradle
+++ b/compose/ui/ui/integration-tests/ui-demos/build.gradle
@@ -35,8 +35,8 @@ dependencies {
implementation("androidx.activity:activity-compose:1.8.1")
implementation("androidx.fragment:fragment-ktx:1.2.5")
- implementation(project(":recyclerview:recyclerview"))
- implementation(project(":customview:customview-poolingcontainer"))
+ implementation("androidx.recyclerview:recyclerview:1.4.0")
+ implementation("androidx.customview:customview-poolingcontainer:1.0.0")
implementation("androidx.viewpager2:viewpager2:1.0.0")
implementation("androidx.coordinatorlayout:coordinatorlayout:1.1.0")
implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0")
diff --git a/gradle.properties b/gradle.properties
index ed15afaa5f836..2175793d32b7e 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,14 +1,14 @@
-# TODO(https://github.com/spdx/spdx-gradle-plugin/issues/16) remove `-DSPDXParser.OnlyUseLocalLicenses=true`
-org.gradle.jvmargs=-Xmx12g -XX:+HeapDumpOnOutOfMemoryError -XX:+UseParallelGC -Dkotlin.daemon.jvm.options=-XX:MaxMetaspaceSize=1g,-Xmx8g -Dlint.nullness.ignore-deprecated=true -Dorg.gradle.configuration-cache.internal.report-link-as-warning=true -DSPDXParser.OnlyUseLocalLicenses=true -Dcom.android.tools.r8.enableEmptyMemberRulesToDefaultInitRuleConversion=true -Dfile.encoding=UTF-8
+org.gradle.jvmargs=-Xmx12g \
+ -XX:+HeapDumpOnOutOfMemoryError \
+ -XX:+UseParallelGC \
+ -Dkotlin.daemon.jvm.options=-XX:MaxMetaspaceSize=1g,-Xmx8g \
+ -Dlint.nullness.ignore-deprecated=true \
+ -Dfile.encoding=UTF-8
org.gradle.daemon=true
org.gradle.configureondemand=true
org.gradle.parallel=true
org.gradle.caching=true
org.gradle.welcome=never
-org.gradle.projectcachedir=../../out/gradle-project-cache
-# https://youtrack.jetbrains.com/issue/KT-58223
-kotlin.project.persistent.dir=./placeholder
-kotlin.user.home=./placeholder
# Disabled due to https://github.com/gradle/gradle/issues/18626
# org.gradle.vfs.watch=true
# Reenabled in gradlew, but disabled in Studio until these errors become shown (b/268380971) or computed more quickly (https://github.com/gradle/gradle/issues/23272)
@@ -135,3 +135,15 @@ artifactRedirection.version.androidx.navigationevent=1.0.0-rc01
artifactRedirection.version.androidx.performance=1.0.0-alpha01
artifactRedirection.version.androidx.savedstate=1.4.0
artifactRedirection.version.androidx.window=1.5.0
+
+# In which browsers run web tests
+jetbrains.androidx.web.tests.enableChrome=true
+jetbrains.androidx.web.tests.enableChromium=false
+jetbrains.androidx.web.tests.enableFirefox=false
+jetbrains.androidx.web.tests.enableSafari=false
+
+kotlinx.atomicfu.enableJsIrTransformation=true
+kotlinx.atomicfu.enableJvmIrTransformation=true
+kotlinx.atomicfu.enableNativeIrTransformation=true
+
+jetbrains.forkStructureEnabled=true
\ No newline at end of file
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 343da86e46439..951e0a352ede4 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -28,7 +28,7 @@ annotationVersion = "1.9.1"
atomicFu = "0.28.0"
autoService = "1.0-rc6"
autoValue = "1.6.3"
-binaryCompatibilityValidator = "0.16.2"
+binaryCompatibilityValidator = "0.17.0"
builder = "8.6.0-alpha05"
byteBuddy = "1.14.9"
asm = "9.7"
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
index 62d4c053550b9..8bdaf60c75ab8 100644
Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index d192c653543de..30de946b13aaa 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=../../../../tools/external/gradle/gradle-9.1.0-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-9.1.0-bin.zip
distributionSha256Sum=a17ddd85a26b6a7f5ddb71ff8b05fc5104c0202c6e64782429790c933686c806
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
diff --git a/gradlew b/gradlew
index 6f2ab88058fce..adff685a0348c 100755
--- a/gradlew
+++ b/gradlew
@@ -1,142 +1,128 @@
-#!/usr/bin/env bash
-set -o pipefail
-set -e
+#!/bin/sh
+
+#
+# Copyright © 2015 the original authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# SPDX-License-Identifier: Apache-2.0
+#
##############################################################################
-##
-## Gradle start up script for UN*X
-##
+#
+# Gradle start up script for POSIX generated by Gradle.
+#
+# Important for running:
+#
+# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
+# noncompliant, but you have some other compliant shell such as ksh or
+# bash, then to run this script, type that shell name before the whole
+# command line, like:
+#
+# ksh Gradle
+#
+# Busybox and similar reduced shells will NOT work, because this script
+# requires all of these POSIX shell features:
+# * functions;
+# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
+# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
+# * compound commands having a testable exit status, especially «case»;
+# * various built-in commands including «command», «set», and «ulimit».
+#
+# Important for patching:
+#
+# (2) This script targets any POSIX shell, so it avoids extensions provided
+# by Bash, Ksh, etc; in particular arrays are avoided.
+#
+# The "traditional" practice of packing multiple parameters into a
+# space-separated string is a well documented source of bugs and security
+# problems, so this is (mostly) avoided, by progressively accumulating
+# options in "$@", and eventually passing that to Java.
+#
+# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
+# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
+# see the in-line comments for details.
+#
+# There are tweaks for specific operating systems such as AIX, CygWin,
+# Darwin, MinGW, and NonStop.
+#
+# (3) This script is generated from the Groovy template
+# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
+# within the Gradle project.
+#
+# You can find Gradle at https://github.com/gradle/gradle/.
+#
##############################################################################
-# --------- androidx specific code needed for build server. ------------------
-
-SCRIPT_PATH="$(cd $(dirname $0) && pwd -P)"
-if [ -n "$OUT_DIR" ] ; then
- mkdir -p "$OUT_DIR"
- OUT_DIR="$(cd $OUT_DIR && pwd -P)"
- export TMPDIR="$OUT_DIR/tmp"
-elif [[ $SCRIPT_PATH == /google/cog/* ]] ; then
- export OUT_DIR="$HOME/androidxout"
-else
- CHECKOUT_ROOT="$(cd $SCRIPT_PATH/../.. && pwd -P)"
- export OUT_DIR="$CHECKOUT_ROOT/out"
-fi
-export GRADLE_USER_HOME="$OUT_DIR/.gradle"
-export KONAN_DATA_DIR="$OUT_DIR/.konan"
-
-ORG_GRADLE_JVMARGS="$(cd $SCRIPT_PATH && grep org.gradle.jvmargs gradle.properties | sed 's/^/-D/')"
-if [ -n "$DIST_DIR" ]; then
- mkdir -p "$DIST_DIR"
- DIST_DIR="$(cd $DIST_DIR && pwd -P)"
-
- # tell Gradle where to put a heap dump on failure
- ORG_GRADLE_JVMARGS="$(echo $ORG_GRADLE_JVMARGS | sed "s|$| -XX:HeapDumpPath=$DIST_DIR|")"
-
- # We don't set a default DIST_DIR in an else clause here because Studio doesn't use gradlew
- # and doesn't set DIST_DIR and we want gradlew and Studio to match
-fi
-
-# unset ANDROID_BUILD_TOP so that Lint doesn't think we're building the platform itself
-unset ANDROID_BUILD_TOP
-# ----------------------------------------------------------------------------
+# Attempt to set APP_HOME
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+# Resolve links: $0 may be a link
+app_path=$0
+
+# Need this for daisy-chained symlinks.
+while
+ APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
+ [ -h "$app_path" ]
+do
+ ls=$( ls -ld "$app_path" )
+ link=${ls#*' -> '}
+ case $link in #(
+ /*) app_path=$link ;; #(
+ *) app_path=$APP_HOME$link ;;
+ esac
+done
-APP_NAME="Gradle"
-APP_BASE_NAME=`basename "$0"`
+# This is normally unused
+# shellcheck disable=SC2034
+APP_BASE_NAME=${0##*/}
+# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
+APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
-MAX_FD="maximum"
+MAX_FD=maximum
-warn ( ) {
+warn () {
echo "$*"
-}
+} >&2
-die ( ) {
+die () {
echo
echo "$*"
echo
exit 1
-}
+} >&2
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
-case "`uname`" in
- CYGWIN* )
- cygwin=true
- ;;
- Darwin* )
- darwin=true
- ;;
- MINGW* )
- msys=true
- ;;
-esac
-platform_suffix="x86"
-case "$(arch)" in
- arm64* )
- platform_suffix="arm64"
+nonstop=false
+case "$( uname )" in #(
+ CYGWIN* ) cygwin=true ;; #(
+ Darwin* ) darwin=true ;; #(
+ MSYS* | MINGW* ) msys=true ;; #(
+ NONSTOP* ) nonstop=true ;;
esac
-# Attempt to set APP_HOME
-# Resolve links: $0 may be a link
-PRG="$0"
-# Need this for relative symlinks.
-while [ -h "$PRG" ] ; do
- ls=`ls -ld "$PRG"`
- link=`expr "$ls" : '.*-> \(.*\)$'`
- if expr "$link" : '/.*' > /dev/null; then
- PRG="$link"
- else
- PRG=`dirname "$PRG"`"/$link"
- fi
-done
-SAVED="`pwd`"
-cd "`dirname \"$PRG\"`/" >/dev/null
-APP_HOME="`pwd -P`"
-cd "$SAVED" >/dev/null
-
-CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
-
-# --------- androidx specific code needed for lint and java. ------------------
-
-# Pick the correct fullsdk for this OS.
-if [ $darwin == "true" ]; then
- plat="darwin"
-else
- plat="linux"
-fi
-# Tests for lint checks default to using sdk defined by this variable. This removes a lot of
-# setup from each lint module.
-export ANDROID_HOME="$APP_HOME/../../prebuilts/fullsdk-$plat"
-# override JAVA_HOME, because CI machines have it and it points to very old JDK
-export ANDROIDX_JDK21="$APP_HOME/../../prebuilts/jdk/jdk21/$plat-$platform_suffix"
-export JAVA_HOME=$ANDROIDX_JDK21
-export STUDIO_GRADLE_JDK=$JAVA_HOME
-# Warn developers if they try to build top level project without the full checkout
-[ ! -d "$JAVA_HOME" ] && echo "Failed to find: $JAVA_HOME
-
-Typically, this means either:
-1. You are using the standalone AndroidX checkout, e.g. GitHub, which only supports
- building a subset of projects. See CONTRIBUTING.md for details.
-2. You are using the repo checkout, but the last repo sync failed. Use repo status
- to check for projects which are partially-synced, e.g. showing ***NO BRANCH***." && exit -1
-
-# Creates/overwrites local.properties with sdk.dir and cmake.dir to avoid invalidating configuration cache
-$APP_HOME/development/write_sdk_path.sh
-
-# ----------------------------------------------------------------------------
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
- JAVACMD="$JAVA_HOME/jre/sh/java"
+ JAVACMD=$JAVA_HOME/jre/sh/java
else
- JAVACMD="$JAVA_HOME/bin/java"
+ JAVACMD=$JAVA_HOME/bin/java
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
@@ -145,373 +131,118 @@ Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
- JAVACMD="java"
- which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+ JAVACMD=java
+ if ! command -v java >/dev/null 2>&1
+ then
+ die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
-fi
-
-# Increase the maximum file descriptors if we can.
-if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
- MAX_FD_LIMIT=`ulimit -H -n`
- if [ $? -eq 0 ] ; then
- if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
- MAX_FD="$MAX_FD_LIMIT"
- fi
- ulimit -n $MAX_FD
- if [ $? -ne 0 ] ; then
- warn "Could not set maximum file descriptor limit: $MAX_FD"
- fi
- else
- warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
fi
fi
-# For Darwin, add options to specify how the application appears in the dock
-if $darwin; then
- GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
-fi
-
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin ; then
- APP_HOME=`cygpath --path --mixed "$APP_HOME"`
- CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
- JAVACMD=`cygpath --unix "$JAVACMD"`
-
- # We build the pattern for arguments to be converted via cygpath
- ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
- SEP=""
- for dir in $ROOTDIRSRAW ; do
- ROOTDIRS="$ROOTDIRS$SEP$dir"
- SEP="|"
- done
- OURCYGPATTERN="(^($ROOTDIRS))"
- # Add a user-defined pattern to the cygpath arguments
- if [ "$GRADLE_CYGPATTERN" != "" ] ; then
- OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
- fi
- # Now convert the arguments - kludge to limit ourselves to /bin/sh
- i=0
- for arg in "$@" ; do
- CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
- CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
-
- if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
- eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
- else
- eval `echo args$i`="\"$arg\""
- fi
- i=$((i+1))
- done
- case $i in
- (0) set -- ;;
- (1) set -- "$args0" ;;
- (2) set -- "$args0" "$args1" ;;
- (3) set -- "$args0" "$args1" "$args2" ;;
- (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
- (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
- (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
- (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
- (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
- (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+# Increase the maximum file descriptors if we can.
+if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
+ case $MAX_FD in #(
+ max*)
+ # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
+ # shellcheck disable=SC2039,SC3045
+ MAX_FD=$( ulimit -H -n ) ||
+ warn "Could not query maximum file descriptor limit"
+ esac
+ case $MAX_FD in #(
+ '' | soft) :;; #(
+ *)
+ # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
+ # shellcheck disable=SC2039,SC3045
+ ulimit -n "$MAX_FD" ||
+ warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
fi
-# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
-function splitJvmOpts() {
- JVM_OPTS=("$@")
-}
-eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
-JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+# Collect all arguments for the java command, stacking in reverse order:
+# * args from the command line
+# * the main class name
+# * -classpath
+# * -D...appname settings
+# * --module-path (only if needed)
+# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
-#TODO: Remove HOME_SYSTEM_PROPERTY_ARGUMENT if https://github.com/gradle/gradle/issues/11433 gets fixed
-HOME_SYSTEM_PROPERTY_ARGUMENT=""
-if [ "$GRADLE_USER_HOME" != "" ]; then
- HOME_SYSTEM_PROPERTY_ARGUMENT="-Duser.home=$GRADLE_USER_HOME"
-fi
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if "$cygwin" || "$msys" ; then
+ APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
-if [[ " ${@} " =~ " --clean " ]]; then
- cleanCaches=true
-else
- cleanCaches=false
-fi
+ JAVACMD=$( cygpath --unix "$JAVACMD" )
-if [[ " ${@} " =~ " --no-ci " ]]; then
- disableCi=true
-else
- disableCi=false
-fi
-
-# Expand some arguments
-for compact in "--ci" "--strict" "--clean" "--no-ci"; do
- expanded=""
- if [ "$compact" == "--ci" ]; then
- if [ "$disableCi" == "false" ]; then
- expanded="--strict\
- --stacktrace\
- -Pandroidx.summarizeStderr\
- -Pandroidx.enableAffectedModuleDetection\
- -Pandroidx.printTimestamps\
- --no-watch-fs\
- -Pandroidx.highMemory\
- --profile"
- fi
- fi
- if [ "$compact" == "--strict" ]; then
- if [[ " ${@} " =~ " -Pandroidx.useMaxDepVersions " ]]; then
- expanded="-Pandroidx.validateNoUnrecognizedMessages"
- else
- expanded="-Pandroidx.validateNoUnrecognizedMessages\
- -Pandroidx.verifyUpToDate"
- fi
- if [ "$USE_ANDROIDX_REMOTE_BUILD_CACHE" == "" -o "$USE_ANDROIDX_REMOTE_BUILD_CACHE" == "false" ]; then
- expanded="$expanded --offline"
- fi
- fi
- # if compact is something else then we parsed the argument above but
- # still have to remove it (expanded == "") to avoid confusing Gradle
-
- # check whether this particular compat argument was passed (and therefore needs expansion)
- if [[ " ${@} " =~ " $compact " ]]; then
- # Expand an individual argument
- # Start by making a copy of our list of arguments and iterating through the copy
- for arg in "$@"; do
- # Remove this argument from our list of arguments.
- # By the time we've completed this loop, we will have removed the original copy of
- # each argument, and potentially re-added a new copy or an expansion of each.
- shift
- # Determine whether to expand this argument
- if [ "$arg" == "$compact" ]; then
- # Add the expansion to our arguments
- set -- "$@" $expanded
- if [ "$expanded" != "" ]; then
- echo "gradlew expanded '$compact' into '$expanded'"
- echo
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ for arg do
+ if
+ case $arg in #(
+ -*) false ;; # don't mess with options #(
+ /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
+ [ -e "$t" ] ;; #(
+ *) false ;;
+ esac
+ then
+ arg=$( cygpath --path --ignore --mixed "$arg" )
fi
- # We avoid re-adding this argument itself back into the list for two reasons:
- # 1. This argument might not be directly understood by Gradle
- # 2. We want to enforce that all behaviors enabled by this flag can be toggled independently,
- # so we don't want it to be easy to inadvertently check for the presence of this flag
- # specifically
- else
- # Add this argument back into our arguments
- set -- "$@" "$arg"
- fi
+ # Roll the args list around exactly as many times as the number of
+ # args, so each arg winds up back in the position where it started, but
+ # possibly modified.
+ #
+ # NB: a `for` loop captures its iteration list before it begins, so
+ # changing the positional parameters here affects neither the number of
+ # iterations, nor the values presented in `arg`.
+ shift # remove old arg
+ set -- "$@" "$arg" # push replacement arg
done
- fi
-done
-
-# workaround for https://github.com/gradle/gradle/issues/18386
-if [[ " ${@} " =~ " --profile " ]]; then
- mkdir -p reports
-fi
-
-raiseMemory=false
-if [[ " ${@} " =~ " -Pandroidx.highMemory " ]]; then
- raiseMemory=true
fi
-if [[ " ${@} " =~ " -Pandroidx.lowMemory " ]]; then
- if [ "$raiseMemory" == "true" ]; then
- echo "androidx.lowMemory overriding androidx.highMemory"
- echo
- fi
- raiseMemory=false
-fi
-
-if [ "$raiseMemory" == "true" ]; then
- # Set the initial heap size to match the max heap size,
- # by replacing a string like "-Xmx1g" with one like "-Xms1g -Xmx1g"
- MAX_MEM=38g
- # First sed command replaces Gradle daemon -Xmx and second replaces Kotlin compliler deamon -Xmx
- ORG_GRADLE_JVMARGS="$(echo $ORG_GRADLE_JVMARGS | sed "s/-Xmx\([^ ]*\)/-Xms$MAX_MEM -Xmx$MAX_MEM/" | sed "s/,-Xmx\([^ ]*\)/,-Xms$MAX_MEM,-Xmx$MAX_MEM/")"
-
- # Increase the compiler cache size: b/260643754 . Remove when updating to JDK 20 ( https://bugs.openjdk.org/browse/JDK-8295724 )
- ORG_GRADLE_JVMARGS="$(echo $ORG_GRADLE_JVMARGS | sed "s|$| -XX:ReservedCodeCacheSize=576M|")"
-fi
-
-# check whether the user has requested profiling via yourkit
-yourkitArgPrefix="androidx.profile.yourkitAgentPath"
-yourkitAgentPath=""
-if [[ " ${@}" =~ " -P$yourkitArgPrefix" ]]; then
- for arg in "$@"; do
- if echo "$arg" | grep "${yourkitArgPrefix}=" >/dev/null; then
- yourkitAgentPath="$(echo "$arg" | sed "s/-P${yourkitArgPrefix}=//")"
- fi
- done
- if [ "$yourkitAgentPath" == "" ]; then
- echo "Error: $yourkitArgPrefix must be set to the path of the YourKit Java agent" >&2
- exit 1
- fi
- if [ ! -e "$yourkitAgentPath" ]; then
- echo "Error: $yourkitAgentPath does not exist" >&2
- exit 1
- fi
- # add the agent to the path
- export _JAVA_OPTIONS="$_JAVA_OPTIONS -agentpath:$yourkitAgentPath"
- # add arguments
- set -- "$@" --no-daemon --rerun-tasks
- # lots of blank lines because these messages are important
- echo
- echo
- echo
- echo
- echo
- # suggest --clean
- if [ "$cleanCaches" == "false" ]; then
- echo "When setting $yourkitArgPrefix you may also want to pass --clean"
- fi
- COLOR_YELLOW="\u001B[33m"
- COLOR_CLEAR="\u001B[0m"
- echo -e "${COLOR_YELLOW}Also be sure to start the YourKit user interface and connect to the appropriate Java process (probably the Gradle Daemon)${COLOR_CLEAR}"
- echo
- echo
- echo
- echo
- echo
-fi
-
-if [[ " ${@} " =~ " --scan " ]]; then
- if [[ " ${@} " =~ " --offline " ]]; then
- echo "--scan incompatible with --offline"
- echo "you could try --no-ci"
- exit 1
- fi
-fi
-
-function removeCaches() {
- rm -rf $SCRIPT_PATH/.gradle
- rm -rf $SCRIPT_PATH/buildSrc/.gradle
- rm -f $SCRIPT_PATH/local.properties
- if [ "$GRADLE_USER_HOME" != "" ]; then
- rm -rf "$GRADLE_USER_HOME"
- else
- rm -rf ~/.gradle
- fi
- # https://github.com/gradle/gradle/issues/18386
- rm -rf $SCRIPT_PATH/reports
- rm -rf $SCRIPT_PATH/build
- rm -rf $OUT_DIR
-}
-
-# Move any preexisting build scan to make room for a new one
-# After moving a build scan several times it eventually gets deleted
-function rotateBuildScans() {
- filePrefix="$1"
- iPlus1="10"
- for i in $(seq 9 -1 1); do
- mv "${filePrefix}.${i}.zip" "${filePrefix}.${iPlus1}.zip" 2>/dev/null || true
- iPlus1=$i
- done
- mv ${filePrefix}.zip "${filePrefix}.1.zip" 2>/dev/null || true
-}
-
-function runGradle() {
- if [ "$TMPDIR" != "" ]; then
- mkdir -p "$TMPDIR"
- TMPDIR_ARG="-Djava.io.tmpdir=$TMPDIR"
- fi
-
- processOutput=false
- if [[ " ${@} " =~ " -Pandroidx.validateNoUnrecognizedMessages " ]]; then
- processOutput=true
- fi
- if [[ " ${@} " =~ " -Pandroidx.summarizeStderr " ]]; then
- processOutput=true
- fi
- if [[ "${@} " =~ " -Pandroidx.printTimestamps " ]]; then
- processOutput=true
- fi
- # Skip build_log_processor as we are re-running an already successful build but with --dry-run so we can cache it
- if [[ "${@} " =~ " --dry-run" && $ENABLE_PRESUBMIT_COMPATIBLE_CC_STORE == "true" ]]; then
- processOutput=false
- fi
-
- if [ "$processOutput" == "true" ]; then
- wrapper="$SCRIPT_PATH/development/build_log_processor.sh"
- else
- wrapper=""
- fi
-
- RETURN_VALUE=0
- set -- "$@" -Dorg.gradle.projectcachedir="$OUT_DIR/gradle-project-cache"
- # Disabled in Studio until these errors become shown (b/268380971) or computed more quickly (https://github.com/gradle/gradle/issues/23272)
- if [[ " ${@} " =~ " --dependency-verification=" ]]; then
- VERIFICATION_ARGUMENT="" # already specified by caller
- else
- VERIFICATION_ARGUMENT=--dependency-verification=strict
- fi
- if $wrapper "$JAVACMD" "${JVM_OPTS[@]}" $TMPDIR_ARG -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain $HOME_SYSTEM_PROPERTY_ARGUMENT $TMPDIR_ARG $VERIFICATION_ARGUMENT "$ORG_GRADLE_JVMARGS" "$@"; then
- RETURN_VALUE=0
- else
- # Print AndroidX-specific help message if build fails
- # Have to do this build-failure detection in gradlew rather than in build.gradle
- # so that this message still prints even if buildSrc itself fails
- echo
- echo For help with unexpected failures, see development/diagnose-build-failure/README.md
- echo
- RETURN_VALUE=1
- fi
-
- # If the caller specified where to save data, then also save the build scan data
- if [ "$DIST_DIR" != "" ]; then
- if [ "$GRADLE_USER_HOME" != "" ]; then
- scanDir="$GRADLE_USER_HOME/build-scan-data"
- if [ -e "$scanDir" ]; then
- if [[ "$DISALLOW_TASK_EXECUTION" != "" ]]; then
- zipPrefix="$DIST_DIR/scan-up-to-date"
- else
- zipPrefix="$DIST_DIR/scan"
- fi
- rotateBuildScans "$zipPrefix"
- zipPath="${zipPrefix}.zip"
- cd "$GRADLE_USER_HOME/build-scan-data"
- zip -q -r "$zipPath" .
- cd -
- fi
- fi
- fi
- return $RETURN_VALUE
-}
-
-if [ "$cleanCaches" == true ]; then
- echo "IF ./gradlew --clean FIXES YOUR BUILD; OPEN A BUG."
- echo "In nearly all cases, it should not be necessary to run a clean build."
- echo
- # one case where it is convenient to have a clean build is for double-checking that a build failure isn't due to an incremental build failure
- # another case where it is convenient to have a clean build is for performance testing
- # another case where it is convenient to have a clean build is when you're modifying the build and may have introduced some errors but haven't shared your changes yet (at which point you should have fixed the errors)
-
- echo "Stopping Gradle daemons"
- runGradle --stop || true
- echo
-
- backupDir=~/androidx-build-state-backup
- ./development/diagnose-build-failure/impl/backup-state.sh "$backupDir" --move # prints that it is saving state into this dir"
-
- echo "To restore this state later, run:"
- echo
- echo " ./development/diagnose-build-failure/impl/restore-state.sh $backupDir"
- echo
- echo "Running Gradle"
- echo
-fi
-
-if [[ "$DISALLOW_TASK_EXECUTION" != "" ]]; then
- echo "Setting 'DISALLOW_TASK_EXECUTION' directly is forbidden. Did you mean -Pandroidx.verifyUpToDate ?"
- echo "See TaskUpToDateValidator.java for more information"
- exit 1
-fi
-
-runGradle "$@"
-# Check whether we were given the "-Pandroidx.verifyUpToDate" argument
-if [[ " ${@} " =~ " -Pandroidx.verifyUpToDate " ]]; then
- # Re-run Gradle, and find all tasks that are unexpectly out of date
- if ! DISALLOW_TASK_EXECUTION=true runGradle "$@" --continue; then
- echo >&2
- echo "TaskUpToDateValidator's second build failed. To reproduce, try running './gradlew -Pandroidx.verifyUpToDate '" >&2
- exit 1
- fi
-fi
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+
+# Collect all arguments for the java command:
+# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
+# and any embedded shellness will be escaped.
+# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
+# treated as '${Hostname}' itself on the command line.
+
+set -- \
+ "-Dorg.gradle.appname=$APP_BASE_NAME" \
+ -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \
+ "$@"
+
+# Stop when "xargs" is not available.
+if ! command -v xargs >/dev/null 2>&1
+then
+ die "xargs is not available"
+fi
+
+# Use "xargs" to parse quoted args.
+#
+# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
+#
+# In Bash we could simply go:
+#
+# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
+# set -- "${ARGS[@]}" "$@"
+#
+# but POSIX shell has neither arrays nor command substitution, so instead we
+# post-process each arg (as a line of input to sed) to backslash-escape any
+# character that might be a shell metacharacter, then use eval to reverse
+# that process (while maintaining the separation between arguments), and wrap
+# the whole thing up as a single "set" statement.
+#
+# This will of course break if any of these variables contains a newline or
+# an unmatched quote.
+#
+
+eval "set -- $(
+ printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
+ xargs -n1 |
+ sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
+ tr '\n' ' '
+ )" '"$@"'
+
+exec "$JAVACMD" "$@"
diff --git a/gradlew.bat b/gradlew.bat
new file mode 100644
index 0000000000000..e509b2dd8fe55
--- /dev/null
+++ b/gradlew.bat
@@ -0,0 +1,93 @@
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem https://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+@rem SPDX-License-Identifier: Apache-2.0
+@rem
+
+@if "%DEBUG%"=="" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%"=="" set DIRNAME=.
+@rem This is normally unused
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if %ERRORLEVEL% equ 0 goto execute
+
+echo. 1>&2
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
+echo. 1>&2
+echo Please set the JAVA_HOME variable in your environment to match the 1>&2
+echo location of your Java installation. 1>&2
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto execute
+
+echo. 1>&2
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
+echo. 1>&2
+echo Please set the JAVA_HOME variable in your environment to match the 1>&2
+echo location of your Java installation. 1>&2
+
+goto fail
+
+:execute
+@rem Setup the command line
+
+
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
+
+:end
+@rem End local scope for the variables with windows NT shell
+if %ERRORLEVEL% equ 0 goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+set EXIT_CODE=%ERRORLEVEL%
+if %EXIT_CODE% equ 0 set EXIT_CODE=1
+if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
+exit /b %EXIT_CODE%
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/lifecycle/lifecycle-common-compatibility-stub/build.gradle b/lifecycle/lifecycle-common-compatibility-stub/build.gradle
index 27166a4948fe1..1c40b751d88f3 100644
--- a/lifecycle/lifecycle-common-compatibility-stub/build.gradle
+++ b/lifecycle/lifecycle-common-compatibility-stub/build.gradle
@@ -14,9 +14,8 @@
* limitations under the License.
*/
-import androidx.build.LibraryType
+import androidx.build.SoftwareType
import androidx.build.PlatformIdentifier
-import org.jetbrains.kotlin.gradle.dsl.ExplicitApiMode
plugins {
id("AndroidXPlugin")
@@ -28,12 +27,14 @@ androidXMultiplatform {
mac()
linux()
ios()
+ watchosArm64()
+ watchosArm32()
+ watchosX64()
+ watchosSimulatorArm64()
+ tvos()
+ mingwX64()
js()
- wasm()
-
- kotlin {
- explicitApi = ExplicitApiMode.Strict
- }
+ wasmJs()
defaultPlatform(PlatformIdentifier.JVM)
@@ -49,25 +50,9 @@ androidXMultiplatform {
}
}
-kotlin {
- watchosArm64()
- watchosArm32()
- watchosX64()
- watchosSimulatorArm64()
- tvosArm64()
- tvosX64()
- tvosSimulatorArm64()
- mingwX64()
-}
-
androidx {
name = "Lifecycle-Common"
- type = LibraryType.PUBLISHED_LIBRARY
+ type = SoftwareType.PUBLISHED_LIBRARY
inceptionYear = "2017"
description = "Android Lifecycle-Common"
}
-
-java {
- sourceCompatibility = JavaVersion.VERSION_11
- targetCompatibility = JavaVersion.VERSION_11
-}
diff --git a/lifecycle/lifecycle-runtime-compatibility-stub/build.gradle b/lifecycle/lifecycle-runtime-compatibility-stub/build.gradle
index d240b1da3325e..9def98c481fad 100644
--- a/lifecycle/lifecycle-runtime-compatibility-stub/build.gradle
+++ b/lifecycle/lifecycle-runtime-compatibility-stub/build.gradle
@@ -14,36 +14,30 @@
* limitations under the License.
*/
-/**
- * This file was created using the `create_project.py` script located in the
- * `/development/project-creator` directory.
- *
- * Please use that script when creating a new project, rather than copying an existing project and
- * modifying its settings.
- */
-
-import androidx.build.LibraryType
+import androidx.build.SoftwareType
import androidx.build.PlatformIdentifier
-import org.jetbrains.kotlin.gradle.dsl.ExplicitApiMode
plugins {
id("AndroidXPlugin")
- id("com.android.library")
id("JetBrainsAndroidXPlugin")
}
androidXMultiplatform {
- android()
+ androidLibrary {
+ namespace = "androidx.lifecycle.runtime"
+ }
desktop()
mac()
linux()
ios()
+ watchosArm64()
+ watchosArm32()
+ watchosX64()
+ watchosSimulatorArm64()
+ tvos()
+ mingwX64()
js()
- wasm()
-
- kotlin {
- explicitApi = ExplicitApiMode.Strict
- }
+ wasmJs()
defaultPlatform(PlatformIdentifier.ANDROID)
@@ -61,24 +55,9 @@ androidXMultiplatform {
}
}
-kotlin {
- watchosArm64()
- watchosArm32()
- watchosX64()
- watchosSimulatorArm64()
- tvosArm64()
- tvosX64()
- tvosSimulatorArm64()
- mingwX64()
-}
-
-android {
- namespace "androidx.lifecycle.runtime"
-}
-
androidx {
name = "Lifecycle Runtime"
- type = LibraryType.PUBLISHED_LIBRARY
- inceptionYear "2017"
- description "Android Lifecycle Runtime"
+ type = SoftwareType.PUBLISHED_LIBRARY
+ inceptionYear = "2017"
+ description = "Android Lifecycle Runtime"
}
diff --git a/lifecycle/lifecycle-runtime-compose-compatibility-stub/api/desktop/lifecycle-runtime-compose.api b/lifecycle/lifecycle-runtime-compose-compatibility-stub/api/desktop/lifecycle-runtime-compose.api
new file mode 100644
index 0000000000000..e69de29bb2d1d
diff --git a/lifecycle/lifecycle-runtime-compose-compatibility-stub/build.gradle b/lifecycle/lifecycle-runtime-compose-compatibility-stub/build.gradle
index 3f896e2a94f10..ef9aaf4b45962 100644
--- a/lifecycle/lifecycle-runtime-compose-compatibility-stub/build.gradle
+++ b/lifecycle/lifecycle-runtime-compose-compatibility-stub/build.gradle
@@ -14,46 +14,33 @@
* limitations under the License.
*/
-/**
- * This file was created using the `create_project.py` script located in the
- * `/development/project-creator` directory.
- *
- * Please use that script when creating a new project, rather than copying an existing project and
- * modifying its settings.
- */
-
-import androidx.build.AndroidXComposePlugin
-import androidx.build.LibraryType
-import org.jetbrains.androidx.build.JetBrainsAndroidXPlugin
+import androidx.build.SoftwareType
+import androidx.build.PlatformIdentifier
plugins {
id("AndroidXPlugin")
- id("com.android.library")
id("AndroidXComposePlugin")
id("JetBrainsAndroidXPlugin")
}
-AndroidXComposePlugin.applyAndConfigureKotlinPlugin(project)
-JetBrainsAndroidXPlugin.applyAndConfigure(project)
-
-androidXComposeMultiplatform {
- android()
+androidXMultiplatform {
+ androidLibrary {
+ namespace = "androidx.lifecycle.runtime.compose"
+ }
desktop()
- darwin()
- js()
- wasm()
+ mingwX64()
linux()
-}
-
-kotlin {
+ mac()
+ ios()
+ tvos()
watchosArm64()
watchosArm32()
watchosX64()
watchosSimulatorArm64()
- tvosArm64()
- tvosX64()
- tvosSimulatorArm64()
- mingwX64()
+ js()
+ wasmJs()
+
+ defaultPlatform(PlatformIdentifier.ANDROID)
sourceSets {
commonMain {
@@ -73,12 +60,7 @@ kotlin {
androidx {
name = "Lifecycle Runtime Compose"
- type = LibraryType.PUBLISHED_LIBRARY
+ type = SoftwareType.PUBLISHED_LIBRARY_ONLY_USED_BY_KOTLIN_CONSUMERS
inceptionYear = "2021"
description = "Compose integration with Lifecycle"
- metalavaK2UastEnabled = true
-}
-
-android {
- namespace "androidx.lifecycle.runtime.compose"
}
diff --git a/lifecycle/lifecycle-viewmodel-compatibility-stub/build.gradle b/lifecycle/lifecycle-viewmodel-compatibility-stub/build.gradle
index 052289b10828b..5b94818647749 100644
--- a/lifecycle/lifecycle-viewmodel-compatibility-stub/build.gradle
+++ b/lifecycle/lifecycle-viewmodel-compatibility-stub/build.gradle
@@ -14,36 +14,30 @@
* limitations under the License.
*/
-/**
- * This file was created using the `create_project.py` script located in the
- * `/development/project-creator` directory.
- *
- * Please use that script when creating a new project, rather than copying an existing project and
- * modifying its settings.
- */
-
-import androidx.build.LibraryType
+import androidx.build.SoftwareType
import androidx.build.PlatformIdentifier
-import org.jetbrains.kotlin.gradle.dsl.ExplicitApiMode
plugins {
id("AndroidXPlugin")
- id("com.android.library")
id("JetBrainsAndroidXPlugin")
}
androidXMultiplatform {
- android()
+ androidLibrary {
+ namespace = "androidx.lifecycle.viewmodel"
+ }
desktop()
mac()
linux()
ios()
+ watchosArm64()
+ watchosArm32()
+ watchosX64()
+ watchosSimulatorArm64()
+ tvos()
+ mingwX64()
js()
- wasm()
-
- kotlin {
- explicitApi = ExplicitApiMode.Strict
- }
+ wasmJs()
defaultPlatform(PlatformIdentifier.ANDROID)
@@ -57,25 +51,9 @@ androidXMultiplatform {
}
}
-kotlin {
- watchosArm64()
- watchosArm32()
- watchosX64()
- watchosSimulatorArm64()
- tvosArm64()
- tvosX64()
- tvosSimulatorArm64()
- mingwX64()
-}
-
-android {
- namespace "androidx.lifecycle.viewmodel"
-}
-
androidx {
name = "Lifecycle ViewModel"
- type = LibraryType.PUBLISHED_LIBRARY
+ type = SoftwareType.PUBLISHED_LIBRARY
inceptionYear = "2017"
description = "Android Lifecycle ViewModel"
- metalavaK2UastEnabled = false
}
diff --git a/lifecycle/lifecycle-viewmodel-compose/build.gradle b/lifecycle/lifecycle-viewmodel-compose/build.gradle
index b8057c56871c8..accdcad9c46e9 100644
--- a/lifecycle/lifecycle-viewmodel-compose/build.gradle
+++ b/lifecycle/lifecycle-viewmodel-compose/build.gradle
@@ -51,10 +51,13 @@ androidXMultiplatform {
dependencies {
api(project(":lifecycle:lifecycle-common"))
api(project(":lifecycle:lifecycle-viewmodel"))
- api(project(":lifecycle:lifecycle-viewmodel-savedstate"))
api("androidx.annotation:annotation:1.9.1")
- api(project(":compose:runtime:runtime"))
- api(project(":compose:ui:ui"))
+ api("org.jetbrains.compose.runtime:runtime:1.9.3")
+
+ // Moved from platform dependencies
+ api(project(":lifecycle:lifecycle-viewmodel-savedstate"))
+ api("org.jetbrains.compose.ui:ui:1.9.3")
+
api(libs.kotlinSerializationCore)
}
}
@@ -128,6 +131,9 @@ androidXMultiplatform {
desktopTest {
dependsOn(jvmTest)
dependsOn(nonAndroidTest)
+ dependencies {
+ implementation(libs.skikoCurrentOs)
+ }
}
nativeMain {
diff --git a/lifecycle/lifecycle-viewmodel-navigation3/build.gradle b/lifecycle/lifecycle-viewmodel-navigation3/build.gradle
index eab632cd6a0e9..ecd31acf1a07b 100644
--- a/lifecycle/lifecycle-viewmodel-navigation3/build.gradle
+++ b/lifecycle/lifecycle-viewmodel-navigation3/build.gradle
@@ -48,14 +48,17 @@ androidXMultiplatform {
sourceSets {
commonMain {
dependencies {
- api("androidx.lifecycle:lifecycle-viewmodel:2.9.3")
- api("androidx.lifecycle:lifecycle-viewmodel-compose:2.9.3")
- api("androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.3")
- api("androidx.compose.runtime:runtime:1.9.0")
- api("androidx.compose.runtime:runtime-saveable:1.9.0")
- api(project(":navigation3:navigation3-runtime"))
- api("androidx.savedstate:savedstate:1.3.2")
- api("androidx.savedstate:savedstate-compose:1.3.2")
+ api(project(":lifecycle:lifecycle-viewmodel"))
+ api(project(":lifecycle:lifecycle-viewmodel-compose"))
+ def lifecycleVersion = project.findProperty('artifactRedirection.version.androidx.lifecycle')
+ api("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycleVersion")
+ api("org.jetbrains.compose.runtime:runtime:1.9.3")
+ api("org.jetbrains.compose.runtime:runtime-saveable:1.9.3")
+ def navigation3Version = project.findProperty('artifactRedirection.version.androidx.navigation3')
+ api("androidx.navigation3:navigation3-runtime:$navigation3Version")
+ def savedstateVersion = project.findProperty('artifactRedirection.version.androidx.savedstate')
+ api("androidx.savedstate:savedstate:$savedstateVersion")
+ api("androidx.savedstate:savedstate-compose:$savedstateVersion")
implementation("androidx.collection:collection:1.5.0")
}
}
diff --git a/lifecycle/lifecycle-viewmodel-savedstate-compatibility-stub/build.gradle b/lifecycle/lifecycle-viewmodel-savedstate-compatibility-stub/build.gradle
index 6fa88ebaa6b1a..55c97cbd7714d 100644
--- a/lifecycle/lifecycle-viewmodel-savedstate-compatibility-stub/build.gradle
+++ b/lifecycle/lifecycle-viewmodel-savedstate-compatibility-stub/build.gradle
@@ -14,31 +14,31 @@
* limitations under the License.
*/
-/**
- * This file was created using the `create_project.py` script located in the
- * `/development/project-creator` directory.
- *
- * Please use that script when creating a new project, rather than copying an existing project and
- * modifying its settings.
- */
-
-import androidx.build.LibraryType
+import androidx.build.SoftwareType
import androidx.build.PlatformIdentifier
plugins {
id("AndroidXPlugin")
- id("com.android.library")
id("JetBrainsAndroidXPlugin")
}
+
androidXMultiplatform {
- android()
+ androidLibrary {
+ namespace = "androidx.lifecycle.viewmodel.savedstate"
+ }
desktop()
- ios()
- linux()
mac()
+ linux()
+ ios()
+ watchosArm64()
+ watchosArm32()
+ watchosX64()
+ watchosSimulatorArm64()
+ tvos()
+ mingwX64()
js()
- wasm()
+ wasmJs()
defaultPlatform(PlatformIdentifier.ANDROID)
@@ -58,24 +58,9 @@ androidXMultiplatform {
}
}
-kotlin {
- watchosArm64()
- watchosArm32()
- watchosX64()
- watchosSimulatorArm64()
- tvosArm64()
- tvosX64()
- tvosSimulatorArm64()
- mingwX64()
-}
-
-android {
- namespace "androidx.lifecycle.viewmodel.savedstate"
-}
-
androidx {
name = "Lifecycle ViewModel with SavedState"
- type = LibraryType.PUBLISHED_LIBRARY
+ type = SoftwareType.PUBLISHED_LIBRARY
inceptionYear = "2018"
description = "Android Lifecycle ViewModel"
}
diff --git a/mpp/build.gradle.kts b/mpp/build.gradle.kts
index 7dd11520ef689..ff06fd7ddef60 100644
--- a/mpp/build.gradle.kts
+++ b/mpp/build.gradle.kts
@@ -1,6 +1,7 @@
import org.jetbrains.androidx.build.ComposePublishingTask
import org.jetbrains.androidx.build.ArtifactRedirection
import org.jetbrains.androidx.build.ComposePlatforms
+import org.jetbrains.androidx.build.ComposeProperties
import org.jetbrains.androidx.build.JetBrainsPublication
import org.jetbrains.androidx.build.artifactRedirection
import org.jetbrains.androidx.build.hasRedirection
@@ -15,21 +16,25 @@ val libraryToComponents = JetBrainsPublication.libraryToComponents
val pathToComposeComponent = libraryToComponents.values.flatten().associateBy { it.path }
val Project.composeComponent get() = pathToComposeComponent[path]
+val parsedComposeProperties = ComposeProperties(project)
+
tasks.register("publishComposeJb", ComposePublishingTask::class) {
group = "Compose Multiplatform"
repository = "MavenRepository"
+ composeProperties = parsedComposeProperties
libraries.forEach {
- libraryToComponents[it]?.forEach(::publish)
+ libraryToComponents[it]?.forEach { publish(rootProject, it) }
}
}
tasks.register("publishComposeJbToMavenLocal", ComposePublishingTask::class) {
group = "Compose Multiplatform"
repository = "MavenLocal"
+ composeProperties = parsedComposeProperties
libraries.forEach {
- libraryToComponents[it]?.forEach(::publish)
+ libraryToComponents[it]?.forEach { publish(rootProject, it) }
}
}
@@ -40,8 +45,8 @@ val libraries = project.findProperty("jetbrains.publication.libraries")
tasks.register("testDesktop") {
group = "Compose Multiplatform"
- dependsOn(allTasksWith(name = "desktopTest"))
- dependsOn(allTasksWith(name = "desktopHeadlessTest"))
+ dependsOn(allTasksForPublishingProjectsWith(name = "desktopTest"))
+ dependsOn(allTasksForPublishingProjectsWith(name = "desktopHeadlessTest"))
dependsOn(":collection:collection:jvmTest")
}
@@ -52,10 +57,8 @@ tasks.register("testWeb") {
}
val testWebJs = tasks.register("testWebJs") {
- dependsOn(":collection:collection:compileTestKotlinJs")
dependsOn(":compose:foundation:foundation:jsTest")
dependsOn(":compose:material3:material3:jsTest")
- dependsOn(":compose:runtime:runtime:jsTest")
dependsOn(":compose:ui:ui-text:jsTest")
dependsOn(":compose:ui:ui:jsTest")
dependsOn(":compose:ui:ui-test:jsTest")
@@ -64,10 +67,8 @@ val testWebJs = tasks.register("testWebJs") {
val testWebWasm = tasks.register("testWebWasm") {
// TODO: ideally we want to run all wasm tests that are possible but now we deal only with modules that have skikoTests
- dependsOn(":collection:collection:wasmJsTest")
dependsOn(":compose:foundation:foundation:wasmJsTest")
dependsOn(":compose:material3:material3:wasmJsTest")
- dependsOn(":compose:runtime:runtime:wasmJsTest")
dependsOn(":compose:ui:ui-text:wasmJsTest")
dependsOn(":compose:ui:ui:wasmJsTest")
dependsOn(":compose:ui:ui-test:wasmJsTest")
@@ -141,10 +142,10 @@ fun apiValidationTasks(suffix: String) = buildSet {
fun Iterable.filterComposePlatforms(platforms: Set) =
filterComposePlatforms(*platforms.toTypedArray())
- this += allTasksWith(name = "desktop$suffix")
+ this += allTasksForPublishingProjectsWith(name = "desktop$suffix")
.filterComposePlatforms(ComposePlatforms.Desktop)
- this += allTasksWith(name = "android$suffix")
+ this += allTasksForPublishingProjectsWith(name = "android$suffix")
.filterComposePlatforms(ComposePlatforms.ANDROID)
val klibPlatforms = if (System.getProperty("os.name") == "Mac OS X") {
@@ -152,13 +153,17 @@ fun apiValidationTasks(suffix: String) = buildSet {
} else {
ComposePlatforms.GENERATE_KLIB - ComposePlatforms.DARWIN
}
- this += allTasksWith(name = "klib$suffix")
+ this += allTasksForPublishingProjectsWith(name = "klib$suffix")
.filterComposePlatforms(klibPlatforms)
}
-fun allTasksWith(name: String): List =
+fun allTasksForPublishingProjectsWith(name: String): List =
rootProject.subprojects.mapNotNull { project ->
- project.tasks.findByName(name)
+ if (JetBrainsPublication.shouldPublish(project)) {
+ project.tasks.findByName(name)
+ } else {
+ null
+ }
}
// ./gradlew printAllArtifactRedirectionVersions -PfilterProjectPath=lifecycle
diff --git a/mpp/karma.config.d/js/static/compose_context.html b/mpp/karma.config.d/js/static/compose_context.html
index ebbb882c6623c..6a9994c8e9900 100644
--- a/mpp/karma.config.d/js/static/compose_context.html
+++ b/mpp/karma.config.d/js/static/compose_context.html
@@ -39,7 +39,7 @@
%SCRIPTS%