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
相关产品推荐
相关产品推荐

