Closed TobiasB2 closed 1 year ago
When I downgrade to version 1.2.5 the app doesn't crash on startup, so
events.AddAndroid(android => android.OnCreate((activity, state) =>
CrossFirebase.Initialize(activity, state, CreateCrossFirebaseSettings())));
works. But when I call
await CrossFirebaseCloudMessaging.Current.CheckIfValidAsync();
var token = await CrossFirebaseCloudMessaging.Current.GetTokenAsync();
I get the exact same error for GetTokenAsync()
[mono-rt] [ERROR] FATAL UNHANDLED EXCEPTION: Java.Lang.IllegalStateException: Default FirebaseApp is not initialized in this process de.Name.AppName. Make sure to call FirebaseApp.initializeApp(Context) first.
[mono-rt] at Java.Interop.JniEnvironment.StaticMethods.CallStaticObjectMethod(JniObjectReference type, JniMethodInfo method, JniArgumentValue* args) in /Users/runner/work/1/s/xamarin-android/external/Java.Interop/src/Java.Interop/Java.Interop/JniEnvironment.g.cs:line 12890
[mono-rt] at Java.Interop.JniPeerMembers.JniStaticMethods.InvokeObjectMethod(String encodedMember, JniArgumentValue* parameters) in /Users/runner/work/1/s/xamarin-android/external/Java.Interop/src/Java.Interop/Java.Interop/JniPeerMembers.JniStaticMethods.cs:line 95
[mono-rt] at Firebase.Messaging.FirebaseMessaging.get_Instance() in /Users/runner/work/1/s/generated/com.google.firebase.firebase-messaging/obj/Release/net6.0-android31.0/generated/src/Firebase.Messaging.FirebaseMessaging.cs:line 106
[mono-rt] at Plugin.Firebase.CloudMessaging.FirebaseCloudMessagingImplementation.GetTokenAsync()
[mono-rt] at App_Name.MainPage.OnCounterClicked(Object sender, EventArgs e) in D:\Projects\App-Name\MainPage.xaml.cs:line 17
[mono-rt] at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__128_0(Object state)
[mono-rt] at Android.App.SyncContext.<>c__DisplayClass2_0.<Post>b__0() in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Android.App/SyncContext.cs:line 36
[mono-rt] at Java.Lang.Thread.RunnableImplementor.Run() in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Java.Lang/Thread.cs:line 36
[mono-rt] at Java.Lang.IRunnableInvoker.n_Run(IntPtr jnienv, IntPtr native__this) in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/obj/Release/net6.0/android-33/mcw/Java.Lang.IRunnable.cs:line 84
[mono-rt] at Android.Runtime.JNINativeWrapper.Wrap_JniMarshal_PP_V(_JniMarshal_PP_V callback, IntPtr jnienv, IntPtr klazz) in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Android.Runtime/JNINativeWrapper.g.cs:line 22
[mono-rt] --- End of managed Java.Lang.IllegalStateException stack trace ---
[mono-rt] java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process de.Name.AppName. Make sure to call FirebaseApp.initializeApp(Context) first.
[mono-rt] at com.google.firebase.FirebaseApp.getInstance(FirebaseApp.java:186)
[mono-rt] at com.google.firebase.messaging.FirebaseMessaging.getInstance(FirebaseMessaging.java:137)
[mono-rt] at crc64fcf28c0e24b4cc31.ButtonHandler_ButtonClickListener.n_onClick(Native Method)
[mono-rt] at crc64fcf28c0e24b4cc31.ButtonHandler_ButtonClickListener.onClick(ButtonHandler_ButtonClickListener.java:30)
[mono-rt] at android.view.View.performClick(View.java:7892)
[mono-rt] at android.widget.TextView.performClick(TextView.java:16219)
[mono-rt] at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1194)
[mono-rt] at android.view.View.performClickInternal(View.java:7869)
[mono-rt] at android.view.View.-$$Nest$mperformClickInternal(Unknown Source:0)
[mono-rt] at android.view.View$PerformClick.run(View.java:30880)
[mono-rt] at android.os.Handler.handleCallback(Handler.java:942)
[mono-rt] at android.os.Handler.dispatchMessage(Handler.java:99)
[mono-rt] at android.os.Looper.loopOnce(Looper.java:226)
[mono-rt] at android.os.Looper.loop(Looper.java:313)
[mono-rt] at android.app.ActivityThread.main(ActivityThread.java:8757)
[mono-rt] at java.lang.reflect.Method.invoke(Native Method)
[mono-rt] at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571)
[mono-rt] at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1067)
I found the error: in my .csproj file I included the google-services.json with this condition: Condition="'$(TargetFramework)' == 'net6.0-android'
Here the target framework is missing, and it seems that you have to include that (see TargetFramework in the original .csproj file).
So the correct condition is: Condition="'$(TargetFramework)' == 'net6.0-android33.0'
With this everything works fine (version 1.2.5 and 1.3.0). The issue was sitting 30cm in front of the screen, this issue can be closed.
Your comment helped me a lot! I had the same issue.
I can recommend to use a "wildcard" definition so we don't have to change it every time we change the .NET or Android target framework:
<ItemGroup Condition="$(TargetFramework.Contains('-android'))">
<GoogleServicesJson Include="google-services.json" />
</ItemGroup>
<ItemGroup Condition="$(TargetFramework.Contains('-ios'))">
<BundleResource Include="GoogleService-Info.plist" />
</ItemGroup>
Thats a good idea, thanks! I found out that the android version only gets added to the file if you choose the target framework in the properties at Application --> General --> Android Targets. But thats optional, see: https://learn.microsoft.com/en-us/dotnet/standard/frameworks#os-version-in-tfms You only have to choose the target framework at the android options.
So if you leave it blanc you can just use "net6.0-android" everywhere.
A better condition is actually:
Condition="'$([MSBuild]::GetTargetPlatformIdentifier($(TargetFramework)))'=='android'">
In a complete new MAUI App CrossFirebase.Initialize crashes with "Java.Lang.IllegalStateException: 'Default FirebaseApp is not initialized in this process de.Name.AppName. Make sure to call FirebaseApp.initializeApp(Context) first.'"
This might be a similiar error to #67
Steps to reproduce:
Stacktrace:
.csproj File:
MauiProgram.cs
Complete Debugger Output