From 1c1397801d57f9744c7e1f0063ef56ecf9fca9f7 Mon Sep 17 00:00:00 2001 From: Rodrigo Lazo Paz Date: Tue, 8 Jul 2025 18:05:32 -0400 Subject: [PATCH 1/4] [Plugin] Remove ktx-related code from build scripts All ktx related functionality has been merged to the main libraries, and the KTX-only code removed. See #7106 --- .../firebase-appcheck-debug-testing.gradle | 1 - .../firebase-appcheck-debug.gradle | 1 - .../firebase-appcheck-playintegrity.gradle | 1 - firebase-abt/firebase-abt.gradle | 1 - firebase-ai/firebase-ai.gradle.kts | 1 - .../firebase-appdistribution.gradle | 1 - ...firebase-dynamic-module-support.gradle.kts | 1 - .../firebase-crashlytics-ndk.gradle | 1 - .../firebase-dataconnect.gradle.kts | 1 - .../firebase-messaging-directboot.gradle | 1 - .../firebase-sessions.gradle.kts | 1 - .../firebase-vertexai.gradle.kts | 1 - .../plugins/BaseFirebaseLibraryPlugin.kt | 1 - .../gradle/plugins/MakeReleaseNotesTask.kt | 11 -------- .../plugins/MoveUnreleasedChangesTask.kt | 26 +------------------ .../ReleaseNotesConfigurationExtension.kt | 4 --- 16 files changed, 1 insertion(+), 53 deletions(-) diff --git a/appcheck/firebase-appcheck-debug-testing/firebase-appcheck-debug-testing.gradle b/appcheck/firebase-appcheck-debug-testing/firebase-appcheck-debug-testing.gradle index 03624b20da0..64a1ff3bfa0 100644 --- a/appcheck/firebase-appcheck-debug-testing/firebase-appcheck-debug-testing.gradle +++ b/appcheck/firebase-appcheck-debug-testing/firebase-appcheck-debug-testing.gradle @@ -23,7 +23,6 @@ firebaseLibrary { releaseNotes { name.set("{{app_check}} Debug Testing") versionName.set("appcheck-debug-testing") - hasKTX.set(false) } } diff --git a/appcheck/firebase-appcheck-debug/firebase-appcheck-debug.gradle b/appcheck/firebase-appcheck-debug/firebase-appcheck-debug.gradle index 44a14355d03..55028d221e1 100644 --- a/appcheck/firebase-appcheck-debug/firebase-appcheck-debug.gradle +++ b/appcheck/firebase-appcheck-debug/firebase-appcheck-debug.gradle @@ -21,7 +21,6 @@ firebaseLibrary { releaseNotes { name.set("{{app_check}} Debug") versionName.set("appcheck-debug") - hasKTX.set(false) } } diff --git a/appcheck/firebase-appcheck-playintegrity/firebase-appcheck-playintegrity.gradle b/appcheck/firebase-appcheck-playintegrity/firebase-appcheck-playintegrity.gradle index 82a4ba07e2d..6e430d58eac 100644 --- a/appcheck/firebase-appcheck-playintegrity/firebase-appcheck-playintegrity.gradle +++ b/appcheck/firebase-appcheck-playintegrity/firebase-appcheck-playintegrity.gradle @@ -21,7 +21,6 @@ firebaseLibrary { releaseNotes { name.set("{{app_check}} Play integrity") versionName.set("appcheck-playintegrity") - hasKTX.set(false) } } diff --git a/firebase-abt/firebase-abt.gradle b/firebase-abt/firebase-abt.gradle index 3743c3b9546..625d9a93a31 100644 --- a/firebase-abt/firebase-abt.gradle +++ b/firebase-abt/firebase-abt.gradle @@ -22,7 +22,6 @@ firebaseLibrary { releaseNotes { name.set("{{ab_testing}}") versionName.set("ab_testing") - hasKTX.set(false) } } diff --git a/firebase-ai/firebase-ai.gradle.kts b/firebase-ai/firebase-ai.gradle.kts index fb4a8bd6f1a..70b2883d287 100644 --- a/firebase-ai/firebase-ai.gradle.kts +++ b/firebase-ai/firebase-ai.gradle.kts @@ -30,7 +30,6 @@ firebaseLibrary { releaseNotes { name.set("{{firebase_ai_logic}}") versionName.set("ai") - hasKTX.set(false) } } diff --git a/firebase-appdistribution/firebase-appdistribution.gradle b/firebase-appdistribution/firebase-appdistribution.gradle index a6333aff391..b71c20c4536 100644 --- a/firebase-appdistribution/firebase-appdistribution.gradle +++ b/firebase-appdistribution/firebase-appdistribution.gradle @@ -24,7 +24,6 @@ firebaseLibrary { releaseNotes { name.set("{{appdistro}}") versionName.set("app-distro") - hasKTX.set(false) } } diff --git a/firebase-components/firebase-dynamic-module-support/firebase-dynamic-module-support.gradle.kts b/firebase-components/firebase-dynamic-module-support/firebase-dynamic-module-support.gradle.kts index bdce2e7c87c..1166b008e22 100644 --- a/firebase-components/firebase-dynamic-module-support/firebase-dynamic-module-support.gradle.kts +++ b/firebase-components/firebase-dynamic-module-support/firebase-dynamic-module-support.gradle.kts @@ -22,7 +22,6 @@ firebaseLibrary { releaseNotes { name.set("Dynamic feature modules support") versionName.set("dynamic-feature-modules-support") - hasKTX.set(false) } } diff --git a/firebase-crashlytics-ndk/firebase-crashlytics-ndk.gradle b/firebase-crashlytics-ndk/firebase-crashlytics-ndk.gradle index 4198cdc64f6..6a3da292f11 100644 --- a/firebase-crashlytics-ndk/firebase-crashlytics-ndk.gradle +++ b/firebase-crashlytics-ndk/firebase-crashlytics-ndk.gradle @@ -26,7 +26,6 @@ firebaseLibrary { releaseNotes { name.set("{{crashlytics}} NDK") versionName.set("crashlytics-ndk") - hasKTX.set(false) } testLab.enabled = true publishJavadoc = false diff --git a/firebase-dataconnect/firebase-dataconnect.gradle.kts b/firebase-dataconnect/firebase-dataconnect.gradle.kts index 914985ac18d..bdc23837da1 100644 --- a/firebase-dataconnect/firebase-dataconnect.gradle.kts +++ b/firebase-dataconnect/firebase-dataconnect.gradle.kts @@ -31,7 +31,6 @@ firebaseLibrary { releaseNotes { name.set("{{data_connect_short}}") versionName.set("data-connect") - hasKTX.set(false) } } diff --git a/firebase-messaging-directboot/firebase-messaging-directboot.gradle b/firebase-messaging-directboot/firebase-messaging-directboot.gradle index 4952f714c01..f26fca21b02 100644 --- a/firebase-messaging-directboot/firebase-messaging-directboot.gradle +++ b/firebase-messaging-directboot/firebase-messaging-directboot.gradle @@ -23,7 +23,6 @@ firebaseLibrary { releaseNotes { name.set("Cloud Messaging Direct Boot") versionName.set("messaging-directboot") - hasKTX.set(false) } } diff --git a/firebase-sessions/firebase-sessions.gradle.kts b/firebase-sessions/firebase-sessions.gradle.kts index 6ae1a53efa5..b8d3ba8e8fe 100644 --- a/firebase-sessions/firebase-sessions.gradle.kts +++ b/firebase-sessions/firebase-sessions.gradle.kts @@ -32,7 +32,6 @@ firebaseLibrary { releaseNotes { enabled = false - hasKTX = false } } diff --git a/firebase-vertexai/firebase-vertexai.gradle.kts b/firebase-vertexai/firebase-vertexai.gradle.kts index 99e45f79253..e27f3799cde 100644 --- a/firebase-vertexai/firebase-vertexai.gradle.kts +++ b/firebase-vertexai/firebase-vertexai.gradle.kts @@ -30,7 +30,6 @@ firebaseLibrary { releaseNotes { name.set("{{vertex_ai_in_firebase}}") versionName.set("vertex-ai") - hasKTX.set(false) } } diff --git a/plugins/src/main/java/com/google/firebase/gradle/plugins/BaseFirebaseLibraryPlugin.kt b/plugins/src/main/java/com/google/firebase/gradle/plugins/BaseFirebaseLibraryPlugin.kt index b8f2c5108fb..f3c187b033a 100644 --- a/plugins/src/main/java/com/google/firebase/gradle/plugins/BaseFirebaseLibraryPlugin.kt +++ b/plugins/src/main/java/com/google/firebase/gradle/plugins/BaseFirebaseLibraryPlugin.kt @@ -75,7 +75,6 @@ abstract class BaseFirebaseLibraryPlugin : Plugin { releaseNotes { enabled.convention(true) - hasKTX.convention(true) artifactId.convention(project.name) artifactName.convention(project.name) } diff --git a/plugins/src/main/java/com/google/firebase/gradle/plugins/MakeReleaseNotesTask.kt b/plugins/src/main/java/com/google/firebase/gradle/plugins/MakeReleaseNotesTask.kt index bdd5520325c..160ee428da8 100644 --- a/plugins/src/main/java/com/google/firebase/gradle/plugins/MakeReleaseNotesTask.kt +++ b/plugins/src/main/java/com/google/firebase/gradle/plugins/MakeReleaseNotesTask.kt @@ -115,21 +115,10 @@ abstract class MakeReleaseNotesTask : DefaultTask() { .trimMargin() .trim() - val ktxReleaseNotes = - """ - |#### ${config.name.get()} Kotlin extensions version $version {: #${config.versionName.get()}-ktx_v$versionClassifier} - | - |${unreleased.ktx?.toReleaseNotes() ?: KTXTransitiveReleaseText(project.name)} - """ - .trimMargin() - .trim() - .takeIf { config.hasKTX.get() } - val releaseNotes = """ |$baseReleaseNotes | - |${ktxReleaseNotes.orEmpty()} """ .trimMargin() .trim() diff --git a/plugins/src/main/java/com/google/firebase/gradle/plugins/MoveUnreleasedChangesTask.kt b/plugins/src/main/java/com/google/firebase/gradle/plugins/MoveUnreleasedChangesTask.kt index 1695f51c460..fe8b9d8e3ba 100644 --- a/plugins/src/main/java/com/google/firebase/gradle/plugins/MoveUnreleasedChangesTask.kt +++ b/plugins/src/main/java/com/google/firebase/gradle/plugins/MoveUnreleasedChangesTask.kt @@ -78,31 +78,7 @@ abstract class MoveUnreleasedChangesTask : DefaultTask() { if (!unreleased.hasContent()) throw StopActionException("No changes to move for project: ${project.name}") - return unreleased.copy(version = releaseVersion.get(), ktx = createEntryForKTX(unreleased)) - } - - /** - * Creates the [ReleaseEntry.ktx] for a new release. - * - * Ensures the entry is only created if the library has a KTX lib to begin with, and adds template - * subtext if it lacks any changes. - * - * @see ReleaseNotesConfigurationExtension - * @see KTXTransitiveReleaseText - */ - private fun createEntryForKTX(release: ReleaseEntry): ReleaseContent? { - val releaseNotesConfig = project.firebaseLibrary.releaseNotes - - val nonEmptyKTXContent = release.ktx?.takeIf { it.hasContent() } - - val ktxContent = - nonEmptyKTXContent - ?: ReleaseContent( - KTXTransitiveReleaseText(releaseNotesConfig.artifactName.get()), - emptyList(), - ) - - return ktxContent.takeIf { releaseNotesConfig.hasKTX.get() } + return unreleased.copy(version = releaseVersion.get()) } private fun configure() { diff --git a/plugins/src/main/java/com/google/firebase/gradle/plugins/ReleaseNotesConfigurationExtension.kt b/plugins/src/main/java/com/google/firebase/gradle/plugins/ReleaseNotesConfigurationExtension.kt index f257052b09e..b480bc95e0f 100644 --- a/plugins/src/main/java/com/google/firebase/gradle/plugins/ReleaseNotesConfigurationExtension.kt +++ b/plugins/src/main/java/com/google/firebase/gradle/plugins/ReleaseNotesConfigurationExtension.kt @@ -29,9 +29,6 @@ import org.gradle.api.provider.Property * @property enabled Whether to generate release notes for this library. Defaults to true. * @property name The variable name mapping for this library, defined on G3. * @property versionName The version name mapping for this library, defined on G3. - * @property hasKTX The library has a sub module with the suffix '-ktx' that releases alongside this - * library, and should have the transitive text added to the release notes. Defaults to true. Will - * likely be removed when we officially drop KTX libraries. * @property artifactName The name of the generation artifact. _Only_ required if your project's * name is different than your generated artifact name. Defaults to the project name. * @see MakeReleaseNotesTask @@ -40,6 +37,5 @@ abstract class ReleaseNotesConfigurationExtension { abstract val enabled: Property abstract val name: Property abstract val versionName: Property - abstract val hasKTX: Property abstract val artifactName: Property } From 7bdc85a0cc60639341e5dfb0799b55560f4c635c Mon Sep 17 00:00:00 2001 From: Rodrigo Lazo Paz Date: Tue, 8 Jul 2025 18:13:59 -0400 Subject: [PATCH 2/4] Address test breakage --- .../plugins/MoveUnreleasedChangesTests.kt | 20 ------------------- .../firebase-storage/CHANGELOG.md | 8 -------- .../MakeReleaseNotes/release-notes.md | 9 --------- 3 files changed, 37 deletions(-) diff --git a/plugins/src/test/kotlin/com/google/firebase/gradle/plugins/MoveUnreleasedChangesTests.kt b/plugins/src/test/kotlin/com/google/firebase/gradle/plugins/MoveUnreleasedChangesTests.kt index 7917d952397..88109d91074 100644 --- a/plugins/src/test/kotlin/com/google/firebase/gradle/plugins/MoveUnreleasedChangesTests.kt +++ b/plugins/src/test/kotlin/com/google/firebase/gradle/plugins/MoveUnreleasedChangesTests.kt @@ -18,14 +18,10 @@ package com.google.firebase.gradle.plugins import com.google.firebase.gradle.plugins.ChangeType.FIXED import io.kotest.core.spec.style.FunSpec -import io.kotest.matchers.collections.shouldBeEmpty import io.kotest.matchers.collections.shouldContainExactly import io.kotest.matchers.collections.shouldHaveAtLeastSize import io.kotest.matchers.collections.shouldHaveSize import io.kotest.matchers.shouldBe -import io.kotest.matchers.shouldNot -import io.kotest.matchers.shouldNotBe -import io.kotest.matchers.string.beEmpty import io.kotest.matchers.string.shouldMatch import java.io.File import org.gradle.testkit.runner.GradleRunner @@ -56,22 +52,6 @@ class MoveUnreleasedChangesTests : FunSpec() { releasedEntry.ktx shouldBe ktxEntry } - @Test - fun `Uses template text on KTX libs with no changes`() { - basicChangelog.releases.first().ktx shouldBe null - - val newChangelog = buildWithChangelog(basicChangelog) - validateChangelog(basicChangelog, newChangelog) - - val releasedEntry = newChangelog.releases[1] - - releasedEntry.ktx shouldNotBe null - releasedEntry.ktx?.let { - it.subtext shouldNot beEmpty() - it.changes.shouldBeEmpty() - } - } - @Test fun `Handles empty Unreleased sections`() { val changelog = basicChangelog.replaceUnreleasedWith { ReleaseEntry.Empty } diff --git a/plugins/src/test/resources/BasicProject/firebase-storage/CHANGELOG.md b/plugins/src/test/resources/BasicProject/firebase-storage/CHANGELOG.md index 8b72642125d..6376319e357 100644 --- a/plugins/src/test/resources/BasicProject/firebase-storage/CHANGELOG.md +++ b/plugins/src/test/resources/BasicProject/firebase-storage/CHANGELOG.md @@ -45,14 +45,6 @@ Note: We did some super cool stuff here! * [removed] some stuff that we didn't really like got removed -## Kotlin -* [feature] Added - [`Query.dataObjects()`](/docs/reference/kotlin/com/google/firebase/firestore/ktx/package-summary#dataObjects) - and - [`DocumentReference.dataObjects()`](/docs/reference/kotlin/com/google/firebase/firestore/ktx/package-summary#dataObjects_1) - Kotlin Flows to listen for realtime updates and convert its values to a - specific type. - # 24.5.0 * [fixed] Fixed stack overflow caused by deeply nested server timestamps. (GitHub [#4702](//github.com/firebase/firebase-android-sdk/issues/4702){: .external}) diff --git a/plugins/src/test/resources/MakeReleaseNotes/release-notes.md b/plugins/src/test/resources/MakeReleaseNotes/release-notes.md index c6d5cd8ce09..b5578c8c386 100644 --- a/plugins/src/test/resources/MakeReleaseNotes/release-notes.md +++ b/plugins/src/test/resources/MakeReleaseNotes/release-notes.md @@ -45,12 +45,3 @@ Note: We did some super cool stuff here! * {{unchanged}} Idk ig we did some stuff * {{removed}} some stuff that we didn't really like got removed - -#### {{firebase_storage_full}} Kotlin extensions version 24.6.0 {: #storage-ktx_v24-6-0} - -* {{feature}} Added - [`Query.dataObjects()`](/docs/reference/kotlin/com/google/firebase/firestore/ktx/package-summary#dataObjects) - and - [`DocumentReference.dataObjects()`](/docs/reference/kotlin/com/google/firebase/firestore/ktx/package-summary#dataObjects_1) - Kotlin Flows to listen for realtime updates and convert its values to a - specific type. \ No newline at end of file From 4b79ed5faf6726e868cd5545fd6ac6ccf277fb99 Mon Sep 17 00:00:00 2001 From: Rodrigo Lazo Paz Date: Tue, 8 Jul 2025 18:53:50 -0400 Subject: [PATCH 3/4] Fi format --- firebase-sessions/firebase-sessions.gradle.kts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/firebase-sessions/firebase-sessions.gradle.kts b/firebase-sessions/firebase-sessions.gradle.kts index b8d3ba8e8fe..2b13d0aaea2 100644 --- a/firebase-sessions/firebase-sessions.gradle.kts +++ b/firebase-sessions/firebase-sessions.gradle.kts @@ -30,9 +30,7 @@ firebaseLibrary { testLab.enabled = true publishJavadoc = false - releaseNotes { - enabled = false - } + releaseNotes { enabled = false } } android { From c9bade298d56226dd86c4a9e105eae4698779116 Mon Sep 17 00:00:00 2001 From: Rodrigo Lazo Paz Date: Tue, 8 Jul 2025 18:57:20 -0400 Subject: [PATCH 4/4] Simplify code --- .../firebase/gradle/plugins/MakeReleaseNotesTask.kt | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/plugins/src/main/java/com/google/firebase/gradle/plugins/MakeReleaseNotesTask.kt b/plugins/src/main/java/com/google/firebase/gradle/plugins/MakeReleaseNotesTask.kt index 160ee428da8..696621c03d2 100644 --- a/plugins/src/main/java/com/google/firebase/gradle/plugins/MakeReleaseNotesTask.kt +++ b/plugins/src/main/java/com/google/firebase/gradle/plugins/MakeReleaseNotesTask.kt @@ -106,7 +106,7 @@ abstract class MakeReleaseNotesTask : DefaultTask() { val versionClassifier = version.replace(".", "-") - val baseReleaseNotes = + val releaseNotes = """ |### ${config.name.get()} version $version {: #${config.versionName.get()}_v$versionClassifier} | @@ -115,14 +115,6 @@ abstract class MakeReleaseNotesTask : DefaultTask() { .trimMargin() .trim() - val releaseNotes = - """ - |$baseReleaseNotes - | - """ - .trimMargin() - .trim() - releaseNotesFile.asFile.get().writeText(releaseNotes + "\n") }