diff --git a/.github/workflows/gradle-plugin.yml b/.github/workflows/gradle-plugin.yml
index d7c48a89fd6..6097591bd83 100644
--- a/.github/workflows/gradle-plugin.yml
+++ b/.github/workflows/gradle-plugin.yml
@@ -17,8 +17,8 @@ jobs:
fail-fast: false
matrix:
os: ['ubuntu-24.04', 'macos-15-xlarge', 'windows-2022']
- gradle: ['8.7', '9.0.0']
- agp: ['8.6.0', '8.9.0', '9.0.0-alpha01']
+ gradle: ['8.13', '9.2.0']
+ agp: ['8.11.2', '8.12.3', '9.0.0-alpha13']
runs-on: ${{ matrix.os }}
steps:
- name: Checkout Repository
diff --git a/gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/resources/MultimoduleResources.kt b/gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/resources/MultimoduleResources.kt
index b34fc9accc8..d8acd6e0267 100644
--- a/gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/resources/MultimoduleResources.kt
+++ b/gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/resources/MultimoduleResources.kt
@@ -1,6 +1,6 @@
package org.jetbrains.compose.resources
-import com.android.build.api.dsl.KotlinMultiplatformAndroidTarget
+import com.android.build.api.dsl.KotlinMultiplatformAndroidLibraryTarget
import org.gradle.api.Project
import org.gradle.api.provider.Provider
import org.gradle.api.tasks.SourceSet
@@ -107,7 +107,7 @@ private fun KotlinTarget.skipResourcesConfiguration(): Boolean = when {
@Suppress("UnstableApiUsage")
private fun KotlinTarget.isMultiplatformAndroidTarget(): Boolean = try {
- this is KotlinMultiplatformAndroidTarget
+ this is KotlinMultiplatformAndroidLibraryTarget
} catch (e: NoClassDefFoundError) {
false
}
diff --git a/gradle-plugins/compose/src/test/kotlin/org/jetbrains/compose/test/tests/integration/ResourcesTest.kt b/gradle-plugins/compose/src/test/kotlin/org/jetbrains/compose/test/tests/integration/ResourcesTest.kt
index bc451f161bc..49d582e2415 100644
--- a/gradle-plugins/compose/src/test/kotlin/org/jetbrains/compose/test/tests/integration/ResourcesTest.kt
+++ b/gradle-plugins/compose/src/test/kotlin/org/jetbrains/compose/test/tests/integration/ResourcesTest.kt
@@ -1,8 +1,6 @@
package org.jetbrains.compose.test.tests.integration
-import org.gradle.util.GradleVersion
import org.jetbrains.compose.desktop.application.internal.ComposeProperties
-import org.jetbrains.compose.internal.Version
import org.jetbrains.compose.internal.utils.Arch
import org.jetbrains.compose.internal.utils.OS
import org.jetbrains.compose.internal.utils.currentArch
@@ -249,13 +247,6 @@ class ResourcesTest : GradlePluginTestBase() {
with(
testProject("misc/kmpResourcePublication", environment)
) {
- if (environment.parsedGradleVersion < GradleVersion.version("7.6")) {
- val output = gradle(":tasks").output
- output.contains("Compose resources publication requires Gradle >= 7.6")
- output.contains("Current Kotlin Gradle Plugin is ${environment.gradleVersion}")
- return@with
- }
-
gradle(":cmplib:publishAllPublicationsToMavenRepository").checks {
check.logContains("Configure multi-module compose resources")
@@ -333,22 +324,16 @@ class ResourcesTest : GradlePluginTestBase() {
}
@Test
- fun testNewAgpResources() {
- Assumptions.assumeTrue(defaultTestEnvironment.parsedGradleVersion >= GradleVersion.version("8.10.2"))
-
- val agpVersion = Version.fromString(defaultTestEnvironment.agpVersion)
- Assumptions.assumeTrue(agpVersion >= Version.fromString("8.8.0-alpha08"))
-
- with(testProject("misc/newAgpResources", defaultTestEnvironment)) {
+ fun testAndroidAppWithResources() {
+ //FIXME delete the filter when https://issuetracker.google.com/456657404 is fixed
+ Assumptions.assumeFalse {
+ currentOS == OS.Windows && defaultTestEnvironment.gradleVersion.contains("9.0.0")
+ }
+ with(testProject("misc/androidAppWithResources", defaultTestEnvironment)) {
gradle(":appModule:assembleDebug").checks {
- if (agpVersion >= Version.fromString("8.10")) {
- check.logContains("Configure compose resources with KotlinMultiplatformAndroidComponentsExtension")
- } else {
- check.logContains("Configure compose resources with outdated KotlinMultiplatformAndroidComponentsExtension < 8.10")
- }
+ check.logContains("Configure compose resources with KotlinMultiplatformAndroidComponentsExtension")
val resourcesFiles = sequenceOf(
- "composeResources/newagpresources.appmodule.generated.resources/values/strings.commonMain.cvr",
"composeResources/newagpresources.featuremodule.generated.resources/values/strings.commonMain.cvr"
)
val apk = file("appModule/build/outputs/apk/debug/appModule-debug.apk")
@@ -394,7 +379,6 @@ class ResourcesTest : GradlePluginTestBase() {
}
}
-
@Test
fun testJvmBuildWithResourcesCustomization(): Unit = with(testProject("misc/commonResources")) {
file("build.gradle.kts").appendText(
@@ -414,92 +398,85 @@ class ResourcesTest : GradlePluginTestBase() {
}
@Test
- fun testFinalArtefacts(): Unit = with(testProject("misc/commonResources")) {
- //https://developer.android.com/build/build-variants?utm_source=android-studio#product-flavors
- file("build.gradle.kts").appendText(
- """
-
- kotlin {
- js {
- browser {
- testTask(Action {
- enabled = false
- })
- }
- binaries.executable()
- }
- }
-
- android {
- flavorDimensions += "version"
- productFlavors {
- create("demo")
- create("full")
- }
- }
- """.trimIndent()
- )
- file("src/androidDemoDebug/composeResources/files/platform.txt").writeNewFile("android demo-debug")
- file("src/androidDemoRelease/composeResources/files/platform.txt").writeNewFile("android demo-release")
- file("src/androidFullDebug/composeResources/files/platform.txt").writeNewFile("android full-debug")
- file("src/androidFullRelease/composeResources/files/platform.txt").writeNewFile("android full-release")
- file("src/desktopMain/composeResources/files/platform.txt").writeNewFile("desktop")
- file("src/jsMain/composeResources/files/platform.txt").writeNewFile("js")
-
+ fun testFinalArtefacts(): Unit = with(testProject("misc/fullTargetsAppWithResources")) {
val commonResourcesDir = file("src/commonMain/composeResources")
- val repackDir = "composeResources/app.group.resources_test.generated.resources"
+ val repackDir = "composeResources/multiplatform_app.sharedui.generated.resources"
val commonResourcesFiles = commonResourcesDir.walkTopDown()
.filter { !it.isDirectory && !it.isHidden }
.getConvertedResources(commonResourcesDir, repackDir)
- gradle("build").checks {
- check.taskSuccessful(":copyDemoDebugComposeResourcesToAndroidAssets")
- check.taskSuccessful(":copyDemoReleaseComposeResourcesToAndroidAssets")
- check.taskSuccessful(":copyFullDebugComposeResourcesToAndroidAssets")
- check.taskSuccessful(":copyFullReleaseComposeResourcesToAndroidAssets")
-
- getAndroidApk("demo", "debug", "Resources-Test").let { apk ->
- checkResourcesZip(apk, commonResourcesFiles, true)
- assertEquals(
- "android demo-debug",
- readFileInZip(apk, "assets/$repackDir/files/platform.txt").decodeToString()
- )
- }
- getAndroidApk("demo", "release", "Resources-Test").let { apk ->
- checkResourcesZip(apk, commonResourcesFiles, true)
- assertEquals(
- "android demo-release",
- readFileInZip(apk, "assets/$repackDir/files/platform.txt").decodeToString()
- )
- }
- getAndroidApk("full", "debug", "Resources-Test").let { apk ->
- checkResourcesZip(apk, commonResourcesFiles, true)
- assertEquals(
- "android full-debug",
- readFileInZip(apk, "assets/$repackDir/files/platform.txt").decodeToString()
- )
- }
- getAndroidApk("full", "release", "Resources-Test").let { apk ->
- checkResourcesZip(apk, commonResourcesFiles, true)
- assertEquals(
- "android full-release",
- readFileInZip(apk, "assets/$repackDir/files/platform.txt").decodeToString()
- )
+ //FIXME delete the filter when https://issuetracker.google.com/456657404 is fixed
+ val skipAndroidCheck = currentOS == OS.Windows && defaultTestEnvironment.gradleVersion.contains("9.0.0")
+ if (!skipAndroidCheck) {
+ gradle(":androidApp:assemble").checks {
+ check.taskSuccessful(":sharedUI:copyAndroidMainComposeResourcesToAndroidAssets")
+
+ listOf(
+ "androidApp/build/outputs/apk/demo/debug/androidApp-demo-debug.apk",
+ "androidApp/build/outputs/apk/full/debug/androidApp-full-debug.apk",
+ "androidApp/build/outputs/apk/demo/release/androidApp-demo-release.apk",
+ "androidApp/build/outputs/apk/full/release/androidApp-full-release.apk"
+ ).forEach { path ->
+ val apk = file(path)
+ checkResourcesZip(apk, commonResourcesFiles, true)
+ assertEquals(
+ "android",
+ readFileInZip(apk, "assets/$repackDir/files/platform.txt").decodeToString()
+ )
+ }
}
+ }
- file("build/libs/Resources-Test-desktop.jar").let { jar ->
+ gradle(":desktopApp:build").checks {
+ check.taskSuccessful(":sharedUI:jvmProcessResources")
+
+ file("sharedUI/build/libs/sharedUI-jvm.jar").let { jar ->
checkResourcesZip(jar, commonResourcesFiles, false)
assertEquals(
"desktop",
readFileInZip(jar, "$repackDir/files/platform.txt").decodeToString()
)
}
+ }
- val jsBuildDir = file("build/dist/js/productionExecutable")
+ gradle(":webApp:build").checks {
+ check.taskSuccessful(":sharedUI:wasmJsCopyHierarchicalMultiplatformResources")
+ check.taskSuccessful(":sharedUI:jsCopyHierarchicalMultiplatformResources")
+
+ val jsBuildDir = file("webApp/build/dist/js/productionExecutable")
commonResourcesFiles.forEach { res ->
assertTrue(jsBuildDir.resolve(res).exists())
}
assertEquals("js", jsBuildDir.resolve("$repackDir/files/platform.txt").readText())
+
+ val wasmJsBuildDir = file("webApp/build/dist/wasmJs/productionExecutable")
+ commonResourcesFiles.forEach { res ->
+ assertTrue(wasmJsBuildDir.resolve(res).exists())
+ }
+ assertEquals("wasm", wasmJsBuildDir.resolve("$repackDir/files/platform.txt").readText())
+ }
+
+
+ if (currentOS == OS.MacOS) {
+ gradle(":sharedUI:assembleSharedUIDebugXCFramework").checks {
+ check.taskSuccessful(":sharedUI:iosArm64AggregateResources")
+ check.taskSuccessful(":sharedUI:iosSimulatorArm64AggregateResources")
+ check.taskSuccessful(":sharedUI:iosX64AggregateResources")
+
+ val iosDeviceFramework =
+ file("sharedUI/build/XCFrameworks/debug/SharedUI.xcframework/ios-arm64/SharedUI.framework")
+ commonResourcesFiles.forEach { res ->
+ assertTrue(iosDeviceFramework.resolve(res).exists())
+ }
+ assertEquals("ios", iosDeviceFramework.resolve("$repackDir/files/platform.txt").readText())
+
+ val iosSimFramework =
+ file("sharedUI/build/XCFrameworks/debug/SharedUI.xcframework/ios-arm64_x86_64-simulator/SharedUI.framework")
+ commonResourcesFiles.forEach { res ->
+ assertTrue(iosSimFramework.resolve(res).exists())
+ }
+ assertEquals("ios", iosSimFramework.resolve("$repackDir/files/platform.txt").readText())
+ }
}
}
@@ -629,15 +606,23 @@ class ResourcesTest : GradlePluginTestBase() {
fun testHugeNumberOfResources(): Unit = with(testProject("misc/hugeResources")) {
gradle(":generateResourceFiles")
gradle(":generateResourceAccessorsForCommonMain").checks {
- val buildPath = "build/generated/compose/resourceGenerator/kotlin/commonMainResourceAccessors/app/group/huge/generated/resources"
+ val buildPath =
+ "build/generated/compose/resourceGenerator/kotlin/commonMainResourceAccessors/app/group/huge/generated/resources"
assertEqualTextFiles(file("$buildPath/Drawable0.commonMain.kt"), file("expected/Drawable0.commonMain.kt"))
- assertEqualTextFiles(file("$buildPath/Drawable100.commonMain.kt"), file("expected/Drawable100.commonMain.kt"))
+ assertEqualTextFiles(
+ file("$buildPath/Drawable100.commonMain.kt"),
+ file("expected/Drawable100.commonMain.kt")
+ )
assertEqualTextFiles(file("$buildPath/String0.commonMain.kt"), file("expected/String0.commonMain.kt"))
assertEqualTextFiles(file("$buildPath/String100.commonMain.kt"), file("expected/String100.commonMain.kt"))
}
gradle(":generateActualResourceCollectorsForDesktopMain").checks {
- val desktopPath = "build/generated/compose/resourceGenerator/kotlin/desktopMainResourceCollectors/app/group/huge/generated/resources"
- assertEqualTextFiles(file("$desktopPath/ActualResourceCollectors.kt"), file("expected/ActualResourceCollectors.kt"))
+ val desktopPath =
+ "build/generated/compose/resourceGenerator/kotlin/desktopMainResourceCollectors/app/group/huge/generated/resources"
+ assertEqualTextFiles(
+ file("$desktopPath/ActualResourceCollectors.kt"),
+ file("expected/ActualResourceCollectors.kt")
+ )
}
}
@@ -693,7 +678,8 @@ class ResourcesTest : GradlePluginTestBase() {
with(
testProject(
"misc/appleResources",
- defaultTestEnvironment.copy(kotlinVersion = "2.1.21"))
+ defaultTestEnvironment.copy(kotlinVersion = "2.1.21")
+ )
) {
file("build.gradle.kts").modify { content ->
"""
@@ -744,11 +730,7 @@ class ResourcesTest : GradlePluginTestBase() {
@Test
fun xcframeworkResources() {
Assumptions.assumeTrue(currentOS == OS.MacOS)
- with(
- testProject(
- "misc/appleResources",
- defaultTestEnvironment.copy(kotlinVersion = "2.2.0-RC2"))
- ) {
+ with(testProject("misc/appleResources")) {
file("build.gradle.kts").modify { content ->
"""
|import org.jetbrains.kotlin.gradle.plugin.mpp.apple.XCFramework
@@ -896,12 +878,7 @@ class ResourcesTest : GradlePluginTestBase() {
@Test
fun cocoapodsIosXCFrameworkResources() {
Assumptions.assumeTrue(currentOS == OS.MacOS)
-
- with(
- testProject(
- "misc/appleResources",
- defaultTestEnvironment.copy(kotlinVersion = "2.2.0-RC2"))
- ) {
+ with(testProject("misc/appleResources")) {
gradle(":podPublishDebugXCFramework").checks {
assertDirectoriesContentEquals(
file("build/cocoapods/publish/debug/shared.xcframework/ios-arm64/shared.framework/composeResources"),
@@ -1025,7 +1002,8 @@ class ResourcesTest : GradlePluginTestBase() {
with(testProject("misc/macosNativeResources")) {
val appName = "Test Resources"
gradle(":createDistributableNativeDebugMacosX64").checks {
- val targetResourcesDir = "build/compose/binaries/main/native-macosX64-debug-app-image/${appName}.app/Contents/Resources"
+ val targetResourcesDir =
+ "build/compose/binaries/main/native-macosX64-debug-app-image/${appName}.app/Contents/Resources"
file("$targetResourcesDir/compose-resources/composeResources/appleresources.generated.resources/drawable/compose-multiplatform.xml").checkExists()
file("$targetResourcesDir/compose-resources/composeResources/appleresources.generated.resources/drawable/icon.xml").checkExists()
}
@@ -1043,7 +1021,8 @@ class ResourcesTest : GradlePluginTestBase() {
"compose-multiplatform.xml",
"icon.xml"
)
- val targetResourcesDir = "build/compose/binaries/main/native-macosX64-debug-app-image/${appName}.app/Contents/Resources/compose-resources/composeResources/appleresources.generated.resources/drawable/"
+ val targetResourcesDir =
+ "build/compose/binaries/main/native-macosX64-debug-app-image/${appName}.app/Contents/Resources/compose-resources/composeResources/appleresources.generated.resources/drawable/"
gradle(taskName).checks {
fileNames.forEach { name ->
check(!file(targetResourcesDir + name).readText().startsWith(comment)) {
@@ -1085,7 +1064,8 @@ class ResourcesTest : GradlePluginTestBase() {
}
gradle(taskName).checks {
- val targetResourcesDir = "build/compose/binaries/main/native-macosX64-debug-app-image/${appName}.app/Contents/Resources"
+ val targetResourcesDir =
+ "build/compose/binaries/main/native-macosX64-debug-app-image/${appName}.app/Contents/Resources"
file("$targetResourcesDir/compose-resources/composeResources/appleresources.generated.resources/drawable/compose-multiplatform.xml").checkExists()
file("$targetResourcesDir/compose-resources/composeResources/appleresources.generated.resources/drawable/compose-multiplatform2.xml").checkExists()
file("$targetResourcesDir/compose-resources/composeResources/appleresources.generated.resources/drawable/icon.xml").checkExists()
@@ -1093,7 +1073,8 @@ class ResourcesTest : GradlePluginTestBase() {
check(file(targetResource).delete())
gradle(taskName).checks {
check.taskSuccessful(taskName)
- val targetResourcesDir = "build/compose/binaries/main/native-macosX64-debug-app-image/${appName}.app/Contents/Resources"
+ val targetResourcesDir =
+ "build/compose/binaries/main/native-macosX64-debug-app-image/${appName}.app/Contents/Resources"
file("$targetResourcesDir/compose-resources/composeResources/appleresources.generated.resources/drawable/compose-multiplatform.xml").checkExists()
file("$targetResourcesDir/compose-resources/composeResources/appleresources.generated.resources/drawable/compose-multiplatform2.xml").checkNotExists()
file("$targetResourcesDir/compose-resources/composeResources/appleresources.generated.resources/drawable/icon.xml").checkExists()
diff --git a/gradle-plugins/compose/src/test/test-projects/application/hotReload/build.gradle b/gradle-plugins/compose/src/test/test-projects/application/hotReload/build.gradle
index 9b47a19f515..5d7e072800b 100644
--- a/gradle-plugins/compose/src/test/test-projects/application/hotReload/build.gradle
+++ b/gradle-plugins/compose/src/test/test-projects/application/hotReload/build.gradle
@@ -1,7 +1,5 @@
-import org.jetbrains.compose.desktop.application.dsl.TargetFormat
-
plugins {
- id "com.android.application"
+ id "com.android.kotlin.multiplatform.library"
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.compose"
id "org.jetbrains.compose"
@@ -10,7 +8,11 @@ plugins {
kotlin {
// empty stub (no actual android app) to detect configuration conflicts
// like https://github.com/JetBrains/compose-jb/issues/2345
- androidTarget()
+ androidLibrary {
+ namespace = "org.jetbrains.compose.testapp"
+ compileSdk = 35
+ minSdk = 23
+ }
jvm()
sourceSets {
@@ -22,16 +24,6 @@ kotlin {
}
}
-android {
- namespace = "org.jetbrains.compose.testapp"
- compileSdk = 35
-
- defaultConfig {
- minSdk = 23
- targetSdk = 35
- }
-}
-
compose.desktop {
application {
mainClass = "MainKt"
diff --git a/gradle-plugins/compose/src/test/test-projects/application/hotReload/settings.gradle b/gradle-plugins/compose/src/test/test-projects/application/hotReload/settings.gradle
index 4c218907728..2a425184a9f 100644
--- a/gradle-plugins/compose/src/test/test-projects/application/hotReload/settings.gradle
+++ b/gradle-plugins/compose/src/test/test-projects/application/hotReload/settings.gradle
@@ -3,7 +3,7 @@ pluginManagement {
id 'org.jetbrains.kotlin.multiplatform' version 'KOTLIN_VERSION_PLACEHOLDER'
id 'org.jetbrains.kotlin.plugin.compose' version 'KOTLIN_VERSION_PLACEHOLDER'
id 'org.jetbrains.compose' version 'COMPOSE_GRADLE_PLUGIN_VERSION_PLACEHOLDER'
- id 'com.android.application' version 'AGP_VERSION_PLACEHOLDER'
+ id 'com.android.kotlin.multiplatform.library' version 'AGP_VERSION_PLACEHOLDER'
}
repositories {
mavenLocal()
diff --git a/gradle-plugins/compose/src/test/test-projects/application/mpp/build.gradle b/gradle-plugins/compose/src/test/test-projects/application/mpp/build.gradle
index 5a5fe777e79..b9c7b2bf3dc 100644
--- a/gradle-plugins/compose/src/test/test-projects/application/mpp/build.gradle
+++ b/gradle-plugins/compose/src/test/test-projects/application/mpp/build.gradle
@@ -1,7 +1,7 @@
import org.jetbrains.compose.desktop.application.dsl.TargetFormat
plugins {
- id "com.android.application"
+ id "com.android.kotlin.multiplatform.library"
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.compose"
id "org.jetbrains.compose"
@@ -10,7 +10,11 @@ plugins {
kotlin {
// empty stub (no actual android app) to detect configuration conflicts
// like https://github.com/JetBrains/compose-jb/issues/2345
- androidTarget()
+ androidLibrary {
+ namespace = "org.jetbrains.compose.testapp"
+ compileSdk = 35
+ minSdk = 23
+ }
jvm()
sourceSets {
@@ -27,16 +31,6 @@ kotlin {
}
}
-android {
- namespace = "org.jetbrains.compose.testapp"
- compileSdk = 35
-
- defaultConfig {
- minSdk = 23
- targetSdk = 35
- }
-}
-
compose.desktop {
application {
mainClass = "MainKt"
diff --git a/gradle-plugins/compose/src/test/test-projects/application/mpp/settings.gradle b/gradle-plugins/compose/src/test/test-projects/application/mpp/settings.gradle
index f56d133772d..c7b81d07ffe 100644
--- a/gradle-plugins/compose/src/test/test-projects/application/mpp/settings.gradle
+++ b/gradle-plugins/compose/src/test/test-projects/application/mpp/settings.gradle
@@ -3,7 +3,7 @@ pluginManagement {
id 'org.jetbrains.kotlin.multiplatform' version 'KOTLIN_VERSION_PLACEHOLDER'
id 'org.jetbrains.kotlin.plugin.compose' version 'KOTLIN_VERSION_PLACEHOLDER'
id 'org.jetbrains.compose' version 'COMPOSE_GRADLE_PLUGIN_VERSION_PLACEHOLDER'
- id 'com.android.application' version 'AGP_VERSION_PLACEHOLDER'
+ id 'com.android.kotlin.multiplatform.library' version 'AGP_VERSION_PLACEHOLDER'
}
repositories {
mavenLocal()
diff --git a/gradle-plugins/compose/src/test/test-projects/application/nonJvm/build.gradle b/gradle-plugins/compose/src/test/test-projects/application/nonJvm/build.gradle
index f708194b124..53c28ad9131 100644
--- a/gradle-plugins/compose/src/test/test-projects/application/nonJvm/build.gradle
+++ b/gradle-plugins/compose/src/test/test-projects/application/nonJvm/build.gradle
@@ -1,23 +1,17 @@
plugins {
- id "com.android.application"
+ id "com.android.kotlin.multiplatform.library"
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.compose"
id "org.jetbrains.compose"
}
kotlin {
- androidTarget()
+ androidLibrary {
+ namespace = "org.jetbrains.compose.testapp"
+ compileSdk = 35
+ minSdk = 23
+ }
iosX64()
iosArm64()
iosSimulatorArm64()
}
-
-android {
- namespace = "org.jetbrains.compose.testapp"
- compileSdk = 35
-
- defaultConfig {
- minSdk = 23
- targetSdk = 35
- }
-}
diff --git a/gradle-plugins/compose/src/test/test-projects/application/nonJvm/settings.gradle b/gradle-plugins/compose/src/test/test-projects/application/nonJvm/settings.gradle
index 3b6258c789e..a80014739b2 100644
--- a/gradle-plugins/compose/src/test/test-projects/application/nonJvm/settings.gradle
+++ b/gradle-plugins/compose/src/test/test-projects/application/nonJvm/settings.gradle
@@ -3,7 +3,7 @@ pluginManagement {
id 'org.jetbrains.kotlin.multiplatform' version 'KOTLIN_VERSION_PLACEHOLDER'
id 'org.jetbrains.kotlin.plugin.compose' version 'KOTLIN_VERSION_PLACEHOLDER'
id 'org.jetbrains.compose' version 'COMPOSE_GRADLE_PLUGIN_VERSION_PLACEHOLDER'
- id 'com.android.application' version 'AGP_VERSION_PLACEHOLDER'
+ id 'com.android.kotlin.multiplatform.library' version 'AGP_VERSION_PLACEHOLDER'
}
repositories {
mavenLocal()
diff --git a/gradle-plugins/compose/src/test/test-projects/misc/androidAppWithResources/appModule/build.gradle.kts b/gradle-plugins/compose/src/test/test-projects/misc/androidAppWithResources/appModule/build.gradle.kts
new file mode 100644
index 00000000000..332da088ad7
--- /dev/null
+++ b/gradle-plugins/compose/src/test/test-projects/misc/androidAppWithResources/appModule/build.gradle.kts
@@ -0,0 +1,21 @@
+plugins {
+ id("org.jetbrains.compose")
+ kotlin("plugin.compose")
+ id("com.android.application")
+}
+
+android {
+ namespace = "me.sample.app"
+ compileSdk = 35
+ defaultConfig {
+ applicationId = "org.example.project"
+ minSdk = 23
+ targetSdk = 35
+ versionCode = 1
+ versionName = "1.0"
+ }
+}
+
+dependencies {
+ implementation(project(":featureModule"))
+}
diff --git a/gradle-plugins/compose/src/test/test-projects/misc/kmpResourcePublication/appModule/src/androidMain/AndroidManifest.xml b/gradle-plugins/compose/src/test/test-projects/misc/androidAppWithResources/appModule/src/main/AndroidManifest.xml
similarity index 100%
rename from gradle-plugins/compose/src/test/test-projects/misc/kmpResourcePublication/appModule/src/androidMain/AndroidManifest.xml
rename to gradle-plugins/compose/src/test/test-projects/misc/androidAppWithResources/appModule/src/main/AndroidManifest.xml
diff --git a/gradle-plugins/compose/src/test/test-projects/misc/newAgpResources/appModule/src/commonMain/kotlin/me/sample/app/App.kt b/gradle-plugins/compose/src/test/test-projects/misc/androidAppWithResources/appModule/src/main/kotlin/me/sample/app/App.kt
similarity index 87%
rename from gradle-plugins/compose/src/test/test-projects/misc/newAgpResources/appModule/src/commonMain/kotlin/me/sample/app/App.kt
rename to gradle-plugins/compose/src/test/test-projects/misc/androidAppWithResources/appModule/src/main/kotlin/me/sample/app/App.kt
index 4c9c113677f..b14ec63cbf0 100644
--- a/gradle-plugins/compose/src/test/test-projects/misc/newAgpResources/appModule/src/commonMain/kotlin/me/sample/app/App.kt
+++ b/gradle-plugins/compose/src/test/test-projects/misc/androidAppWithResources/appModule/src/main/kotlin/me/sample/app/App.kt
@@ -4,7 +4,7 @@ import androidx.compose.foundation.layout.Column
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
-import newagpresources.appmodule.generated.resources.*
+import newagpresources.featuremodule.generated.resources.*
import org.jetbrains.compose.resources.stringResource
@Composable
diff --git a/gradle-plugins/compose/src/test/test-projects/misc/newAgpResources/build.gradle.kts b/gradle-plugins/compose/src/test/test-projects/misc/androidAppWithResources/build.gradle.kts
similarity index 100%
rename from gradle-plugins/compose/src/test/test-projects/misc/newAgpResources/build.gradle.kts
rename to gradle-plugins/compose/src/test/test-projects/misc/androidAppWithResources/build.gradle.kts
diff --git a/gradle-plugins/compose/src/test/test-projects/misc/newAgpResources/featureModule/build.gradle.kts b/gradle-plugins/compose/src/test/test-projects/misc/androidAppWithResources/featureModule/build.gradle.kts
similarity index 60%
rename from gradle-plugins/compose/src/test/test-projects/misc/newAgpResources/featureModule/build.gradle.kts
rename to gradle-plugins/compose/src/test/test-projects/misc/androidAppWithResources/featureModule/build.gradle.kts
index 0189bd2cba9..74d23ce0182 100644
--- a/gradle-plugins/compose/src/test/test-projects/misc/newAgpResources/featureModule/build.gradle.kts
+++ b/gradle-plugins/compose/src/test/test-projects/misc/androidAppWithResources/featureModule/build.gradle.kts
@@ -6,21 +6,20 @@ plugins {
}
kotlin {
- jvmToolchain(11)
jvm()
androidLibrary {
- experimentalProperties["android.experimental.kmp.enableAndroidResources"] = true
namespace = "me.sample.feature"
compileSdk = 35
- minSdk = 24
+ minSdk = 23
+ androidResources.enable = true
}
sourceSets {
commonMain.dependencies {
- implementation(compose.runtime)
- implementation(compose.material3)
- implementation(compose.components.resources)
+ api(compose.runtime)
+ api(compose.material3)
+ api(compose.components.resources)
}
}
}
@@ -28,4 +27,8 @@ kotlin {
//https://youtrack.jetbrains.com/issue/CMP-8325
compose.desktop {
application { }
+}
+
+compose.resources {
+ publicResClass = true
}
\ No newline at end of file
diff --git a/gradle-plugins/compose/src/test/test-projects/misc/newAgpResources/featureModule/src/commonMain/composeResources/values/strings.xml b/gradle-plugins/compose/src/test/test-projects/misc/androidAppWithResources/featureModule/src/commonMain/composeResources/values/strings.xml
similarity index 100%
rename from gradle-plugins/compose/src/test/test-projects/misc/newAgpResources/featureModule/src/commonMain/composeResources/values/strings.xml
rename to gradle-plugins/compose/src/test/test-projects/misc/androidAppWithResources/featureModule/src/commonMain/composeResources/values/strings.xml
diff --git a/gradle-plugins/compose/src/test/test-projects/misc/newAgpResources/featureModule/src/commonMain/kotlin/me/sample/app/Feature.kt b/gradle-plugins/compose/src/test/test-projects/misc/androidAppWithResources/featureModule/src/commonMain/kotlin/me/sample/app/Feature.kt
similarity index 100%
rename from gradle-plugins/compose/src/test/test-projects/misc/newAgpResources/featureModule/src/commonMain/kotlin/me/sample/app/Feature.kt
rename to gradle-plugins/compose/src/test/test-projects/misc/androidAppWithResources/featureModule/src/commonMain/kotlin/me/sample/app/Feature.kt
diff --git a/gradle-plugins/compose/src/test/test-projects/misc/newAgpResources/gradle.properties b/gradle-plugins/compose/src/test/test-projects/misc/androidAppWithResources/gradle.properties
similarity index 100%
rename from gradle-plugins/compose/src/test/test-projects/misc/newAgpResources/gradle.properties
rename to gradle-plugins/compose/src/test/test-projects/misc/androidAppWithResources/gradle.properties
diff --git a/gradle-plugins/compose/src/test/test-projects/misc/newAgpResources/settings.gradle.kts b/gradle-plugins/compose/src/test/test-projects/misc/androidAppWithResources/settings.gradle.kts
similarity index 100%
rename from gradle-plugins/compose/src/test/test-projects/misc/newAgpResources/settings.gradle.kts
rename to gradle-plugins/compose/src/test/test-projects/misc/androidAppWithResources/settings.gradle.kts
diff --git a/gradle-plugins/compose/src/test/test-projects/misc/commonResources/build.gradle.kts b/gradle-plugins/compose/src/test/test-projects/misc/commonResources/build.gradle.kts
index ea9ed3f5d60..d7919edef94 100644
--- a/gradle-plugins/compose/src/test/test-projects/misc/commonResources/build.gradle.kts
+++ b/gradle-plugins/compose/src/test/test-projects/misc/commonResources/build.gradle.kts
@@ -1,21 +1,18 @@
plugins {
kotlin("multiplatform")
kotlin("plugin.compose")
- id("com.android.application")
+ id("com.android.kotlin.multiplatform.library")
id("org.jetbrains.compose")
}
group = "app.group"
kotlin {
- androidTarget {
- compilations.all {
- compileTaskProvider {
- compilerOptions {
- jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_11)
- }
- }
- }
+ androidLibrary {
+ compileSdk = 35
+ namespace = "org.jetbrains.compose.resources.test"
+ minSdk = 23
+ androidResources.enable = true
}
jvm("desktop")
@@ -32,43 +29,6 @@ kotlin {
}
}
-android {
- compileSdk = 35
- namespace = "org.jetbrains.compose.resources.test"
- sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml")
- defaultConfig {
- applicationId = "org.example.project"
- minSdk = 23
- targetSdk = 35
- versionCode = 1
- versionName = "1.0"
- }
- signingConfigs {
- create("testkey") {
- storeFile = project.file("key/debug.keystore")
- storePassword = "android"
- keyAlias = "androiddebugkey"
- keyPassword = "android"
- }
- }
- buildTypes {
- getByName("release") {
- isMinifyEnabled = false
- signingConfig = signingConfigs.getByName("testkey")
- }
- getByName("debug") {
- signingConfig = signingConfigs.getByName("testkey")
- }
- }
- compileOptions {
- sourceCompatibility = JavaVersion.VERSION_11
- targetCompatibility = JavaVersion.VERSION_11
- }
- lint {
- checkReleaseBuilds = false
- }
-}
-
abstract class GenerateAndroidRes : DefaultTask() {
@get:Inject
abstract val layout: ProjectLayout
diff --git a/gradle-plugins/compose/src/test/test-projects/misc/commonResources/gradle.properties b/gradle-plugins/compose/src/test/test-projects/misc/commonResources/gradle.properties
index be233bd3534..62c8bd1e333 100644
--- a/gradle-plugins/compose/src/test/test-projects/misc/commonResources/gradle.properties
+++ b/gradle-plugins/compose/src/test/test-projects/misc/commonResources/gradle.properties
@@ -1,4 +1,3 @@
org.gradle.jvmargs=-Xmx8096M
android.useAndroidX=true
-org.jetbrains.compose.experimental.jscanvas.enabled=true
org.jetbrains.compose.resources.content.hash.generation.disable=true
\ No newline at end of file
diff --git a/gradle-plugins/compose/src/test/test-projects/misc/commonResources/settings.gradle.kts b/gradle-plugins/compose/src/test/test-projects/misc/commonResources/settings.gradle.kts
index b2556043422..498b73d9a6c 100644
--- a/gradle-plugins/compose/src/test/test-projects/misc/commonResources/settings.gradle.kts
+++ b/gradle-plugins/compose/src/test/test-projects/misc/commonResources/settings.gradle.kts
@@ -7,7 +7,7 @@ pluginManagement {
maven("https://maven.pkg.jetbrains.space/public/p/compose/dev")
}
plugins {
- id("com.android.application").version("AGP_VERSION_PLACEHOLDER")
+ id("com.android.kotlin.multiplatform.library").version("AGP_VERSION_PLACEHOLDER")
id("org.jetbrains.kotlin.multiplatform").version("KOTLIN_VERSION_PLACEHOLDER")
id("org.jetbrains.kotlin.plugin.compose").version("KOTLIN_VERSION_PLACEHOLDER")
id("org.jetbrains.compose").version("COMPOSE_GRADLE_PLUGIN_VERSION_PLACEHOLDER")
diff --git a/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/androidApp/build.gradle.kts b/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/androidApp/build.gradle.kts
new file mode 100644
index 00000000000..c49f2fd9979
--- /dev/null
+++ b/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/androidApp/build.gradle.kts
@@ -0,0 +1,48 @@
+plugins {
+ id("com.android.application")
+}
+
+android {
+ namespace = "org.company.app.androidApp"
+ compileSdk = 35
+
+ defaultConfig {
+ minSdk = 23
+ targetSdk = 36
+
+ applicationId = "org.company.app.androidApp"
+ versionCode = 1
+ versionName = "1.0.0"
+ }
+ signingConfigs {
+ create("testkey") {
+ storeFile = project.file("key/debug.keystore")
+ storePassword = "android"
+ keyAlias = "androiddebugkey"
+ keyPassword = "android"
+ }
+ }
+ buildTypes {
+ getByName("release") {
+ isMinifyEnabled = false
+ signingConfig = signingConfigs.getByName("testkey")
+ }
+ getByName("debug") {
+ signingConfig = signingConfigs.getByName("testkey")
+ }
+ }
+ flavorDimensions += "version"
+ productFlavors {
+ create("demo")
+ create("full")
+ }
+ lint {
+ checkReleaseBuilds = false
+ }
+}
+
+
+
+dependencies {
+ implementation(project(":sharedUI"))
+}
diff --git a/gradle-plugins/compose/src/test/test-projects/misc/commonResources/key/debug.keystore b/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/androidApp/key/debug.keystore
similarity index 100%
rename from gradle-plugins/compose/src/test/test-projects/misc/commonResources/key/debug.keystore
rename to gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/androidApp/key/debug.keystore
diff --git a/gradle-plugins/compose/src/test/test-projects/misc/newAgpResources/appModule/src/androidMain/AndroidManifest.xml b/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/androidApp/src/main/AndroidManifest.xml
similarity index 85%
rename from gradle-plugins/compose/src/test/test-projects/misc/newAgpResources/appModule/src/androidMain/AndroidManifest.xml
rename to gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/androidApp/src/main/AndroidManifest.xml
index 96aa10f056b..792e6a3af7c 100644
--- a/gradle-plugins/compose/src/test/test-projects/misc/newAgpResources/appModule/src/androidMain/AndroidManifest.xml
+++ b/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/androidApp/src/main/AndroidManifest.xml
@@ -1,4 +1,4 @@
-
+
\ No newline at end of file
diff --git a/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/androidApp/src/main/kotlin/org/company/app/AppActivity.kt b/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/androidApp/src/main/kotlin/org/company/app/AppActivity.kt
new file mode 100644
index 00000000000..4dee70372c3
--- /dev/null
+++ b/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/androidApp/src/main/kotlin/org/company/app/AppActivity.kt
@@ -0,0 +1,13 @@
+package org.company.app
+
+import androidx.compose.runtime.Composable
+import multiplatform_app.sharedui.generated.resources.Res
+import multiplatform_app.sharedui.generated.resources.cyclone
+import org.jetbrains.compose.resources.stringResource
+
+
+@Composable
+fun Foo() {
+ val s = stringResource(Res.string.cyclone)
+ App()
+}
diff --git a/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/build.gradle.kts b/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/build.gradle.kts
new file mode 100644
index 00000000000..b37f2ed6454
--- /dev/null
+++ b/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/build.gradle.kts
@@ -0,0 +1,9 @@
+plugins {
+ id("com.android.kotlin.multiplatform.library").apply(false)
+ id("com.android.application").apply(false)
+ id("org.jetbrains.kotlin.multiplatform").apply(false)
+ id("org.jetbrains.kotlin.android").apply(false)
+ id("org.jetbrains.kotlin.jvm").apply(false)
+ id("org.jetbrains.kotlin.plugin.compose").apply(false)
+ id("org.jetbrains.compose").apply(false)
+}
diff --git a/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/desktopApp/build.gradle.kts b/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/desktopApp/build.gradle.kts
new file mode 100644
index 00000000000..52456e33813
--- /dev/null
+++ b/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/desktopApp/build.gradle.kts
@@ -0,0 +1,15 @@
+plugins {
+ id("org.jetbrains.kotlin.jvm")
+ id("org.jetbrains.kotlin.plugin.compose")
+ id("org.jetbrains.compose")
+}
+
+dependencies {
+ implementation(project(":sharedUI"))
+}
+
+compose.desktop {
+ application {
+ mainClass = "MainKt"
+ }
+}
diff --git a/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/desktopApp/src/main/kotlin/main.kt b/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/desktopApp/src/main/kotlin/main.kt
new file mode 100644
index 00000000000..dc170867c8b
--- /dev/null
+++ b/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/desktopApp/src/main/kotlin/main.kt
@@ -0,0 +1,11 @@
+import androidx.compose.runtime.Composable
+import multiplatform_app.sharedui.generated.resources.Res
+import multiplatform_app.sharedui.generated.resources.cyclone
+import org.jetbrains.compose.resources.stringResource
+
+fun main() {}
+
+@Composable
+private fun Foo() {
+ val s = stringResource(Res.string.cyclone)
+}
\ No newline at end of file
diff --git a/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/gradle.properties b/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/gradle.properties
new file mode 100644
index 00000000000..297046330fb
--- /dev/null
+++ b/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/gradle.properties
@@ -0,0 +1,16 @@
+#Gradle
+org.gradle.jvmargs=-Xmx4G
+org.gradle.caching=true
+org.gradle.configuration-cache=true
+org.gradle.daemon=true
+org.gradle.parallel=true
+
+#Kotlin
+kotlin.code.style=official
+kotlin.daemon.jvmargs=-Xmx4G
+kotlin.native.binary.gc=cms
+kotlin.incremental.wasm=true
+
+#Android
+android.useAndroidX=true
+android.nonTransitiveRClass=true
diff --git a/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/settings.gradle.kts b/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/settings.gradle.kts
new file mode 100644
index 00000000000..1500b5470c2
--- /dev/null
+++ b/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/settings.gradle.kts
@@ -0,0 +1,34 @@
+rootProject.name = "Multiplatform-App"
+
+pluginManagement {
+ repositories {
+ mavenLocal()
+ gradlePluginPortal()
+ google()
+ maven("https://maven.pkg.jetbrains.space/public/p/compose/dev")
+ }
+ plugins {
+ id("com.android.kotlin.multiplatform.library").version("AGP_VERSION_PLACEHOLDER")
+ id("com.android.application").version("AGP_VERSION_PLACEHOLDER")
+ id("org.jetbrains.kotlin.multiplatform").version("KOTLIN_VERSION_PLACEHOLDER")
+ id("org.jetbrains.kotlin.android").version("KOTLIN_VERSION_PLACEHOLDER")
+ id("org.jetbrains.kotlin.jvm").version("KOTLIN_VERSION_PLACEHOLDER")
+ id("org.jetbrains.kotlin.plugin.compose").version("KOTLIN_VERSION_PLACEHOLDER")
+ id("org.jetbrains.compose").version("COMPOSE_GRADLE_PLUGIN_VERSION_PLACEHOLDER")
+ }
+}
+dependencyResolutionManagement {
+ repositories {
+ maven("https://maven.pkg.jetbrains.space/public/p/compose/dev")
+ mavenCentral()
+ gradlePluginPortal()
+ google()
+ mavenLocal()
+ }
+}
+
+include(":sharedUI")
+include(":androidApp")
+include(":desktopApp")
+include(":webApp")
+
diff --git a/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/sharedUI/build.gradle.kts b/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/sharedUI/build.gradle.kts
new file mode 100644
index 00000000000..1e41253d05c
--- /dev/null
+++ b/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/sharedUI/build.gradle.kts
@@ -0,0 +1,54 @@
+import org.gradle.kotlin.dsl.withType
+import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget
+import org.jetbrains.kotlin.gradle.plugin.mpp.apple.XCFramework
+
+plugins {
+ id("com.android.kotlin.multiplatform.library")
+ id("org.jetbrains.kotlin.multiplatform")
+ id("org.jetbrains.kotlin.plugin.compose")
+ id("org.jetbrains.compose")
+}
+
+kotlin {
+ androidLibrary {
+ namespace = "org.company.app"
+ compileSdk = 35
+ minSdk = 23
+ androidResources.enable = true
+ }
+
+ jvm()
+
+ js { browser() }
+ wasmJs { browser() }
+
+ iosX64()
+ iosArm64()
+ iosSimulatorArm64()
+
+ sourceSets {
+ commonMain.dependencies {
+ api(compose.runtime)
+ api(compose.ui)
+ api(compose.foundation)
+ api(compose.components.resources)
+ }
+ }
+
+ val xcf = XCFramework("SharedUI")
+ targets
+ .withType()
+ .matching { it.konanTarget.family.isAppleFamily }
+ .configureEach {
+ binaries {
+ framework {
+ baseName = "SharedUI"
+ xcf.add(this)
+ }
+ }
+ }
+}
+
+compose.resources {
+ publicResClass = true
+}
diff --git a/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/sharedUI/src/androidMain/composeResources/files/platform.txt b/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/sharedUI/src/androidMain/composeResources/files/platform.txt
new file mode 100644
index 00000000000..1fd74d19811
--- /dev/null
+++ b/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/sharedUI/src/androidMain/composeResources/files/platform.txt
@@ -0,0 +1 @@
+android
\ No newline at end of file
diff --git a/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/sharedUI/src/commonMain/composeResources/values/strings.xml b/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/sharedUI/src/commonMain/composeResources/values/strings.xml
new file mode 100644
index 00000000000..95f212f38c9
--- /dev/null
+++ b/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/sharedUI/src/commonMain/composeResources/values/strings.xml
@@ -0,0 +1,3 @@
+
+ Cyclone
+
\ No newline at end of file
diff --git a/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/sharedUI/src/commonMain/kotlin/org/company/app/App.kt b/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/sharedUI/src/commonMain/kotlin/org/company/app/App.kt
new file mode 100644
index 00000000000..a494a9ab751
--- /dev/null
+++ b/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/sharedUI/src/commonMain/kotlin/org/company/app/App.kt
@@ -0,0 +1,12 @@
+package org.company.app
+
+import androidx.compose.foundation.text.BasicText
+import androidx.compose.runtime.Composable
+import multiplatform_app.sharedui.generated.resources.Res
+import multiplatform_app.sharedui.generated.resources.cyclone
+import org.jetbrains.compose.resources.stringResource
+
+@Composable
+fun App() {
+ BasicText(text = stringResource(Res.string.cyclone))
+}
diff --git a/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/sharedUI/src/iosMain/composeResources/files/platform.txt b/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/sharedUI/src/iosMain/composeResources/files/platform.txt
new file mode 100644
index 00000000000..d99afd614c2
--- /dev/null
+++ b/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/sharedUI/src/iosMain/composeResources/files/platform.txt
@@ -0,0 +1 @@
+ios
\ No newline at end of file
diff --git a/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/sharedUI/src/iosMain/kotlin/main.kt b/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/sharedUI/src/iosMain/kotlin/main.kt
new file mode 100644
index 00000000000..dea8f49319b
--- /dev/null
+++ b/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/sharedUI/src/iosMain/kotlin/main.kt
@@ -0,0 +1,7 @@
+import androidx.compose.ui.window.ComposeUIViewController
+import org.company.app.App
+import platform.UIKit.UIViewController
+
+fun MainViewController(): UIViewController = ComposeUIViewController {
+ App()
+}
\ No newline at end of file
diff --git a/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/sharedUI/src/jsMain/composeResources/files/platform.txt b/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/sharedUI/src/jsMain/composeResources/files/platform.txt
new file mode 100644
index 00000000000..bc42fd64f54
--- /dev/null
+++ b/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/sharedUI/src/jsMain/composeResources/files/platform.txt
@@ -0,0 +1 @@
+js
\ No newline at end of file
diff --git a/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/sharedUI/src/jvmMain/composeResources/files/platform.txt b/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/sharedUI/src/jvmMain/composeResources/files/platform.txt
new file mode 100644
index 00000000000..8714ca25df6
--- /dev/null
+++ b/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/sharedUI/src/jvmMain/composeResources/files/platform.txt
@@ -0,0 +1 @@
+desktop
\ No newline at end of file
diff --git a/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/sharedUI/src/wasmJsMain/composeResources/files/platform.txt b/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/sharedUI/src/wasmJsMain/composeResources/files/platform.txt
new file mode 100644
index 00000000000..093014dd47c
--- /dev/null
+++ b/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/sharedUI/src/wasmJsMain/composeResources/files/platform.txt
@@ -0,0 +1 @@
+wasm
\ No newline at end of file
diff --git a/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/webApp/build.gradle.kts b/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/webApp/build.gradle.kts
new file mode 100644
index 00000000000..5c73a297e80
--- /dev/null
+++ b/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/webApp/build.gradle.kts
@@ -0,0 +1,23 @@
+plugins {
+ id("org.jetbrains.kotlin.multiplatform")
+ id("org.jetbrains.kotlin.plugin.compose")
+ id("org.jetbrains.compose")
+}
+
+kotlin {
+ js {
+ browser()
+ binaries.executable()
+ }
+
+ wasmJs {
+ browser()
+ binaries.executable()
+ }
+
+ sourceSets {
+ commonMain.dependencies {
+ implementation(project(":sharedUI"))
+ }
+ }
+}
diff --git a/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/webApp/src/commonMain/kotlin/main.kt b/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/webApp/src/commonMain/kotlin/main.kt
new file mode 100644
index 00000000000..d44a1616c01
--- /dev/null
+++ b/gradle-plugins/compose/src/test/test-projects/misc/fullTargetsAppWithResources/webApp/src/commonMain/kotlin/main.kt
@@ -0,0 +1 @@
+fun main() {}
diff --git a/gradle-plugins/compose/src/test/test-projects/misc/kmpResourcePublication/appModule/build.gradle.kts b/gradle-plugins/compose/src/test/test-projects/misc/kmpResourcePublication/appModule/build.gradle.kts
index a05c6eb2a8d..5362de6c911 100644
--- a/gradle-plugins/compose/src/test/test-projects/misc/kmpResourcePublication/appModule/build.gradle.kts
+++ b/gradle-plugins/compose/src/test/test-projects/misc/kmpResourcePublication/appModule/build.gradle.kts
@@ -4,11 +4,16 @@ plugins {
id("org.jetbrains.compose")
kotlin("multiplatform")
kotlin("plugin.compose")
- id("com.android.application")
+ id("com.android.kotlin.multiplatform.library")
}
kotlin {
- androidTarget()
+ androidLibrary {
+ compileSdk = 35
+ namespace = "me.sample.app"
+ minSdk = 23
+ androidResources.enable = true
+ }
jvm()
iosX64()
iosArm64()
@@ -38,20 +43,3 @@ kotlin {
}
}
}
-
-android {
- namespace = "me.sample.app"
- compileSdk = 35
- sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml")
- defaultConfig {
- applicationId = "org.example.project"
- minSdk = 24
- targetSdk = 35
- versionCode = 1
- versionName = "1.0"
- }
- compileOptions {
- sourceCompatibility = JavaVersion.VERSION_17
- targetCompatibility = JavaVersion.VERSION_17
- }
-}
\ No newline at end of file
diff --git a/gradle-plugins/compose/src/test/test-projects/misc/kmpResourcePublication/build.gradle.kts b/gradle-plugins/compose/src/test/test-projects/misc/kmpResourcePublication/build.gradle.kts
index 7dddc27d0a5..f104d2a8a16 100644
--- a/gradle-plugins/compose/src/test/test-projects/misc/kmpResourcePublication/build.gradle.kts
+++ b/gradle-plugins/compose/src/test/test-projects/misc/kmpResourcePublication/build.gradle.kts
@@ -2,6 +2,5 @@ plugins {
id("org.jetbrains.compose").apply(false)
kotlin("multiplatform").apply(false)
kotlin("plugin.compose").apply(false)
- id("com.android.library").apply(false)
- id("com.android.application").apply(false)
+ id("com.android.kotlin.multiplatform.library").apply(false)
}
diff --git a/gradle-plugins/compose/src/test/test-projects/misc/kmpResourcePublication/cmplib/build.gradle.kts b/gradle-plugins/compose/src/test/test-projects/misc/kmpResourcePublication/cmplib/build.gradle.kts
index a7a363c44ed..c31c370fa31 100644
--- a/gradle-plugins/compose/src/test/test-projects/misc/kmpResourcePublication/cmplib/build.gradle.kts
+++ b/gradle-plugins/compose/src/test/test-projects/misc/kmpResourcePublication/cmplib/build.gradle.kts
@@ -3,7 +3,7 @@ plugins {
kotlin("multiplatform")
kotlin("plugin.compose")
id("maven-publish")
- id("com.android.library")
+ id("com.android.kotlin.multiplatform.library")
}
group = "me.sample.library"
@@ -17,7 +17,12 @@ publishing {
}
kotlin {
- androidTarget { publishLibraryVariants("release") }
+ androidLibrary {
+ compileSdk = 35
+ namespace = "me.sample.library"
+ minSdk = 23
+ androidResources.enable = true
+ }
jvm()
iosX64()
iosArm64()
@@ -36,18 +41,6 @@ kotlin {
}
}
-android {
- namespace = "me.sample.library"
- compileSdk = 35
- defaultConfig {
- minSdk = 24
- }
- compileOptions {
- sourceCompatibility = JavaVersion.VERSION_17
- targetCompatibility = JavaVersion.VERSION_17
- }
-}
-
compose.resources {
publicResClass = true
packageOfResClass = "me.sample.library.resources"
diff --git a/gradle-plugins/compose/src/test/test-projects/misc/kmpResourcePublication/featureModule/build.gradle.kts b/gradle-plugins/compose/src/test/test-projects/misc/kmpResourcePublication/featureModule/build.gradle.kts
index 924dfe85a70..897a95c76e9 100644
--- a/gradle-plugins/compose/src/test/test-projects/misc/kmpResourcePublication/featureModule/build.gradle.kts
+++ b/gradle-plugins/compose/src/test/test-projects/misc/kmpResourcePublication/featureModule/build.gradle.kts
@@ -2,11 +2,16 @@ plugins {
id("org.jetbrains.compose")
kotlin("multiplatform")
kotlin("plugin.compose")
- id("com.android.library")
+ id("com.android.kotlin.multiplatform.library")
}
kotlin {
- androidTarget()
+ androidLibrary {
+ compileSdk = 35
+ namespace = "me.sample.feature"
+ minSdk = 23
+ androidResources.enable = true
+ }
jvm()
iosX64()
iosArm64()
@@ -24,16 +29,3 @@ kotlin {
}
}
}
-
-android {
- namespace = "me.sample.feature"
- compileSdk = 35
-
- defaultConfig {
- minSdk = 24
- }
- compileOptions {
- sourceCompatibility = JavaVersion.VERSION_17
- targetCompatibility = JavaVersion.VERSION_17
- }
-}
\ No newline at end of file
diff --git a/gradle-plugins/compose/src/test/test-projects/misc/kmpResourcePublication/gradle.properties b/gradle-plugins/compose/src/test/test-projects/misc/kmpResourcePublication/gradle.properties
index 3ae7c5803a1..36703c15c1c 100644
--- a/gradle-plugins/compose/src/test/test-projects/misc/kmpResourcePublication/gradle.properties
+++ b/gradle-plugins/compose/src/test/test-projects/misc/kmpResourcePublication/gradle.properties
@@ -1,8 +1,4 @@
org.gradle.jvmargs=-Xmx2048M -Dfile.encoding=UTF-8 -Dkotlin.daemon.jvm.options\="-Xmx2048M"
kotlin.code.style=official
-kotlin.js.compiler=ir
android.useAndroidX=true
-org.jetbrains.compose.experimental.uikit.enabled=true
-org.jetbrains.compose.experimental.jscanvas.enabled=true
-org.jetbrains.compose.experimental.wasm.enabled=true
org.jetbrains.compose.experimental.macos.enabled=true
diff --git a/gradle-plugins/compose/src/test/test-projects/misc/kmpResourcePublication/settings.gradle.kts b/gradle-plugins/compose/src/test/test-projects/misc/kmpResourcePublication/settings.gradle.kts
index 703dc4e9679..834a699f9a7 100644
--- a/gradle-plugins/compose/src/test/test-projects/misc/kmpResourcePublication/settings.gradle.kts
+++ b/gradle-plugins/compose/src/test/test-projects/misc/kmpResourcePublication/settings.gradle.kts
@@ -17,8 +17,7 @@ pluginManagement {
id("org.jetbrains.kotlin.multiplatform").version("KOTLIN_VERSION_PLACEHOLDER")
id("org.jetbrains.kotlin.plugin.compose").version("KOTLIN_VERSION_PLACEHOLDER")
id("org.jetbrains.compose").version("COMPOSE_GRADLE_PLUGIN_VERSION_PLACEHOLDER")
- id("com.android.library").version("AGP_VERSION_PLACEHOLDER")
- id("com.android.application").version("AGP_VERSION_PLACEHOLDER")
+ id("com.android.kotlin.multiplatform.library").version("AGP_VERSION_PLACEHOLDER")
}
}
dependencyResolutionManagement {
diff --git a/gradle-plugins/compose/src/test/test-projects/misc/newAgpResources/appModule/build.gradle.kts b/gradle-plugins/compose/src/test/test-projects/misc/newAgpResources/appModule/build.gradle.kts
deleted file mode 100644
index ce7429f97bb..00000000000
--- a/gradle-plugins/compose/src/test/test-projects/misc/newAgpResources/appModule/build.gradle.kts
+++ /dev/null
@@ -1,37 +0,0 @@
-plugins {
- id("org.jetbrains.compose")
- kotlin("multiplatform")
- kotlin("plugin.compose")
- id("com.android.application")
-}
-
-kotlin {
- jvmToolchain(11)
- androidTarget()
- jvm()
-
- sourceSets {
- commonMain.dependencies {
- implementation(compose.runtime)
- implementation(compose.material3)
- implementation(compose.components.resources)
- implementation(project(":featureModule"))
- }
-
- jvmMain.dependencies {
- implementation(compose.desktop.currentOs)
- }
- }
-}
-
-android {
- namespace = "me.sample.app"
- compileSdk = 35
- defaultConfig {
- applicationId = "org.example.project"
- minSdk = 24
- targetSdk = 35
- versionCode = 1
- versionName = "1.0"
- }
-}
\ No newline at end of file
diff --git a/gradle-plugins/compose/src/test/test-projects/misc/newAgpResources/appModule/src/commonMain/composeResources/values/strings.xml b/gradle-plugins/compose/src/test/test-projects/misc/newAgpResources/appModule/src/commonMain/composeResources/values/strings.xml
deleted file mode 100644
index fa6300c278c..00000000000
--- a/gradle-plugins/compose/src/test/test-projects/misc/newAgpResources/appModule/src/commonMain/composeResources/values/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
- App text str_1
-
\ No newline at end of file
diff --git a/gradle-plugins/compose/src/test/test-projects/misc/oldComposePlugin/build.gradle b/gradle-plugins/compose/src/test/test-projects/misc/oldComposePlugin/build.gradle
index fc01cd69857..a21bca4f388 100644
--- a/gradle-plugins/compose/src/test/test-projects/misc/oldComposePlugin/build.gradle
+++ b/gradle-plugins/compose/src/test/test-projects/misc/oldComposePlugin/build.gradle
@@ -1,7 +1,7 @@
import org.jetbrains.compose.desktop.application.dsl.TargetFormat
plugins {
- id "com.android.application"
+ id "com.android.kotlin.multiplatform.library"
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.compose"
}
@@ -9,7 +9,11 @@ plugins {
kotlin {
// empty stub (no actual android app) to detect configuration conflicts
// like https://github.com/JetBrains/compose-jb/issues/2345
- android()
+ androidLibrary {
+ namespace = "org.jetbrains.compose.testapp"
+ compileSdk = 35
+ minSdk = 23
+ }
jvm()
sourceSets {
@@ -23,24 +27,6 @@ kotlin {
}
}
-android {
- namespace = "org.jetbrains.compose.testapp"
- compileSdk = 35
-
- defaultConfig {
- minSdk = 23
- targetSdk = 35
- }
-}
-
-kotlin {
- jvm {
- jvmToolchain {
- languageVersion.set(JavaLanguageVersion.of(11))
- }
- }
-}
-
compose.desktop {
application {
mainClass = "MainKt"
diff --git a/gradle-plugins/compose/src/test/test-projects/misc/oldComposePlugin/settings.gradle b/gradle-plugins/compose/src/test/test-projects/misc/oldComposePlugin/settings.gradle
index 63b6efd24fb..dfdd21d429c 100644
--- a/gradle-plugins/compose/src/test/test-projects/misc/oldComposePlugin/settings.gradle
+++ b/gradle-plugins/compose/src/test/test-projects/misc/oldComposePlugin/settings.gradle
@@ -2,7 +2,7 @@ pluginManagement {
plugins {
id 'org.jetbrains.kotlin.multiplatform' version 'KOTLIN_VERSION_PLACEHOLDER'
id 'org.jetbrains.compose' version 'COMPOSE_GRADLE_PLUGIN_VERSION_PLACEHOLDER'
- id 'com.android.application' version 'AGP_VERSION_PLACEHOLDER'
+ id 'com.android.kotlin.multiplatform.library' version 'AGP_VERSION_PLACEHOLDER'
}
repositories {
mavenLocal()
diff --git a/gradle-plugins/compose/src/test/test-projects/misc/skikoWasm/gradle.properties b/gradle-plugins/compose/src/test/test-projects/misc/skikoWasm/gradle.properties
index 4fae7bbeffc..8ec3c6acb02 100644
--- a/gradle-plugins/compose/src/test/test-projects/misc/skikoWasm/gradle.properties
+++ b/gradle-plugins/compose/src/test/test-projects/misc/skikoWasm/gradle.properties
@@ -1,2 +1 @@
org.gradle.jvmargs=-Xmx8096M
-org.jetbrains.compose.experimental.jscanvas.enabled=true
diff --git a/gradle-plugins/compose/src/test/test-projects/misc/testResources/gradle.properties b/gradle-plugins/compose/src/test/test-projects/misc/testResources/gradle.properties
index 2f532ce0eaa..260cded72af 100644
--- a/gradle-plugins/compose/src/test/test-projects/misc/testResources/gradle.properties
+++ b/gradle-plugins/compose/src/test/test-projects/misc/testResources/gradle.properties
@@ -1,4 +1,3 @@
org.gradle.jvmargs=-Xmx8096M
android.useAndroidX=true
-org.jetbrains.compose.experimental.jscanvas.enabled=true
org.jetbrains.compose.experimental.macos.enabled=true
\ No newline at end of file
diff --git a/gradle-plugins/compose/src/test/test-projects/misc/testResources/settings.gradle.kts b/gradle-plugins/compose/src/test/test-projects/misc/testResources/settings.gradle.kts
index 59c6b748620..3b88e41b36f 100644
--- a/gradle-plugins/compose/src/test/test-projects/misc/testResources/settings.gradle.kts
+++ b/gradle-plugins/compose/src/test/test-projects/misc/testResources/settings.gradle.kts
@@ -7,7 +7,6 @@ pluginManagement {
maven("https://maven.pkg.jetbrains.space/public/p/compose/dev")
}
plugins {
- id("com.android.application").version("AGP_VERSION_PLACEHOLDER")
id("org.jetbrains.kotlin.multiplatform").version("KOTLIN_VERSION_PLACEHOLDER")
id("org.jetbrains.kotlin.plugin.compose").version("KOTLIN_VERSION_PLACEHOLDER")
id("org.jetbrains.compose").version("COMPOSE_GRADLE_PLUGIN_VERSION_PLACEHOLDER")
diff --git a/gradle-plugins/gradle.properties b/gradle-plugins/gradle.properties
index 2509f0e7919..63ea59c815d 100644
--- a/gradle-plugins/gradle.properties
+++ b/gradle-plugins/gradle.properties
@@ -16,11 +16,11 @@ compose.tests.kotlin.version=2.2.20
# Don't forget to edit versions in .github/workflows/gradle-plugin.yml as well
# and Publish.Subtasks.buildTypes.gradle.GradlePluginTestKt#gradleVersions in the TC config
# minimal and current gradle version
-compose.tests.gradle.versions=8.7, 9.0.0
-compose.tests.agp.versions=8.6.0, 8.9.0, 9.0.0-alpha01
+compose.tests.gradle.versions=8.13, 9.2.0
+compose.tests.agp.versions=8.11.2, 8.12.3, 9.0.0-alpha13
# gradle and agp versions should be compatible:
# https://developer.android.com/build/releases/gradle-plugin#updating-plugin
-compose.tests.gradle-agp.exclude=8.7/8.9.0, 8.7/9.0.0-alpha01
+compose.tests.gradle-agp.exclude=8.13/9.0.0-alpha13
# A version of Gradle plugin, that will be published,
# unless overridden by COMPOSE_GRADLE_PLUGIN_VERSION env var.