已调用FirebaseApp.initializeApp仍未初始化Default FirebaseApp,使用Firestore报错
FirebaseApp初始化后仍触发「Default FirebaseApp未初始化」错误的解决办法
针对调用FirebaseApp.initializeApp(Context)后,使用Firestore时仍出现「Default FirebaseApp is not initialized in this process」错误的问题,结合你提供的配置文件,可按以下步骤排查修复:
1. 检查google-services.json配置
- 确保文件放在app模块根目录下,而非项目根目录
- 验证文件内
package_name与app/build.gradle中applicationId(com.allapps.qrcode)完全一致 - 多环境构建时,确认对应环境的json文件正确配置
2. 统一Firebase依赖版本,消除冲突
你的依赖中存在同一服务的版本不一致问题(如firebase-analytics和firebase-analytics-ktx版本不同),推荐使用Firebase BoM统一管理版本:
在app/build.gradle的dependencies块顶部添加:
implementation platform('com.google.firebase:firebase-bom:32.7.0')
然后修改所有Firebase依赖,去掉版本号:
implementation 'com.google.firebase:firebase-analytics-ktx' implementation 'com.google.firebase:firebase-firestore-ktx' implementation 'com.google.firebase:firebase-inappmessaging-display' implementation 'com.google.firebase:firebase-crashlytics-ktx' implementation 'com.google.firebase:firebase-perf-ktx'
3. 调整Gradle插件应用顺序
确保com.google.gms.google-services插件是最后一个应用的,修改app/build.gradle的plugins块:
plugins { id 'com.android.application' id 'kotlin-android' id 'org.jetbrains.kotlin.android' id 'com.google.firebase.crashlytics' id 'com.google.firebase.firebase-perf' id 'com.google.gms.google-services' // 移至最后 }
4. 补充ProGuard规则(仅Release构建)
你的Release构建开启了代码混淆,需在proguard-rules.pro中添加Firebase相关规则:
# Firebase Core -keep class com.google.firebase.FirebaseApp { *; } -keep class com.google.firebase.components.** { *; } -keep class com.google.firebase.provider.** { *; } # Firebase Firestore -keep class com.google.firebase.firestore.** { *; }
5. 规范初始化逻辑
- 通常无需手动调用
FirebaseApp.initializeApp(),Google Services插件会自动完成初始化,手动调用可能引发冲突 - 若必须手动初始化,确保在自定义Application的
onCreate()中最早执行,且仅执行一次:
class MyApp : Application() { override fun onCreate() { super.onCreate() if (FirebaseApp.getApps(this).isEmpty()) { FirebaseApp.initializeApp(this) } } }
并在AndroidManifest.xml中注册该Application:
<application android:name=".MyApp" ...> <!-- 其他配置 --> </application>
6. 清理重建项目
- 执行Android Studio的
File -> Invalidate Caches... -> Invalidate and Restart - 运行命令行:
./gradlew clean build清理构建缓存
你提供的配置文件
app/build.gradle
plugins { id 'com.android.application' id 'kotlin-android' id 'org.jetbrains.kotlin.android' id 'com.google.gms.google-services' id 'com.google.firebase.crashlytics' id 'com.google.firebase.firebase-perf' } android { compileSdk 34 namespace 'com.x.y' defaultConfig { applicationId "com.allapps.qrcode" minSdk 21 targetSdk 33 versionCode 22 versionName "1.1.10" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" vectorDrawables.useSupportLibrary = true } buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = '1.8' } } dependencies { implementation project(path: ':AllAds') implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'com.google.android.material:material:1.8.0' implementation 'com.google.code.gson:gson:2.9.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' implementation 'com.google.zxing:core:3.4.0' implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'com.google.firebase:firebase-analytics:21.2.0' implementation 'com.google.firebase:firebase-firestore-ktx:24.4.3' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4' implementation 'com.google.firebase:firebase-inappmessaging-display:20.3.0' implementation 'com.google.firebase:firebase-crashlytics:18.3.5' implementation 'com.google.firebase:firebase-perf-ktx:20.3.1' implementation 'me.dm7.barcodescanner:zxing:1.9.8' implementation 'com.google.firebase:firebase-crashlytics-ktx:18.3.7' implementation 'com.google.firebase:firebase-analytics-ktx:21.3.0' testImplementation 'junit:junit:4.+' androidTestImplementation 'androidx.test.ext:junit:1.1.2' androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' }
根build.gradle
// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { maven { url "https://jitpack.io" } google() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:7.3.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.20" classpath 'com.google.gms:google-services:4.4.0' classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.9' classpath 'com.google.firebase:perf-plugin:1.4.2' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } task clean(type: Delete) { delete rootProject.buildDir }
错误日志截图

内容的提问来源于stack exchange,提问作者Igor Ronner
相关产品推荐
相关产品推荐

