diff --git a/firebase-common/firebase-common.gradle.kts b/firebase-common/firebase-common.gradle.kts index 1bd23d9beb3..f038206d9e2 100644 --- a/firebase-common/firebase-common.gradle.kts +++ b/firebase-common/firebase-common.gradle.kts @@ -63,6 +63,8 @@ dependencies { api("com.google.firebase:firebase-components:18.0.0") api("com.google.firebase:firebase-annotations:16.2.0") + implementation("androidx.startup:startup-runtime:1.2.0") + implementation("androidx.work:work-runtime-ktx:2.9.1") implementation(libs.androidx.annotation) implementation(libs.androidx.futures) implementation(libs.kotlin.stdlib) diff --git a/firebase-common/src/main/AndroidManifest.xml b/firebase-common/src/main/AndroidManifest.xml index 0aac7efbc4b..a9376529c5a 100644 --- a/firebase-common/src/main/AndroidManifest.xml +++ b/firebase-common/src/main/AndroidManifest.xml @@ -18,13 +18,15 @@ - + tools:node="merge"> + + + { + + private val TAG = "FirebaseInitProvider" + + /** @hide */ + private val currentlyInitializing = AtomicBoolean(false) + + companion object { + private val startupTime: StartupTime = StartupTime.now() + + /** @hide */ + @JvmStatic + fun getStartupTime(): StartupTime { + return startupTime + } + } + + override fun create(context: Context): FirebaseApp { + try { + currentlyInitializing.set(true) + val app = FirebaseApp.initializeApp(context) + if (app == null) { + Log.i(TAG, "FirebaseApp initialization unsuccessful") + throw IllegalStateException("Firebase appears to be misconfigured") + } else { + Log.i(TAG, "FirebaseApp initialization successful") + return app + } + } finally { + currentlyInitializing.set(false) + } + } + + override fun dependencies(): List>> { + return listOf(WorkManagerInitializer::class.java) + } +}