实现Firebase云消息传递时出现Java.Lang.NoClassDefFoundError错误

29

我正在使用Firebase Cloud Messaging实现推送通知,在此过程中,我将以下代码添加到我的AndroidManifest.xml文件中

<!--FCM RECEIVER-->
<receiver
  android:name="com.google.firebase.iid.FirebaseInstanceIdInternalReceiver"
  android:exported="false"/>
<receiver
  android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver"
  android:exported="true"
  android:permission="com.google.android.c2dm.permission.SEND">
  
  <intent-filter>
    <action android:name="com.google.android.c2dm.intent.RECEIVE"/>
    <action android:name="com.google.android.c2dm.intent.REGISTRATION"/>
    <category android:name="${applicationId}"/>
  </intent-filter>    
</receiver>
<!---FCM RECEIVER ENDS HERE-->

但是当我尝试运行应用程序时,它甚至在启动活动之前就会抛出该应用程序

Java.Lang.NoClassDefFoundError: 'Failed resolution of: Lcom/google/android/datatransport/runtime/dagger/internal/Factory;'

顺便提一下,我已经为此功能安装了两个NuGet包:

  1. Xamarin.GooglePlayServices.Base
  2. Xamarin.Firebase.Messaging

我尝试过:

  1. 删除bin和obj文件夹,然后重新构建解决方案
  2. 将所有相同系列的Nugget包更新到相同版本
2个回答

87
安装 Xamarin.Google.Dagger 包解决了我的问题。

7
你是怎么发现与缺少软件包有关的错误的? - Omtechguy
1
我希望Xamarin文档中提到了这一点! - trebor
这样简单的解决方案。希望更多的问题都能像这样得到解决。 - Chris
4
请确保将它安装到 Android 项目中,而不是 Xamarin Forms 项目中。 - pseudoabdul
请更新答案以指定安装必须在Android项目上进行。 - user1034912

8

只需安装Xamarin.Google.Dagger包即可。这应该可以解决问题。似乎它正在尝试查找该包但未找到。


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