You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin.Forms与Xamarin.Firebase.Messaging共用编译报错,如何解决?

解决Xamarin.Forms与Xamarin.Firebase.Messaging共存时的Guava库冲突问题

这个编译错误是因为两个NuGet包间接依赖的Guava ListenableFuture库版本不一致,导致D8编译时出现类重复定义的冲突。以下是几种可行的解决方法:

方法一:强制统一Guava ListenableFuture版本

直接在Android项目的.csproj文件中添加指定版本的Xamarin.Google.Guava.ListenableFuture引用,让NuGet解析时用这个版本覆盖所有依赖项的引用:

<ItemGroup>
  <!-- 替换为当前最新兼容的稳定版本,比如1.0.0.14 -->
  <PackageReference Include="Xamarin.Google.Guava.ListenableFuture" Version="1.0.0.14" />
</ItemGroup>

保存文件后,右键项目选择「还原NuGet包」,再重新编译。

方法二:让D8忽略重复类冲突

在项目的.csproj中添加D8编译参数,允许忽略重复类的错误:

<PropertyGroup>
  <AndroidD8AdditionalArguments>--ignore-duplicate-classes</AndroidD8AdditionalArguments>
</PropertyGroup>

这个方法属于快速临时修复,适合确认冲突类的功能兼容的场景,避免版本调整带来的其他问题。

方法三:清理缓存并重新还原依赖

  1. 关闭Visual Studio for Mac
  2. 删除项目根目录下的bin和obj文件夹
  3. 打开终端执行命令清理NuGet缓存:
    dotnet nuget locals all --clear
    
  4. 重新打开项目,右键项目选择「还原NuGet包」
  5. 尝试重新编译

额外注意事项

  • 检查项目的Target Android Framework版本,确保与Xamarin.Firebase.Messaging的要求匹配(通常需要Android 31及以上版本)
  • 尽量升级到Xamarin.Forms和Xamarin.Firebase.Messaging的最新稳定版,新版本会修复多数依赖冲突问题

内容的提问来源于stack exchange,提问作者harry_mitch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 20:25:49