使用 Xamarin.Firebase 时“无法解析:Lcom/google/android/datatransport/TransportFactory”

Chr*_*Fin 6 c# android firebase xamarin maui

我正在使用当前预览版 11 创建一个 .NET MAUI 应用程序。
当我尝试实现推送通知时,我添加了该Xamarin.Firebase.Messaging包,仅添加此包会导致启动应用程序时崩溃,但出现以下异常:

java.lang.NoClassDefFoundError:解析失败:Lcom/google/android/datatransport/TransportFactory;
在 com.google.firebase.datatransport.TransportRegistrar.getComponents(TransportRegistrar.java:32)
在 com.google.firebase.components.ComponentRuntime.discoverComponents(ComponentRuntime.java:109)
在 com.google.firebase.components.ComponentRuntime.( ComponentRuntime.java:91)
位于 com.google.firebase.components.ComponentRuntime.(ComponentRuntime.java:45)
位于 com.google.firebase.components.ComponentRuntime$Builder.build(ComponentRuntime.java:360)
位于 com.google。 firebase.FirebaseApp.(FirebaseApp.java:427)
位于 com.google.firebase.FirebaseApp.initializeApp(FirebaseApp.java:299)
位于 com.google.firebase.FirebaseApp.initializeApp(FirebaseApp.java:267)
位于 com.google。 firebase.FirebaseApp.initializeApp(FirebaseApp.java:252)
在 com.google.firebase.provider.FirebaseInitProvider.onCreate(FirebaseInitProvider.java:51)
在 android.content.ContentProvider.attachInfo(ContentProvider.java:2388)
在 android.content .ContentProvider.attachInfo(ContentProvider.java:2358)
位于 com.google.firebase.provider.FirebaseInitProvider.attachInfo(FirebaseInitProvider.java:45)
位于 android.app.ActivityThread.installProvider(ActivityThread.java:7239)
位于 android.app。 ActivityThread.installContentProviders(ActivityThread.java:6780)
在 android.app.ActivityThread.handleBindApplication(ActivityThread.java:6697)
在 android.app.ActivityThread.access$1300(ActivityThread.java:237)
在 android.app.ActivityThread$H。 handleMessage(ActivityThread.java:1913)
在 android.os.Handler.dispatchMessage(Handler.java:106)
在 android.os.Looper.loop(Looper.java:223)
在 android.app.ActivityThread.main(ActivityThread.java :7656)
在java.lang.reflect.Method.invoke(本机方法)
在com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
在com.android.internal.os.ZygoteInit.main (ZygoteInit.java:947)
引起:java.lang.ClassNotFoundException:在路径上找不到类“com.google.android.datatransport.TransportFactory”:DexPathList[[zip文件“/data/app/.../” base.apk"],nativeLibraryDirectories=[/data/app/.../lib/x86_64, /data/app/.../base.apk!/lib/x86_64, /system/lib64, /system_ext/lib64] ]
在 dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:207)
在 java.lang.ClassLoader.loadClass(ClassLoader.java:379)
在 java.lang.ClassLoader.loadClass(ClassLoader.java:312)
... 24更多的

在构建过程中我收到以下警告:

obj\Debug\net6.0-android\lp\153\jl\classes.jar:com/google/firebase/datatransport/TransportRegistrar.class 中发出警告:未找到
类型com.google.android.datatransport.runtime.TransportRuntime,这是默认或静态接口方法脱糖所必需的Lcom/google/firebase/datatransport/TransportRegistrar;lambda$getComponents$0(Lcom/google/firebase/components/ComponentContainer;)Lcom/google/android/datatransport/TransportFactory;

通过跟踪和错误,我发现所有Xamarin.Firebase.*包都会发生这种情况,但Xamarin.Google.Android.DataTransport.TransportRuntime直接引用例如时不会发生这种情况。

我怎样才能解决这个问题?

Chr*_*Fin 2

我找到了一个解决方法:
基本上最新版本的 firebase 软件包已损坏。使用以下软件包有效:

<ItemGroup>
    <PackageReference Include="Xamarin.Build.Download" Version="0.11.0" />
</ItemGroup>
<ItemGroup Condition="$(TargetFramework.Contains('-android'))">
    <PackageReference Include="Xamarin.Google.Dagger" Version="2.39.1" />
    <PackageReference Include="Xamarin.Firebase.Messaging" Version="122.0.0.2" />
    <PackageReference Include="Xamarin.GooglePlayServices.Base" Version="117.6.0.2" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

一旦我使用以.3而不是.2最后两个结尾的版本,它就会损坏......