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

Xamarin Android更新谷歌库后出现类重复定义问题求助

解决Xamarin Android中com.google.android.gms.internal.ads.zza重复定义的冲突问题

这个错误是由于Xamarin.GooglePlayServices.Gass和Xamarin.GooglePlayServices.Ads版本不兼容,导致同一类被多次引入造成的,试试以下方案:

1. 强制统一Google Play Services库版本

Ads和Gass是强关联的依赖库,必须保证版本对齐:

  • 卸载项目中所有Google Play Services相关的NuGet包(Ads、Gass、Base等)
  • 重新安装同一主版本的Ads和Gass包,比如都用121.3.0版本(如果Gass有对应版本),或者统一降级到120.x系列
  • 若手动安装版本不对齐,用NuGet命令强制依赖最高版本:
    Install-Package Xamarin.GooglePlayServices.Ads -Version 121.3.0 -DependencyVersion Highest
    Install-Package Xamarin.GooglePlayServices.Gass -Version 121.3.0 -DependencyVersion Highest
    

2. 彻底清理构建缓存

旧缓存中的重复类会干扰构建,按以下步骤清理:

  • 右键项目 → 清理
  • 手动删除项目根目录下的obj和bin文件夹
  • 重启Visual Studio后重新构建项目

3. 通过Manifest或Gradle排除重复依赖

方法一:修改AndroidManifest.xml

在项目的Properties/AndroidManifest.xml中添加版本锁定,强制使用统一版本:

<application>
  <meta-data android:name="com.google.android.gms.gass.version" android:value="121.3.0" />
</application>

方法二:自定义Gradle配置(若支持)

在项目的build.gradle中添加依赖强制规则,锁定原生库版本(Xamarin包对应原生版本,比如121.3.0对应原生21.3.0):

configurations.all {
    resolutionStrategy {
        force 'com.google.android.gms:play-services-gass:21.0.0'
        force 'com.google.android.gms:play-services-ads:21.3.0'
    }
}

4. 排查第三方包的间接依赖

部分第三方NuGet包可能偷偷引入旧版Gass,检查依赖链:

  • 在Package Manager Console运行命令查看所有依赖:
    Get-Package -ProjectName 你的项目名称 | Select-Object Id, Version, Dependencies
    
  • 找到引入旧版Gass的第三方包,要么更新该包,要么在packages.config中明确指定Gass的版本,覆盖间接依赖:
    <package id="Xamarin.GooglePlayServices.Gass" version="121.3.0" targetFramework="monoandroid12.0" />
    

内容的提问来源于stack exchange,提问作者Albert Takács

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 03:46:12