[gallery] add firebase integration
Some checks are pending
Build Android APK / Build Android APK (push) Waiting to run

PiperOrigin-RevId: 778082730
This commit is contained in:
Wai Hon Law 2025-07-01 09:51:40 -07:00 committed by Copybara-Service
parent 323124a628
commit d97e115993
6 changed files with 50 additions and 1 deletions

View file

@ -16,6 +16,8 @@
plugins {
alias(libs.plugins.android.application)
// Note: set apply to true to enable google-services (requires google-services.json).
alias(libs.plugins.google.services) apply false
alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
alias(libs.plugins.kotlin.serialization)
@ -95,6 +97,8 @@ dependencies {
implementation(libs.protobuf.javalite)
implementation(libs.hilt.android)
implementation(libs.hilt.navigation.compose)
implementation(platform(libs.firebase.bom))
implementation(libs.firebase.analytics)
kapt(libs.hilt.android.compiler)
testImplementation(libs.junit)
androidTestImplementation(libs.androidx.junit)

View file

@ -31,6 +31,7 @@
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-feature
android:name="android.hardware.camera"
@ -87,6 +88,20 @@
android:exported="false"
tools:node="merge">
</service>
<!-- For Firebase Analytics. -->
<receiver
android:name="com.google.android.gms.measurement.AppMeasurementReceiver"
android:enabled="true"
android:exported="false" />
<service android:name="com.google.android.gms.measurement.AppMeasurementService"
android:enabled="true"
android:exported="false" />
<service
android:name="com.google.android.gms.measurement.AppMeasurementJobService"
android:enabled="true"
android:exported="false"
android:permission="android.permission.BIND_JOB_SERVICE" />
</application>
</manifest>
</manifest>

View file

@ -20,6 +20,7 @@ import android.app.Application
import com.google.ai.edge.gallery.common.writeLaunchInfo
import com.google.ai.edge.gallery.data.DataStoreRepository
import com.google.ai.edge.gallery.ui.theme.ThemeSettings
import com.google.firebase.FirebaseApp
import dagger.hilt.android.HiltAndroidApp
import javax.inject.Inject
@ -35,5 +36,7 @@ class GalleryApplication : Application() {
// Load saved theme.
ThemeSettings.themeOverride.value = dataStoreRepository.readTheme()
FirebaseApp.initializeApp(this)
}
}

View file

@ -18,6 +18,7 @@ package com.google.ai.edge.gallery
import android.os.Build
import android.os.Bundle
import android.util.Log
import android.view.WindowManager
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
@ -27,12 +28,26 @@ import androidx.compose.material3.Surface
import androidx.compose.ui.Modifier
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
import com.google.ai.edge.gallery.ui.theme.GalleryTheme
import com.google.firebase.analytics.FirebaseAnalytics
import com.google.firebase.analytics.ktx.analytics
import com.google.firebase.ktx.Firebase
import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint
class MainActivity : ComponentActivity() {
private var firebaseAnalytics: FirebaseAnalytics? = null
override fun onCreate(savedInstanceState: Bundle?) {
firebaseAnalytics =
runCatching { Firebase.analytics }
.onFailure { exception ->
// Firebase.analytics can throw an exception if goolgle-services is not set up, e.g.,
// missing google-services.json.
Log.w(TAG, "Firebase Analytics is not available", exception)
}
.getOrNull()
installSplashScreen()
super.onCreate(savedInstanceState)
@ -46,4 +61,8 @@ class MainActivity : ComponentActivity() {
// Keep the screen on while the app is running for better demo experience.
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
}
companion object {
private const val TAG = "AGMainActivity"
}
}

View file

@ -17,6 +17,7 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
alias(libs.plugins.android.application) apply false
alias(libs.plugins.google.services) apply false
alias(libs.plugins.kotlin.android) apply false
alias(libs.plugins.kotlin.compose) apply false
alias(libs.plugins.hilt.application) apply false

View file

@ -31,6 +31,8 @@ netOpenidAppauth = "0.11.1"
splashscreen = "1.2.0-beta01"
hilt = "2.56.2"
hiltNavigation = "1.2.0"
googleService = "4.4.3"
firebaseBom = "33.16.0"
[libraries]
androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
@ -73,6 +75,10 @@ hilt-android = { module = "com.google.dagger:hilt-android", version.ref = "hilt"
hilt-navigation-compose = { module = "androidx.hilt:hilt-navigation-compose", version.ref = "hiltNavigation" }
hilt-android-testing = { module = "com.google.dagger:hilt-android-testing", version.ref = "hilt" }
hilt-android-compiler = { module = "com.google.dagger:hilt-android-compiler", version.ref = "hilt" }
firebase-bom = { group = "com.google.firebase", name = "firebase-bom", version.ref = "firebaseBom" }
# When using the Firebase BoM, you don't specify versions in Firebase
# library dependencies.
firebase-analytics = { group = "com.google.firebase", name = "firebase-analytics" }
[plugins]
android-application = { id = "com.android.application", version.ref = "agp" }
@ -81,3 +87,4 @@ kotlin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "ko
kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "serializationPlugin" }
protobuf = {id = "com.google.protobuf", version.ref = "protobuf"}
hilt-application = { id = "com.google.dagger.hilt.android", version.ref = "hilt" }
google-services = { id = "com.google.gms.google-services", version.ref = "googleService" }