From 1a395b6a642ac15f59d2abd140d1209edc87aa79 Mon Sep 17 00:00:00 2001 From: Rodrigo Lazo Paz Date: Wed, 11 Mar 2026 00:48:41 -0400 Subject: [PATCH 1/3] [Infra] Upgrade to Kotlin 2.1 compiler and remove image downsizing Upgraded the project to use the Kotlin compiler 2.1 by updating the Kotlin Android plugin version, but keeping the compatibility with the current support versio, 2.0, by setting the language version for Kotlin compile tasks, and configuring core libraries version. Additionally, updated the `genaiPrompt` dependency from `1.0.0-alpha1` to `1.0.0-beta1`. This updated enable us to Remove the local image downsizing logic within `Converters.kt`, as the bitmap resizing fix is part of the updated dependency. --- .../google/firebase/ai/ondevice/Converters.kt | 23 +------------------ build.gradle.kts | 1 + gradle/libs.versions.toml | 2 +- .../plugins/FirebaseAndroidLibraryPlugin.kt | 11 +++++++++ 4 files changed, 14 insertions(+), 23 deletions(-) diff --git a/ai-logic/firebase-ai-ondevice/src/main/kotlin/com/google/firebase/ai/ondevice/Converters.kt b/ai-logic/firebase-ai-ondevice/src/main/kotlin/com/google/firebase/ai/ondevice/Converters.kt index ef615423857..3eefdd0cd95 100644 --- a/ai-logic/firebase-ai-ondevice/src/main/kotlin/com/google/firebase/ai/ondevice/Converters.kt +++ b/ai-logic/firebase-ai-ondevice/src/main/kotlin/com/google/firebase/ai/ondevice/Converters.kt @@ -33,7 +33,7 @@ import kotlin.math.min internal fun com.google.firebase.ai.ondevice.interop.TextPart.toMlKit(): TextPart = TextPart(text) internal fun com.google.firebase.ai.ondevice.interop.ImagePart.toMlKit(): ImagePart = - ImagePart(downsizeBitmapIfNeeded(bitmap)) + ImagePart(bitmap) // ============================================ // `CountTokens*` converter extension functions @@ -89,24 +89,3 @@ private fun generateContentRequest( builder.init() return builder.build() } - -private fun downsizeBitmapIfNeeded(bitmap: Bitmap): Bitmap { - val IMAGE_SHORTER_DIMENSION_MAX_VALUE: Int = 768 - val width = bitmap.width - val height = bitmap.height - val shorterDimension: Int = min(width, height) - if (shorterDimension <= IMAGE_SHORTER_DIMENSION_MAX_VALUE) { - return bitmap - } - - val scaleFactor = (IMAGE_SHORTER_DIMENSION_MAX_VALUE.toDouble()) / shorterDimension - - val newWidth = (width * scaleFactor).toInt() - val newHeight = (height * scaleFactor).toInt() - - val resizedBitmap = Bitmap.createScaledBitmap(bitmap, newWidth, newHeight, /* filter= */ false) - if (resizedBitmap != bitmap) { - bitmap.recycle() - } - return resizedBitmap -} diff --git a/build.gradle.kts b/build.gradle.kts index 3dccea32af8..6ff7b3d66d7 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -22,6 +22,7 @@ plugins { alias(libs.plugins.protobuf) apply false alias(libs.plugins.errorprone) alias(libs.plugins.crashlytics) apply false + id("org.jetbrains.kotlin.android") version "2.1.21" apply false id("PublishingPlugin") id("test-report") id("firebase-ci") diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index a3ebcfabb78..5d4845cd5f3 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -28,7 +28,7 @@ firebaseAnnotations = "17.0.0" firebaseCommon = "22.0.1" firebaseComponents = "19.0.0" firebaseCrashlyticsGradle = "3.0.4" -genaiPrompt = "1.0.0-alpha1" +genaiPrompt = "1.0.0-beta1" glide = "5.0.5" googleApiClient = "2.8.1" googleServices = "4.3.15" diff --git a/plugins/src/main/java/com/google/firebase/gradle/plugins/FirebaseAndroidLibraryPlugin.kt b/plugins/src/main/java/com/google/firebase/gradle/plugins/FirebaseAndroidLibraryPlugin.kt index 9a5ba75a56c..22e387e26dc 100644 --- a/plugins/src/main/java/com/google/firebase/gradle/plugins/FirebaseAndroidLibraryPlugin.kt +++ b/plugins/src/main/java/com/google/firebase/gradle/plugins/FirebaseAndroidLibraryPlugin.kt @@ -30,7 +30,10 @@ import org.gradle.kotlin.dsl.create import org.gradle.kotlin.dsl.getByType import org.gradle.kotlin.dsl.register import org.gradle.kotlin.dsl.withType +import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension import org.jetbrains.kotlin.gradle.tasks.KotlinCompile +import org.jetbrains.kotlin.gradle.dsl.KotlinVersion +import org.jetbrains.kotlin.gradle.dsl.kotlinExtension /** * Plugin for Android Firebase Libraries. @@ -58,6 +61,14 @@ class FirebaseAndroidLibraryPlugin : BaseFirebaseLibraryPlugin() { project.tasks.withType { kotlinOptions.freeCompilerArgs = listOf("-module-name", kotlinModuleName(project)) kotlinOptions.jvmTarget = "1.8" + kotlinOptions.languageVersion = KotlinVersion.KOTLIN_2_0.version + } + + project.afterEvaluate { + val kotlinExtension = project.extensions.findByType(KotlinProjectExtension::class.java) + if (kotlinExtension != null) { + kotlinExtension.coreLibrariesVersion = "2.0.21" + } } project.apply() From 351967e8e20191f1914a2f2c2b6adfd43249ec5c Mon Sep 17 00:00:00 2001 From: Rodrigo Lazo Paz Date: Wed, 11 Mar 2026 09:59:43 -0400 Subject: [PATCH 2/3] Format fixes --- .../main/kotlin/com/google/firebase/ai/ondevice/Converters.kt | 2 -- 1 file changed, 2 deletions(-) diff --git a/ai-logic/firebase-ai-ondevice/src/main/kotlin/com/google/firebase/ai/ondevice/Converters.kt b/ai-logic/firebase-ai-ondevice/src/main/kotlin/com/google/firebase/ai/ondevice/Converters.kt index 3eefdd0cd95..fb5c885ca28 100644 --- a/ai-logic/firebase-ai-ondevice/src/main/kotlin/com/google/firebase/ai/ondevice/Converters.kt +++ b/ai-logic/firebase-ai-ondevice/src/main/kotlin/com/google/firebase/ai/ondevice/Converters.kt @@ -16,7 +16,6 @@ package com.google.firebase.ai.ondevice -import android.graphics.Bitmap import com.google.firebase.ai.ondevice.interop.Candidate import com.google.firebase.ai.ondevice.interop.CountTokensResponse import com.google.firebase.ai.ondevice.interop.FinishReason @@ -25,7 +24,6 @@ import com.google.firebase.ai.ondevice.interop.GenerateContentResponse import com.google.mlkit.genai.prompt.GenerateContentRequest import com.google.mlkit.genai.prompt.ImagePart import com.google.mlkit.genai.prompt.TextPart -import kotlin.math.min // ==================================== // `Part` converter extension functions From 18b4be91cf35de4e574801d4f614705914b95734 Mon Sep 17 00:00:00 2001 From: Rodrigo Lazo Paz Date: Wed, 11 Mar 2026 10:03:35 -0400 Subject: [PATCH 3/3] Further format fixes --- .../firebase/gradle/plugins/FirebaseAndroidLibraryPlugin.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/src/main/java/com/google/firebase/gradle/plugins/FirebaseAndroidLibraryPlugin.kt b/plugins/src/main/java/com/google/firebase/gradle/plugins/FirebaseAndroidLibraryPlugin.kt index 22e387e26dc..58c565e3c19 100644 --- a/plugins/src/main/java/com/google/firebase/gradle/plugins/FirebaseAndroidLibraryPlugin.kt +++ b/plugins/src/main/java/com/google/firebase/gradle/plugins/FirebaseAndroidLibraryPlugin.kt @@ -31,9 +31,9 @@ import org.gradle.kotlin.dsl.getByType import org.gradle.kotlin.dsl.register import org.gradle.kotlin.dsl.withType import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension -import org.jetbrains.kotlin.gradle.tasks.KotlinCompile import org.jetbrains.kotlin.gradle.dsl.KotlinVersion import org.jetbrains.kotlin.gradle.dsl.kotlinExtension +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile /** * Plugin for Android Firebase Libraries.