From b12c704a3f2a244d63bc7b73f4a6a7d1d8b7b77e Mon Sep 17 00:00:00 2001 From: rosariopf Date: Wed, 20 Aug 2025 17:03:46 +0100 Subject: [PATCH] refactor: vertexai --> firebase-ai --- firebase-ai/.gitignore | 16 +- {vertexai => firebase-ai}/app/.gitignore | 0 .../app/build.gradle.kts | 6 +- firebase-ai/{ => app}/proguard-rules.pro | 0 .../app/src/main/AndroidManifest.xml | 0 .../firebase/example/ailogic}/MainActivity.kt | 4 +- .../ailogic/java/GeneralViewModel.java | 4 + .../ailogic/kotlin/GeneralViewModel.kt | 4 + .../example/ailogic}/ui/theme/Color.kt | 2 +- .../example/ailogic}/ui/theme/Theme.kt | 2 +- .../example/ailogic}/ui/theme/Type.kt | 2 +- .../drawable-v24/ic_launcher_foreground.xml | 0 .../res/drawable/ic_launcher_background.xml | 0 .../app/src/main/res/drawable/sparky.png | Bin .../main/res/drawable/sparky_eats_pizza.png | Bin .../res/mipmap-anydpi-v26/ic_launcher.xml | 0 .../mipmap-anydpi-v26/ic_launcher_round.xml | 0 .../src/main/res/mipmap-hdpi/ic_launcher.webp | Bin .../res/mipmap-hdpi/ic_launcher_round.webp | Bin .../src/main/res/mipmap-mdpi/ic_launcher.webp | Bin .../res/mipmap-mdpi/ic_launcher_round.webp | Bin .../main/res/mipmap-xhdpi/ic_launcher.webp | Bin .../res/mipmap-xhdpi/ic_launcher_round.webp | Bin .../main/res/mipmap-xxhdpi/ic_launcher.webp | Bin .../res/mipmap-xxhdpi/ic_launcher_round.webp | Bin .../main/res/mipmap-xxxhdpi/ic_launcher.webp | Bin .../res/mipmap-xxxhdpi/ic_launcher_round.webp | Bin .../{ => app}/src/main/res/values/colors.xml | 0 .../app/src/main/res/values/strings.xml | 0 .../app/src/main/res/values/themes.xml | 0 .../app/src/main/res/xml/backup_rules.xml | 0 .../main/res/xml/data_extraction_rules.xml | 0 firebase-ai/build.gradle.kts | 64 +-- {vertexai => firebase-ai}/gradle.properties | 0 .../gradle/wrapper/gradle-wrapper.jar | Bin .../gradle/wrapper/gradle-wrapper.properties | 2 +- {vertexai => firebase-ai}/gradlew | 0 {vertexai => firebase-ai}/gradlew.bat | 0 {vertexai => firebase-ai}/settings.gradle.kts | 0 firebase-ai/src/main/AndroidManifest.xml | 24 -- .../firebase/example/ai/MainActivity.kt | 47 --- .../example/ai/googleai/FirebaseAILogic.kt | 19 - .../ai/sendrequests/GenerateMultimodal.kt | 270 ------------ .../example/ai/sendrequests/GenerateText.kt | 33 -- .../firebase/example/ai/ui/theme/Theme.kt | 58 --- .../example/ai/vertexai/FirebaseAILogic.kt | 18 - firebase-ai/src/main/res/drawable/sparky.xml | 170 -------- .../main/res/drawable/sparky_eats_pizza.xml | 170 -------- firebase-ai/src/main/res/values/strings.xml | 3 - firebase-ai/src/main/res/values/themes.xml | 5 - gradle/libs.versions.toml | 5 +- settings.gradle.kts | 4 +- vertexai/.gitignore | 15 - vertexai/app/proguard-rules.pro | 21 - .../vertexai/ExampleInstrumentedTest.kt | 24 -- .../example/vertexai/java/ChatViewModel.java | 179 -------- .../vertexai/java/ConfigurationViewModel.java | 68 --- .../vertexai/java/FunctionCallViewModel.java | 26 -- .../java/GenerateContentViewModel.java | 391 ------------------ .../example/vertexai/kotlin/ChatViewModel.kt | 75 ---- .../vertexai/kotlin/ConfigurationViewModel.kt | 47 --- .../vertexai/kotlin/FunctionCallViewModel.kt | 95 ----- .../kotlin/GenerateContentViewModel.kt | 215 ---------- .../example/vertexai/ui/theme/Color.kt | 11 - .../example/vertexai/ui/theme/Type.kt | 34 -- .../drawable-v24/ic_launcher_foreground.xml | 30 -- .../res/drawable/ic_launcher_background.xml | 170 -------- .../res/mipmap-anydpi-v26/ic_launcher.xml | 6 - .../mipmap-anydpi-v26/ic_launcher_round.xml | 6 - .../src/main/res/mipmap-hdpi/ic_launcher.webp | Bin 1404 -> 0 bytes .../res/mipmap-hdpi/ic_launcher_round.webp | Bin 2898 -> 0 bytes .../src/main/res/mipmap-mdpi/ic_launcher.webp | Bin 982 -> 0 bytes .../res/mipmap-mdpi/ic_launcher_round.webp | Bin 1772 -> 0 bytes .../main/res/mipmap-xhdpi/ic_launcher.webp | Bin 1900 -> 0 bytes .../res/mipmap-xhdpi/ic_launcher_round.webp | Bin 3918 -> 0 bytes .../main/res/mipmap-xxhdpi/ic_launcher.webp | Bin 2884 -> 0 bytes .../res/mipmap-xxhdpi/ic_launcher_round.webp | Bin 5914 -> 0 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.webp | Bin 3844 -> 0 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.webp | Bin 7778 -> 0 bytes vertexai/app/src/main/res/values/colors.xml | 10 - .../example/vertexai/ExampleUnitTest.kt | 17 - vertexai/build.gradle.kts | 6 - 82 files changed, 39 insertions(+), 2339 deletions(-) rename {vertexai => firebase-ai}/app/.gitignore (100%) rename {vertexai => firebase-ai}/app/build.gradle.kts (92%) rename firebase-ai/{ => app}/proguard-rules.pro (100%) rename {vertexai => firebase-ai}/app/src/main/AndroidManifest.xml (100%) rename {vertexai/app/src/main/java/com/google/firebase/example/vertexai => firebase-ai/app/src/main/java/com/google/firebase/example/ailogic}/MainActivity.kt (91%) create mode 100644 firebase-ai/app/src/main/java/com/google/firebase/example/ailogic/java/GeneralViewModel.java create mode 100644 firebase-ai/app/src/main/java/com/google/firebase/example/ailogic/kotlin/GeneralViewModel.kt rename firebase-ai/{src/main/java/com/google/firebase/example/ai => app/src/main/java/com/google/firebase/example/ailogic}/ui/theme/Color.kt (82%) rename {vertexai/app/src/main/java/com/google/firebase/example/vertexai => firebase-ai/app/src/main/java/com/google/firebase/example/ailogic}/ui/theme/Theme.kt (97%) rename firebase-ai/{src/main/java/com/google/firebase/example/ai => app/src/main/java/com/google/firebase/example/ailogic}/ui/theme/Type.kt (94%) rename firebase-ai/{ => app}/src/main/res/drawable-v24/ic_launcher_foreground.xml (100%) rename firebase-ai/{ => app}/src/main/res/drawable/ic_launcher_background.xml (100%) rename {vertexai => firebase-ai}/app/src/main/res/drawable/sparky.png (100%) rename {vertexai => firebase-ai}/app/src/main/res/drawable/sparky_eats_pizza.png (100%) rename firebase-ai/{ => app}/src/main/res/mipmap-anydpi-v26/ic_launcher.xml (100%) rename firebase-ai/{ => app}/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml (100%) rename firebase-ai/{ => app}/src/main/res/mipmap-hdpi/ic_launcher.webp (100%) rename firebase-ai/{ => app}/src/main/res/mipmap-hdpi/ic_launcher_round.webp (100%) rename firebase-ai/{ => app}/src/main/res/mipmap-mdpi/ic_launcher.webp (100%) rename firebase-ai/{ => app}/src/main/res/mipmap-mdpi/ic_launcher_round.webp (100%) rename firebase-ai/{ => app}/src/main/res/mipmap-xhdpi/ic_launcher.webp (100%) rename firebase-ai/{ => app}/src/main/res/mipmap-xhdpi/ic_launcher_round.webp (100%) rename firebase-ai/{ => app}/src/main/res/mipmap-xxhdpi/ic_launcher.webp (100%) rename firebase-ai/{ => app}/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp (100%) rename firebase-ai/{ => app}/src/main/res/mipmap-xxxhdpi/ic_launcher.webp (100%) rename firebase-ai/{ => app}/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp (100%) rename firebase-ai/{ => app}/src/main/res/values/colors.xml (100%) rename {vertexai => firebase-ai}/app/src/main/res/values/strings.xml (100%) rename {vertexai => firebase-ai}/app/src/main/res/values/themes.xml (100%) rename {vertexai => firebase-ai}/app/src/main/res/xml/backup_rules.xml (100%) rename {vertexai => firebase-ai}/app/src/main/res/xml/data_extraction_rules.xml (100%) rename {vertexai => firebase-ai}/gradle.properties (100%) rename {vertexai => firebase-ai}/gradle/wrapper/gradle-wrapper.jar (100%) rename {vertexai => firebase-ai}/gradle/wrapper/gradle-wrapper.properties (92%) rename {vertexai => firebase-ai}/gradlew (100%) rename {vertexai => firebase-ai}/gradlew.bat (100%) rename {vertexai => firebase-ai}/settings.gradle.kts (100%) delete mode 100644 firebase-ai/src/main/AndroidManifest.xml delete mode 100644 firebase-ai/src/main/java/com/google/firebase/example/ai/MainActivity.kt delete mode 100644 firebase-ai/src/main/java/com/google/firebase/example/ai/googleai/FirebaseAILogic.kt delete mode 100644 firebase-ai/src/main/java/com/google/firebase/example/ai/sendrequests/GenerateMultimodal.kt delete mode 100644 firebase-ai/src/main/java/com/google/firebase/example/ai/sendrequests/GenerateText.kt delete mode 100644 firebase-ai/src/main/java/com/google/firebase/example/ai/ui/theme/Theme.kt delete mode 100644 firebase-ai/src/main/java/com/google/firebase/example/ai/vertexai/FirebaseAILogic.kt delete mode 100644 firebase-ai/src/main/res/drawable/sparky.xml delete mode 100644 firebase-ai/src/main/res/drawable/sparky_eats_pizza.xml delete mode 100644 firebase-ai/src/main/res/values/strings.xml delete mode 100644 firebase-ai/src/main/res/values/themes.xml delete mode 100644 vertexai/.gitignore delete mode 100644 vertexai/app/proguard-rules.pro delete mode 100644 vertexai/app/src/androidTest/java/com/google/firebase/example/vertexai/ExampleInstrumentedTest.kt delete mode 100644 vertexai/app/src/main/java/com/google/firebase/example/vertexai/java/ChatViewModel.java delete mode 100644 vertexai/app/src/main/java/com/google/firebase/example/vertexai/java/ConfigurationViewModel.java delete mode 100644 vertexai/app/src/main/java/com/google/firebase/example/vertexai/java/FunctionCallViewModel.java delete mode 100644 vertexai/app/src/main/java/com/google/firebase/example/vertexai/java/GenerateContentViewModel.java delete mode 100644 vertexai/app/src/main/java/com/google/firebase/example/vertexai/kotlin/ChatViewModel.kt delete mode 100644 vertexai/app/src/main/java/com/google/firebase/example/vertexai/kotlin/ConfigurationViewModel.kt delete mode 100644 vertexai/app/src/main/java/com/google/firebase/example/vertexai/kotlin/FunctionCallViewModel.kt delete mode 100644 vertexai/app/src/main/java/com/google/firebase/example/vertexai/kotlin/GenerateContentViewModel.kt delete mode 100644 vertexai/app/src/main/java/com/google/firebase/example/vertexai/ui/theme/Color.kt delete mode 100644 vertexai/app/src/main/java/com/google/firebase/example/vertexai/ui/theme/Type.kt delete mode 100644 vertexai/app/src/main/res/drawable-v24/ic_launcher_foreground.xml delete mode 100644 vertexai/app/src/main/res/drawable/ic_launcher_background.xml delete mode 100644 vertexai/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml delete mode 100644 vertexai/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml delete mode 100644 vertexai/app/src/main/res/mipmap-hdpi/ic_launcher.webp delete mode 100644 vertexai/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp delete mode 100644 vertexai/app/src/main/res/mipmap-mdpi/ic_launcher.webp delete mode 100644 vertexai/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp delete mode 100644 vertexai/app/src/main/res/mipmap-xhdpi/ic_launcher.webp delete mode 100644 vertexai/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp delete mode 100644 vertexai/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp delete mode 100644 vertexai/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp delete mode 100644 vertexai/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp delete mode 100644 vertexai/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp delete mode 100644 vertexai/app/src/main/res/values/colors.xml delete mode 100644 vertexai/app/src/test/java/com/google/firebase/example/vertexai/ExampleUnitTest.kt delete mode 100644 vertexai/build.gradle.kts diff --git a/firebase-ai/.gitignore b/firebase-ai/.gitignore index 42afabfd2..aa724b770 100644 --- a/firebase-ai/.gitignore +++ b/firebase-ai/.gitignore @@ -1 +1,15 @@ -/build \ No newline at end of file +*.iml +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +/build +/captures +.externalNativeBuild +.cxx +local.properties diff --git a/vertexai/app/.gitignore b/firebase-ai/app/.gitignore similarity index 100% rename from vertexai/app/.gitignore rename to firebase-ai/app/.gitignore diff --git a/vertexai/app/build.gradle.kts b/firebase-ai/app/build.gradle.kts similarity index 92% rename from vertexai/app/build.gradle.kts rename to firebase-ai/app/build.gradle.kts index 3d4fc78db..cc7e8fbd1 100644 --- a/vertexai/app/build.gradle.kts +++ b/firebase-ai/app/build.gradle.kts @@ -5,11 +5,11 @@ plugins { } android { - namespace = "com.google.firebase.example.vertexai" + namespace = "com.google.firebase.example.ailogic" compileSdk = 36 defaultConfig { - applicationId = "com.google.firebase.example.vertexai" + applicationId = "com.google.firebase.example.ailogic" minSdk = 23 targetSdk = 36 versionCode = 1 @@ -58,7 +58,7 @@ dependencies { implementation(libs.androidx.ui.tooling.preview) implementation(libs.androidx.material3) - implementation(libs.firebase.vertex.ai) + implementation(libs.firebase.ai) implementation(libs.kotlinx.serialization.json) // Required for one-shot operations (to use `ListenableFuture` from Reactive Streams) diff --git a/firebase-ai/proguard-rules.pro b/firebase-ai/app/proguard-rules.pro similarity index 100% rename from firebase-ai/proguard-rules.pro rename to firebase-ai/app/proguard-rules.pro diff --git a/vertexai/app/src/main/AndroidManifest.xml b/firebase-ai/app/src/main/AndroidManifest.xml similarity index 100% rename from vertexai/app/src/main/AndroidManifest.xml rename to firebase-ai/app/src/main/AndroidManifest.xml diff --git a/vertexai/app/src/main/java/com/google/firebase/example/vertexai/MainActivity.kt b/firebase-ai/app/src/main/java/com/google/firebase/example/ailogic/MainActivity.kt similarity index 91% rename from vertexai/app/src/main/java/com/google/firebase/example/vertexai/MainActivity.kt rename to firebase-ai/app/src/main/java/com/google/firebase/example/ailogic/MainActivity.kt index 357ad8259..50dbc37e3 100644 --- a/vertexai/app/src/main/java/com/google/firebase/example/vertexai/MainActivity.kt +++ b/firebase-ai/app/src/main/java/com/google/firebase/example/ailogic/MainActivity.kt @@ -1,4 +1,4 @@ -package com.google.firebase.example.vertexai +package com.google.firebase.example.ailogic import android.os.Bundle import androidx.activity.ComponentActivity @@ -10,7 +10,7 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview -import com.google.firebase.example.vertexai.ui.theme.VertexAIInFirebaseTheme +import com.google.firebase.example.ailogic.ui.theme.VertexAIInFirebaseTheme class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { diff --git a/firebase-ai/app/src/main/java/com/google/firebase/example/ailogic/java/GeneralViewModel.java b/firebase-ai/app/src/main/java/com/google/firebase/example/ailogic/java/GeneralViewModel.java new file mode 100644 index 000000000..b5f47b85e --- /dev/null +++ b/firebase-ai/app/src/main/java/com/google/firebase/example/ailogic/java/GeneralViewModel.java @@ -0,0 +1,4 @@ +package com.google.firebase.example.ailogic.java; + +public class GeneralViewModel { +} diff --git a/firebase-ai/app/src/main/java/com/google/firebase/example/ailogic/kotlin/GeneralViewModel.kt b/firebase-ai/app/src/main/java/com/google/firebase/example/ailogic/kotlin/GeneralViewModel.kt new file mode 100644 index 000000000..fb26b8026 --- /dev/null +++ b/firebase-ai/app/src/main/java/com/google/firebase/example/ailogic/kotlin/GeneralViewModel.kt @@ -0,0 +1,4 @@ +package com.google.firebase.example.ailogic.kotlin + +class GeneralViewModel { +} \ No newline at end of file diff --git a/firebase-ai/src/main/java/com/google/firebase/example/ai/ui/theme/Color.kt b/firebase-ai/app/src/main/java/com/google/firebase/example/ailogic/ui/theme/Color.kt similarity index 82% rename from firebase-ai/src/main/java/com/google/firebase/example/ai/ui/theme/Color.kt rename to firebase-ai/app/src/main/java/com/google/firebase/example/ailogic/ui/theme/Color.kt index 096d94204..6666785be 100644 --- a/firebase-ai/src/main/java/com/google/firebase/example/ai/ui/theme/Color.kt +++ b/firebase-ai/app/src/main/java/com/google/firebase/example/ailogic/ui/theme/Color.kt @@ -1,4 +1,4 @@ -package com.google.firebase.example.ai.ui.theme +package com.google.firebase.example.ailogic.ui.theme import androidx.compose.ui.graphics.Color diff --git a/vertexai/app/src/main/java/com/google/firebase/example/vertexai/ui/theme/Theme.kt b/firebase-ai/app/src/main/java/com/google/firebase/example/ailogic/ui/theme/Theme.kt similarity index 97% rename from vertexai/app/src/main/java/com/google/firebase/example/vertexai/ui/theme/Theme.kt rename to firebase-ai/app/src/main/java/com/google/firebase/example/ailogic/ui/theme/Theme.kt index b02d7202c..1b450c6b1 100644 --- a/vertexai/app/src/main/java/com/google/firebase/example/vertexai/ui/theme/Theme.kt +++ b/firebase-ai/app/src/main/java/com/google/firebase/example/ailogic/ui/theme/Theme.kt @@ -1,4 +1,4 @@ -package com.google.firebase.example.vertexai.ui.theme +package com.google.firebase.example.ailogic.ui.theme import android.app.Activity import android.os.Build diff --git a/firebase-ai/src/main/java/com/google/firebase/example/ai/ui/theme/Type.kt b/firebase-ai/app/src/main/java/com/google/firebase/example/ailogic/ui/theme/Type.kt similarity index 94% rename from firebase-ai/src/main/java/com/google/firebase/example/ai/ui/theme/Type.kt rename to firebase-ai/app/src/main/java/com/google/firebase/example/ailogic/ui/theme/Type.kt index 11b9b2a13..6bb1136ae 100644 --- a/firebase-ai/src/main/java/com/google/firebase/example/ai/ui/theme/Type.kt +++ b/firebase-ai/app/src/main/java/com/google/firebase/example/ailogic/ui/theme/Type.kt @@ -1,4 +1,4 @@ -package com.google.firebase.example.ai.ui.theme +package com.google.firebase.example.ailogic.ui.theme import androidx.compose.material3.Typography import androidx.compose.ui.text.TextStyle diff --git a/firebase-ai/src/main/res/drawable-v24/ic_launcher_foreground.xml b/firebase-ai/app/src/main/res/drawable-v24/ic_launcher_foreground.xml similarity index 100% rename from firebase-ai/src/main/res/drawable-v24/ic_launcher_foreground.xml rename to firebase-ai/app/src/main/res/drawable-v24/ic_launcher_foreground.xml diff --git a/firebase-ai/src/main/res/drawable/ic_launcher_background.xml b/firebase-ai/app/src/main/res/drawable/ic_launcher_background.xml similarity index 100% rename from firebase-ai/src/main/res/drawable/ic_launcher_background.xml rename to firebase-ai/app/src/main/res/drawable/ic_launcher_background.xml diff --git a/vertexai/app/src/main/res/drawable/sparky.png b/firebase-ai/app/src/main/res/drawable/sparky.png similarity index 100% rename from vertexai/app/src/main/res/drawable/sparky.png rename to firebase-ai/app/src/main/res/drawable/sparky.png diff --git a/vertexai/app/src/main/res/drawable/sparky_eats_pizza.png b/firebase-ai/app/src/main/res/drawable/sparky_eats_pizza.png similarity index 100% rename from vertexai/app/src/main/res/drawable/sparky_eats_pizza.png rename to firebase-ai/app/src/main/res/drawable/sparky_eats_pizza.png diff --git a/firebase-ai/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/firebase-ai/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml similarity index 100% rename from firebase-ai/src/main/res/mipmap-anydpi-v26/ic_launcher.xml rename to firebase-ai/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml diff --git a/firebase-ai/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/firebase-ai/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml similarity index 100% rename from firebase-ai/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml rename to firebase-ai/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml diff --git a/firebase-ai/src/main/res/mipmap-hdpi/ic_launcher.webp b/firebase-ai/app/src/main/res/mipmap-hdpi/ic_launcher.webp similarity index 100% rename from firebase-ai/src/main/res/mipmap-hdpi/ic_launcher.webp rename to firebase-ai/app/src/main/res/mipmap-hdpi/ic_launcher.webp diff --git a/firebase-ai/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/firebase-ai/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp similarity index 100% rename from firebase-ai/src/main/res/mipmap-hdpi/ic_launcher_round.webp rename to firebase-ai/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp diff --git a/firebase-ai/src/main/res/mipmap-mdpi/ic_launcher.webp b/firebase-ai/app/src/main/res/mipmap-mdpi/ic_launcher.webp similarity index 100% rename from firebase-ai/src/main/res/mipmap-mdpi/ic_launcher.webp rename to firebase-ai/app/src/main/res/mipmap-mdpi/ic_launcher.webp diff --git a/firebase-ai/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/firebase-ai/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp similarity index 100% rename from firebase-ai/src/main/res/mipmap-mdpi/ic_launcher_round.webp rename to firebase-ai/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp diff --git a/firebase-ai/src/main/res/mipmap-xhdpi/ic_launcher.webp b/firebase-ai/app/src/main/res/mipmap-xhdpi/ic_launcher.webp similarity index 100% rename from firebase-ai/src/main/res/mipmap-xhdpi/ic_launcher.webp rename to firebase-ai/app/src/main/res/mipmap-xhdpi/ic_launcher.webp diff --git a/firebase-ai/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/firebase-ai/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp similarity index 100% rename from firebase-ai/src/main/res/mipmap-xhdpi/ic_launcher_round.webp rename to firebase-ai/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp diff --git a/firebase-ai/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/firebase-ai/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp similarity index 100% rename from firebase-ai/src/main/res/mipmap-xxhdpi/ic_launcher.webp rename to firebase-ai/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp diff --git a/firebase-ai/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/firebase-ai/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp similarity index 100% rename from firebase-ai/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp rename to firebase-ai/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp diff --git a/firebase-ai/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/firebase-ai/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp similarity index 100% rename from firebase-ai/src/main/res/mipmap-xxxhdpi/ic_launcher.webp rename to firebase-ai/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp diff --git a/firebase-ai/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/firebase-ai/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp similarity index 100% rename from firebase-ai/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp rename to firebase-ai/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp diff --git a/firebase-ai/src/main/res/values/colors.xml b/firebase-ai/app/src/main/res/values/colors.xml similarity index 100% rename from firebase-ai/src/main/res/values/colors.xml rename to firebase-ai/app/src/main/res/values/colors.xml diff --git a/vertexai/app/src/main/res/values/strings.xml b/firebase-ai/app/src/main/res/values/strings.xml similarity index 100% rename from vertexai/app/src/main/res/values/strings.xml rename to firebase-ai/app/src/main/res/values/strings.xml diff --git a/vertexai/app/src/main/res/values/themes.xml b/firebase-ai/app/src/main/res/values/themes.xml similarity index 100% rename from vertexai/app/src/main/res/values/themes.xml rename to firebase-ai/app/src/main/res/values/themes.xml diff --git a/vertexai/app/src/main/res/xml/backup_rules.xml b/firebase-ai/app/src/main/res/xml/backup_rules.xml similarity index 100% rename from vertexai/app/src/main/res/xml/backup_rules.xml rename to firebase-ai/app/src/main/res/xml/backup_rules.xml diff --git a/vertexai/app/src/main/res/xml/data_extraction_rules.xml b/firebase-ai/app/src/main/res/xml/data_extraction_rules.xml similarity index 100% rename from vertexai/app/src/main/res/xml/data_extraction_rules.xml rename to firebase-ai/app/src/main/res/xml/data_extraction_rules.xml diff --git a/firebase-ai/build.gradle.kts b/firebase-ai/build.gradle.kts index 595141365..87414eb7b 100644 --- a/firebase-ai/build.gradle.kts +++ b/firebase-ai/build.gradle.kts @@ -1,62 +1,6 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { - alias(libs.plugins.androidApplication) - alias(libs.plugins.jetbrainsKotlinAndroid) - alias(libs.plugins.composeCompiler) -} - -android { - namespace = "com.google.firebase.example.ai" - compileSdk = 36 - - defaultConfig { - applicationId = "com.google.firebase.example.ai" - minSdk = 23 - targetSdk = 36 - versionCode = 1 - versionName = "1.0" - - testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" - } - - buildTypes { - release { - isMinifyEnabled = false - proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro" - ) - } - } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 - } - kotlinOptions { - jvmTarget = "11" - } - buildFeatures { - compose = true - } -} - -dependencies { - - implementation(libs.androidx.core.ktx) - implementation(libs.androidx.lifecycle.runtime.ktx) - implementation(libs.androidx.activity.compose) - implementation(platform(libs.androidx.compose.bom)) - implementation(libs.androidx.ui) - implementation(libs.androidx.ui.graphics) - implementation(libs.androidx.ui.tooling.preview) - implementation(libs.androidx.material3) - - implementation(libs.firebase.ai) - - testImplementation(libs.junit) - androidTestImplementation(libs.androidx.junit) - androidTestImplementation(libs.androidx.espresso.core) - androidTestImplementation(platform(libs.androidx.compose.bom)) - androidTestImplementation(libs.androidx.ui.test.junit4) - debugImplementation(libs.androidx.ui.tooling) - debugImplementation(libs.androidx.ui.test.manifest) + alias(libs.plugins.androidApplication) apply false + alias(libs.plugins.jetbrainsKotlinAndroid) apply false + alias(libs.plugins.composeCompiler) apply false } \ No newline at end of file diff --git a/vertexai/gradle.properties b/firebase-ai/gradle.properties similarity index 100% rename from vertexai/gradle.properties rename to firebase-ai/gradle.properties diff --git a/vertexai/gradle/wrapper/gradle-wrapper.jar b/firebase-ai/gradle/wrapper/gradle-wrapper.jar similarity index 100% rename from vertexai/gradle/wrapper/gradle-wrapper.jar rename to firebase-ai/gradle/wrapper/gradle-wrapper.jar diff --git a/vertexai/gradle/wrapper/gradle-wrapper.properties b/firebase-ai/gradle/wrapper/gradle-wrapper.properties similarity index 92% rename from vertexai/gradle/wrapper/gradle-wrapper.properties rename to firebase-ai/gradle/wrapper/gradle-wrapper.properties index 445283496..8515c04f4 100644 --- a/vertexai/gradle/wrapper/gradle-wrapper.properties +++ b/firebase-ai/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Thu Apr 04 21:24:10 BST 2024 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/vertexai/gradlew b/firebase-ai/gradlew similarity index 100% rename from vertexai/gradlew rename to firebase-ai/gradlew diff --git a/vertexai/gradlew.bat b/firebase-ai/gradlew.bat similarity index 100% rename from vertexai/gradlew.bat rename to firebase-ai/gradlew.bat diff --git a/vertexai/settings.gradle.kts b/firebase-ai/settings.gradle.kts similarity index 100% rename from vertexai/settings.gradle.kts rename to firebase-ai/settings.gradle.kts diff --git a/firebase-ai/src/main/AndroidManifest.xml b/firebase-ai/src/main/AndroidManifest.xml deleted file mode 100644 index b33bbe1f4..000000000 --- a/firebase-ai/src/main/AndroidManifest.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/firebase-ai/src/main/java/com/google/firebase/example/ai/MainActivity.kt b/firebase-ai/src/main/java/com/google/firebase/example/ai/MainActivity.kt deleted file mode 100644 index c7efba560..000000000 --- a/firebase-ai/src/main/java/com/google/firebase/example/ai/MainActivity.kt +++ /dev/null @@ -1,47 +0,0 @@ -package com.google.firebase.example.ai - -import android.os.Bundle -import androidx.activity.ComponentActivity -import androidx.activity.compose.setContent -import androidx.activity.enableEdgeToEdge -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.padding -import androidx.compose.material3.Scaffold -import androidx.compose.material3.Text -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import androidx.compose.ui.tooling.preview.Preview -import com.google.firebase.example.ai.ui.theme.SnippetsandroidTheme - -class MainActivity : ComponentActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - enableEdgeToEdge() - setContent { - SnippetsandroidTheme { - Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding -> - Greeting( - name = "Android", - modifier = Modifier.padding(innerPadding) - ) - } - } - } - } -} - -@Composable -fun Greeting(name: String, modifier: Modifier = Modifier) { - Text( - text = "Hello $name!", - modifier = modifier - ) -} - -@Preview(showBackground = true) -@Composable -fun GreetingPreview() { - SnippetsandroidTheme { - Greeting("Android") - } -} \ No newline at end of file diff --git a/firebase-ai/src/main/java/com/google/firebase/example/ai/googleai/FirebaseAILogic.kt b/firebase-ai/src/main/java/com/google/firebase/example/ai/googleai/FirebaseAILogic.kt deleted file mode 100644 index b9d698447..000000000 --- a/firebase-ai/src/main/java/com/google/firebase/example/ai/googleai/FirebaseAILogic.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.google.firebase.example.ai.googleai - -import com.google.firebase.Firebase -import com.google.firebase.ai.ai -import com.google.firebase.ai.type.GenerativeBackend - -class FirebaseAILogic { - - private fun initialization() { - // [START initialize_googleai_and_model] - // Initialize the Gemini Developer API backend service - // Create a `GenerativeModel` instance with a model that supports your use case - val model = Firebase.ai(backend = GenerativeBackend.googleAI()) - .generativeModel("gemini-2.0-flash") - // [END initialize_googleai_and_model] - } - - -} diff --git a/firebase-ai/src/main/java/com/google/firebase/example/ai/sendrequests/GenerateMultimodal.kt b/firebase-ai/src/main/java/com/google/firebase/example/ai/sendrequests/GenerateMultimodal.kt deleted file mode 100644 index 4370ba52c..000000000 --- a/firebase-ai/src/main/java/com/google/firebase/example/ai/sendrequests/GenerateMultimodal.kt +++ /dev/null @@ -1,270 +0,0 @@ -package com.google.firebase.example.ai.sendrequests - -import android.content.Context -import android.content.res.Resources -import android.graphics.Bitmap -import android.graphics.BitmapFactory -import android.net.Uri -import android.util.Log -import com.google.firebase.ai.GenerativeModel -import com.google.firebase.ai.type.content -import com.google.firebase.example.ai.R - -class GenerateMultimodal( - private val applicationContext: Context, - private val resources: Resources, - private val model: GenerativeModel, -) { - - private val TAG = "GenerateMultimodal" - - private suspend fun audioNonStreaming(audioUri: Uri) { - // [START multimodal_audio_non_streaming] - val contentResolver = applicationContext.contentResolver - - val inputStream = contentResolver.openInputStream(audioUri) - - if (inputStream != null) { // Check if the audio loaded successfully - inputStream.use { stream -> - val bytes = stream.readBytes() - - // Provide a prompt that includes the audio specified above and text - val prompt = content { - inlineData(bytes, "audio/mpeg") // Specify the appropriate audio MIME type - text("Transcribe what's said in this audio recording.") - } - - // To generate text output, call `generateContent` with the prompt - val response = model.generateContent(prompt) - - // Log the generated text, handling the case where it might be null - Log.d(TAG, response.text ?: "") - } - } else { - Log.e(TAG, "Error getting input stream for audio.") - // Handle the error appropriately - } - // [END multimodal_audio_non_streaming] - } - - private suspend fun audioStreaming(audioUri: Uri) { - // [START multimodal_audio_streaming] - val contentResolver = applicationContext.contentResolver - - val inputStream = contentResolver.openInputStream(audioUri) - - if (inputStream != null) { // Check if the audio loaded successfully - inputStream.use { stream -> - val bytes = stream.readBytes() - - // Provide a prompt that includes the audio specified above and text - val prompt = content { - inlineData(bytes, "audio/mpeg") // Specify the appropriate audio MIME type - text("Transcribe what's said in this audio recording.") - } - - // To stream generated text output, call `generateContentStream` with the prompt - var fullResponse = "" - model.generateContentStream(prompt).collect { chunk -> - // Log the generated text, handling the case where it might be null - Log.d(TAG, chunk.text ?: "") - fullResponse += chunk.text ?: "" - } - } - } else { - Log.e(TAG, "Error getting input stream for audio.") - // Handle the error appropriately - } - // [END multimodal_audio_streaming] - } - - private suspend fun multiImagesNonStreaming() { - // [START multimodal_images_non_streaming] - // Loads an image from the app/res/drawable/ directory - val bitmap1: Bitmap = BitmapFactory.decodeResource(resources, R.drawable.sparky) - val bitmap2: Bitmap = BitmapFactory.decodeResource(resources, R.drawable.sparky_eats_pizza) - - // Provide a prompt that includes the images specified above and text - val prompt = content { - image(bitmap1) - image(bitmap2) - text("What is different between these pictures?") - } - - // To generate text output, call generateContent with the prompt - val response = model.generateContent(prompt) - print(response.text) - // [END multimodal_images_non_streaming] - } - - private suspend fun multiImagesStreaming() { - // [START multimodal_images_streaming] - // Loads an image from the app/res/drawable/ directory - val bitmap1: Bitmap = BitmapFactory.decodeResource(resources, R.drawable.sparky) - val bitmap2: Bitmap = BitmapFactory.decodeResource(resources, R.drawable.sparky_eats_pizza) - - // Provide a prompt that includes the images specified above and text - val prompt = content { - image(bitmap1) - image(bitmap2) - text("What's different between these pictures?") - } - - // To stream generated text output, call generateContentStream with the prompt - var fullResponse = "" - model.generateContentStream(prompt).collect { chunk -> - print(chunk.text) - fullResponse += chunk.text - } - // [END multimodal_images_streaming] - } - - private suspend fun oneImageNonStreaming() { - // [START multimodal_one_image_non_streaming] - // Loads an image from the app/res/drawable/ directory - val bitmap: Bitmap = BitmapFactory.decodeResource(resources, R.drawable.sparky) - - // Provide a prompt that includes the image specified above and text - val prompt = content { - image(bitmap) - text("What developer tool is this mascot from?") - } - - // To generate text output, call generateContent with the prompt - val response = model.generateContent(prompt) - print(response.text) - // [END multimodal_one_image_non_streaming] - } - - private suspend fun oneImageStreaming() { - // [START multimodal_one_image_streaming] - // Loads an image from the app/res/drawable/ directory - val bitmap: Bitmap = BitmapFactory.decodeResource(resources, R.drawable.sparky) - - // Provide a prompt that includes the image specified above and text - val prompt = content { - image(bitmap) - text("What developer tool is this mascot from?") - } - - // To stream generated text output, call generateContentStream with the prompt - var fullResponse = "" - model.generateContentStream(prompt).collect { chunk -> - print(chunk.text) - fullResponse += chunk.text - } - // [END multimodal_one_image_streaming] - } - - private suspend fun onePdfNonStreaming(pdfUri: Uri) { - // [START multimodal_one_pdf_non_streaming] - val contentResolver = applicationContext.contentResolver - - // Provide the URI for the PDF file you want to send to the model - val inputStream = contentResolver.openInputStream(pdfUri) - - if (inputStream != null) { // Check if the PDF file loaded successfully - inputStream.use { stream -> - // Provide a prompt that includes the PDF file specified above and text - val prompt = content { - inlineData( - bytes = stream.readBytes(), - mimeType = "application/pdf" // Specify the appropriate PDF file MIME type - ) - text("Summarize the important results in this report.") - } - - // To generate text output, call `generateContent` with the prompt - val response = model.generateContent(prompt) - - // Log the generated text, handling the case where it might be null - Log.d(TAG, response.text ?: "") - } - } else { - Log.e(TAG, "Error getting input stream for file.") - // Handle the error appropriately - } - // [END multimodal_one_pdf_non_streaming] - } - - private suspend fun onePdfStreaming(pdfUri: Uri) { - // [START multimodal_one_pdf_streaming] - val contentResolver = applicationContext.contentResolver - - // Provide the URI for the PDF you want to send to the model - val inputStream = contentResolver.openInputStream(pdfUri) - - if (inputStream != null) { // Check if the PDF file loaded successfully - inputStream.use { stream -> - // Provide a prompt that includes the PDF file specified above and text - val prompt = content { - inlineData( - bytes = stream.readBytes(), - mimeType = "application/pdf" // Specify the appropriate PDF file MIME type - ) - text("Summarize the important results in this report.") - } - - // To stream generated text output, call `generateContentStream` with the prompt - var fullResponse = "" - model.generateContentStream(prompt).collect { chunk -> - // Log the generated text, handling the case where it might be null - val chunkText = chunk.text ?: "" - Log.d(TAG, chunkText) - fullResponse += chunkText - } - } - } else { - Log.e(TAG, "Error getting input stream for file.") - // Handle the error appropriately - } - // [END multimodal_one_pdf_streaming] - } - - private suspend fun videoNonStreaming(videoUri: Uri) { - // [START multimodal_video_non_streaming] - val contentResolver = applicationContext.contentResolver - contentResolver.openInputStream(videoUri).use { stream -> - stream?.let { - val bytes = stream.readBytes() - - // Provide a prompt that includes the video specified above and text - val prompt = content { - inlineData(bytes, "video/mp4") - text("What is in the video?") - } - - // To generate text output, call generateContent with the prompt - val response = model.generateContent(prompt) - Log.d(TAG, response.text ?: "") - } - } - // [END multimodal_video_non_streaming] - } - - private suspend fun videoStreaming(videoUri: Uri) { - // [START multimodal_video_streaming] - val contentResolver = applicationContext.contentResolver - contentResolver.openInputStream(videoUri).use { stream -> - stream?.let { - val bytes = stream.readBytes() - - // Provide a prompt that includes the video specified above and text - val prompt = content { - inlineData(bytes, "video/mp4") - text("What is in the video?") - } - - // To stream generated text output, call generateContentStream with the prompt - var fullResponse = "" - model.generateContentStream(prompt).collect { chunk -> - Log.d(TAG, chunk.text ?: "") - fullResponse += chunk.text - } - } - } - // [END multimodal_video_streaming] - } - - -} \ No newline at end of file diff --git a/firebase-ai/src/main/java/com/google/firebase/example/ai/sendrequests/GenerateText.kt b/firebase-ai/src/main/java/com/google/firebase/example/ai/sendrequests/GenerateText.kt deleted file mode 100644 index 71389e636..000000000 --- a/firebase-ai/src/main/java/com/google/firebase/example/ai/sendrequests/GenerateText.kt +++ /dev/null @@ -1,33 +0,0 @@ -package com.google.firebase.example.ai.sendrequests - -import com.google.firebase.ai.GenerativeModel - -class GenerateText( - private val model: GenerativeModel -) { - - private suspend fun textOnlyNonStreaming() { - // [START text_only_non_streaming] - // Provide a prompt that contains text - val prompt = "Write a story about a magic backpack." - - // To generate text output, call generateContent with the text input - val response = model.generateContent(prompt) - print(response.text) - // [END text_only_non_streaming] - } - - private suspend fun textOnlyStreaming() { - // [START text_only_streaming] - // Provide a prompt that includes only text - val prompt = "Write a story about a magic backpack." - - // To stream generated text output, call generateContentStream and pass in the prompt - var response = "" - model.generateContentStream(prompt).collect { chunk -> - print(chunk.text) - response += chunk.text - } - // [END text_only_streaming] - } -} \ No newline at end of file diff --git a/firebase-ai/src/main/java/com/google/firebase/example/ai/ui/theme/Theme.kt b/firebase-ai/src/main/java/com/google/firebase/example/ai/ui/theme/Theme.kt deleted file mode 100644 index 6a1a99b36..000000000 --- a/firebase-ai/src/main/java/com/google/firebase/example/ai/ui/theme/Theme.kt +++ /dev/null @@ -1,58 +0,0 @@ -package com.google.firebase.example.ai.ui.theme - -import android.app.Activity -import android.os.Build -import androidx.compose.foundation.isSystemInDarkTheme -import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.darkColorScheme -import androidx.compose.material3.dynamicDarkColorScheme -import androidx.compose.material3.dynamicLightColorScheme -import androidx.compose.material3.lightColorScheme -import androidx.compose.runtime.Composable -import androidx.compose.ui.platform.LocalContext - -private val DarkColorScheme = darkColorScheme( - primary = Purple80, - secondary = PurpleGrey80, - tertiary = Pink80 -) - -private val LightColorScheme = lightColorScheme( - primary = Purple40, - secondary = PurpleGrey40, - tertiary = Pink40 - - /* Other default colors to override - background = Color(0xFFFFFBFE), - surface = Color(0xFFFFFBFE), - onPrimary = Color.White, - onSecondary = Color.White, - onTertiary = Color.White, - onBackground = Color(0xFF1C1B1F), - onSurface = Color(0xFF1C1B1F), - */ -) - -@Composable -fun SnippetsandroidTheme( - darkTheme: Boolean = isSystemInDarkTheme(), - // Dynamic color is available on Android 12+ - dynamicColor: Boolean = true, - content: @Composable () -> Unit -) { - val colorScheme = when { - dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> { - val context = LocalContext.current - if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context) - } - - darkTheme -> DarkColorScheme - else -> LightColorScheme - } - - MaterialTheme( - colorScheme = colorScheme, - typography = Typography, - content = content - ) -} \ No newline at end of file diff --git a/firebase-ai/src/main/java/com/google/firebase/example/ai/vertexai/FirebaseAILogic.kt b/firebase-ai/src/main/java/com/google/firebase/example/ai/vertexai/FirebaseAILogic.kt deleted file mode 100644 index 832816e07..000000000 --- a/firebase-ai/src/main/java/com/google/firebase/example/ai/vertexai/FirebaseAILogic.kt +++ /dev/null @@ -1,18 +0,0 @@ -package com.google.firebase.example.ai.vertexai - -import com.google.firebase.Firebase -import com.google.firebase.ai.ai -import com.google.firebase.ai.type.GenerativeBackend - -class FirebaseAILogic { - - private fun initialization() { - // [START initialize_vertexai_and_model] - // Initialize the Vertex AI Gemini API backend service - // Create a `GenerativeModel` instance with a model that supports your use case - val model = Firebase.ai(backend = GenerativeBackend.vertexAI()) - .generativeModel("gemini-2.0-flash") - // [END initialize_vertexai_and_model] - } - -} diff --git a/firebase-ai/src/main/res/drawable/sparky.xml b/firebase-ai/src/main/res/drawable/sparky.xml deleted file mode 100644 index 07d5da9cb..000000000 --- a/firebase-ai/src/main/res/drawable/sparky.xml +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/firebase-ai/src/main/res/drawable/sparky_eats_pizza.xml b/firebase-ai/src/main/res/drawable/sparky_eats_pizza.xml deleted file mode 100644 index 07d5da9cb..000000000 --- a/firebase-ai/src/main/res/drawable/sparky_eats_pizza.xml +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/firebase-ai/src/main/res/values/strings.xml b/firebase-ai/src/main/res/values/strings.xml deleted file mode 100644 index 8144fcbc4..000000000 --- a/firebase-ai/src/main/res/values/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - firebase-ai - \ No newline at end of file diff --git a/firebase-ai/src/main/res/values/themes.xml b/firebase-ai/src/main/res/values/themes.xml deleted file mode 100644 index db0e70eb6..000000000 --- a/firebase-ai/src/main/res/values/themes.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - -