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.