使用 Xamarin.Firebase 时出现“Failed resolution of: Lcom/google/android/datatransport/TransportFactory”错误。

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

java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/datatransport/TransportFactory;
at com.google.firebase.datatransport.TransportRegistrar.getComponents(TransportRegistrar.java:32)
at com.google.firebase.components.ComponentRuntime.discoverComponents(ComponentRuntime.java:109)
at com.google.firebase.components.ComponentRuntime.(ComponentRuntime.java:91)
at com.google.firebase.components.ComponentRuntime.(ComponentRuntime.java:45)
at com.google.firebase.components.ComponentRuntime$Builder.build(ComponentRuntime.java:360)
at com.google.firebase.FirebaseApp.(FirebaseApp.java:427)
at com.google.firebase.FirebaseApp.initializeApp(FirebaseApp.java:299)
at com.google.firebase.FirebaseApp.initializeApp(FirebaseApp.java:267)
at com.google.firebase.FirebaseApp.initializeApp(FirebaseApp.java:252)
at com.google.firebase.provider.FirebaseInitProvider.onCreate(FirebaseInitProvider.java:51)
at android.content.ContentProvider.attachInfo(ContentProvider.java:2388)
at android.content.ContentProvider.attachInfo(ContentProvider.java:2358)
at com.google.firebase.provider.FirebaseInitProvider.attachInfo(FirebaseInitProvider.java:45)
at android.app.ActivityThread.installProvider(ActivityThread.java:7239)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:6780)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6697)
at android.app.ActivityThread.access$1300(ActivityThread.java:237)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1913)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.datatransport.TransportFactory" on path: DexPathList[[zip file "/data/app/.../base.apk"],nativeLibraryDirectories=[/data/app/.../lib/x86_64, /data/app/.../base.apk!/lib/x86_64, /system/lib64, /system_ext/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:207)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
... 24 more

在构建期间,我收到了以下警告:

警告: 在 obj\Debug\net6.0-android\lp\153\jl\classes.jar 中的 com/google/firebase/datatransport/TransportRegistrar.class:
需要默认或静态接口方法转换成字节码 Lcom/google/firebase/datatransport/TransportRegistrar;lambda$getComponents$0(Lcom/google/firebase/components/ComponentContainer;)Lcom/google/android/datatransport/TransportFactory;,但找不到类型 com.google.android.datatransport.runtime.TransportRuntime

通过试错法,我发现这会发生在所有 Xamarin.Firebase.* 包中,但是当直接引用 Xamarin.Google.Android.DataTransport.TransportRuntime 时没有此问题。

我该如何解决这个问题?


你能解决这个问题吗?我也遇到了同样的问题,下面提出的解决方案对我不起作用。 - Matt F
@MattF:不,我仍然使用.2版本。 - Christoph Fink
1个回答

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>

只要我使用以.3结尾的版本代替最后两个使用.2结尾的版本,它就会出问题...

我得到了很多错误:javac.exe错误JAVAC0000:错误:包com.google.android.gms.common.api.GoogleApiClient不存在。 - Luca Ziegler

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接