Mac环境下Xamarin.Forms Android应用Firebase初始化异常求助
Xamarin.Forms Android FirebaseApp 未初始化异常解决(Mac 环境)
问题说明
用MacBook上的Visual Studio 2022社区版(17.5 build 1802)开发Xamarin.Forms,部署到Android模拟器时触发了Firebase未初始化的异常,具体报错如下:
java.Lang.IllegalStateException: Default FirebaseApp is not initialized in this process FoodAllergyFix.Android. Make sure to call FirebaseApp.initializeApp(Context) first. at Java.Interop.JniEnvironment+StaticMethods.CallStaticObjectMethod (Java.Interop.JniObjectReference type, Java.Interop.JniMethodInfo method, Java.Interop.JniArgumentValue* args) [0x00068] in /Users/runner/work/1/s/xamarin-android/external/Java.Interop/src/Java.Interop/obj/Release/JniEnvironment.g.cs:12890 at Java.Interop.JniPeerMembers+JniStaticMethods.InvokeObjectMethod (System.String encodedMember, Java.Interop.JniArgumentValue* parameters) [0x00008] in /Users/runner/work/1/s/xamarin-android/external/Java.Interop/src/Java.Interop/Java.Interop/JniPeerMembers.JniStaticMethods.cs:151 at Firebase.Iid.FirebaseInstanceId.get_Instance () [0x00000] in /Users/runner/work/1/s/generated/com.google.firebase.firebase-iid/obj/Release/monoandroid12.0/generated/src/Firebase.Iid.FirebaseInstanceId.cs:163 at FoodAllergyFix.Droid.MainActivity.OnCreate (Android.OS.Bundle savedInstanceState) [0x0008a] in /Users/satishdurga/Documents/FAF/develop-satish/food-allergy-fix-mobile-application/FoodAllergyFix.Android/MainActivity.cs:124 at Android.App.Activity.n_OnCreate_Landroid_os_Bundle_ (System.IntPtr jnienv, System.IntPtr native__this, System.IntPtr native_savedInstanceState) [0x00010] in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/obj/Release/monoandroid10/android-31/mcw/Android.App.Activity.cs:2791 at Android.Runtime.JNINativeWrapper.Wrap_JniMarshal_PPL_V (_JniMarshal_PPL_V callback, System.IntPtr jnienv, System.IntPtr klazz, System.IntPtr p0) [0x00005] in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Android.Runtime/JNINativeWrapper.g.cs:121 at at (wrapper native-to-managed) Android.Runtime.JNINativeWrapper.Wrap_JniMarshal_PPL_V(intptr,intptr,intptr) at java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process FoodAllergyFix.Android. Make sure to call FirebaseApp.initializeApp(Context) first. at at com.google.firebase.FirebaseApp.getInstance(FirebaseApp.java:186) at at com.google.firebase.iid.FirebaseInstanceId.getInstance(com.google.firebase:firebase-iid@@21.1.0:1) at at crc64cf8f748391fcc334.MainActivity.n_onCreate(Native Method) at at crc64cf8f748391fcc334.MainActivity.onCreate(MainActivity.java:41) at at android.app.Activity.performCreate(Activity.java:8051) at at android.app.Activity.performCreate(Activity.java:8031) at at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1329) at at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3608) at at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3792) at at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103) at at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) at at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) at at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2210) at at android.os.Handler.dispatchMessage(Handler.java:106) at at android.os.Looper.loopOnce(Looper.java:201) at at android.os.Looper.loop(Looper.java:288) at at android.app.ActivityThread.main(ActivityThread.java:7839) at at java.lang.reflect.Method.invoke(Native Method) at at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) at at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
之前在Windows上开发构建完全正常,迁移到Mac后才出问题。
解决办法(专门针对Xamarin项目)
1. 手动强制初始化 FirebaseApp
在Android项目的MainActivity的OnCreate方法最开头加这段代码,确保Firebase在任何API调用前初始化完成:
protected override void OnCreate(Bundle savedInstanceState) { // 先检查Firebase是否已初始化,没有则手动初始化 if (Firebase.FirebaseApp.GetInstance(Android.App.Application.Context) == null) { Firebase.FirebaseApp.InitializeApp(Android.App.Application.Context); } base.OnCreate(savedInstanceState); // 你的其他原有代码... }
2. 检查google-services.json配置
- 确认
google-services.json放在Android项目的Resources目录下,并且右键文件→属性,把Build Action改成GoogleServicesJson,这步是Xamarin识别配置文件的关键 - 若不确定文件有效性,去Firebase控制台重新下载对应项目的配置文件替换
3. 清理重建项目
- 右键Android项目→清理
- 手动删除项目根目录下的
bin和obj文件夹 - 重启Visual Studio后重新构建部署
4. 统一Firebase NuGet包版本
打开NuGet包管理器,检查所有Firebase相关包(如Xamarin.Firebase.Core、Xamarin.Firebase.Iid)的版本是否一致,版本不兼容极易引发问题。可选择统一升级到最新兼容版,或换回Windows上可用的旧版本。
5. 核对Android目标框架
右键Android项目→属性→应用程序,查看目标框架版本,确保与Windows上的设置一致,或与Firebase包兼容(例如选择Android 12.0及以上版本)
内容的提问来源于stack exchange,提问作者satish durga
相关产品推荐
相关产品推荐

