部署.NET MAUI Android项目遇zzip类型重复定义错误求解决方案
解决.NET 8 MAUI Android编译错误:Type com.google.android.gms.measurement.internal.zzip重复定义
错误信息
1>MSBUILD : java.exe error JAVA0000: Error in obj\Debug\net8.0-android34.0\lp\243\jl\classes.jar:com/google/android/gms/measurement/internal/zzip.class: 1>MSBUILD : java.exe error JAVA0000: Type com.google.android.gms.measurement.internal.zzip is defined multiple times: obj\Debug\net8.0-android34.0\lp\243\jl\classes.jar:com/google/android/gms/measurement/internal/zzip.class, obj\Debug\net8.0-android34.0\lp\244\jl\classes.jar:com/google/android/gms/measurement/internal/zzip.class 1>MSBUILD : java.exe error JAVA0000: Compilation failed
问题原因
项目同时引用了Firebase相关包(Plugin.Firebase.Analytics、Plugin.Firebase.Crashlytics)和Admob相关包(Plugin.MauiMTAdmob、Xamarin.GooglePlayServices.Ads.Lite),两类包依赖的Google Play Services Measurement库版本不一致,导致编译时出现重复类定义。手动安装额外的Xamarin.GooglePlayServices.Measure包会进一步加剧版本冲突。
解决方案
1. 强制统一Google依赖库版本
在项目的.csproj文件的<PropertyGroup>节点中添加以下配置,强制所有依赖Google Play Services和AndroidX的包使用统一版本:
<PropertyGroup> <!-- 统一Google Play Services版本,与已用的Xamarin.GooglePlayServices.Ads.Lite版本匹配 --> <AndroidGooglePlayServicesVersion>123.0.0</AndroidGooglePlayServicesVersion> <!-- 统一AndroidX版本,与已用的Xamarin.AndroidX.Lifecycle系列版本匹配 --> <AndroidXVersion>2.8.4</AndroidXVersion> </PropertyGroup>
2. 移除重复的配置项
删除.csproj中重复的GoogleServicesJson引用,保留带TargetFramework条件的那组即可:
<!-- 保留这组,删除上方无条件的<GoogleServicesJson>引用 --> <ItemGroup Condition="'$(TargetFramework)' == 'net8.0-android'"> <GoogleServicesJson Include="google-services.json" /> </ItemGroup>
3. 清理项目缓存并重建
- 删除项目根目录下的
bin和obj文件夹 - 在Visual Studio中执行「清理解决方案」,再执行「重建解决方案」
4. 移除多余的NuGet包
卸载之前手动安装的Xamarin.GooglePlayServices.Measure相关包,避免引入额外的版本冲突。
内容的提问来源于stack exchange,提问作者Costas
相关产品推荐
相关产品推荐

