求助:解决MAUI中Firebase与Admob插件冲突的类型重复构建错误
在MAUI项目中同时集成Plugin.Firebase和MauiMTAdmob插件时,会触发类型重复定义的构建错误,具体报错信息如下:
Error in obj\Debug\net7.0-android33.0\lp\183\jl\classes.jar:com/google/android/gms/internal/measurement/zzef.class:
Type com.google.android.gms.internal.measurement.zzef is defined multiple times: obj\Debug\net7.0-android33.0\lp\183\jl\classes.jar:com/google/android/gms/internal/measurement/zzef.class, obj\Debug\net7.0-android33.0\lp\243\jl\classes.jar:com/google/android/gms/internal/measurement/zzef.class
Compilation failed
java.lang.RuntimeException: com.android.tools.r8.CompilationFailedException: Compilation failed to complete, origin: obj\Debug\net7.0-android33.0\lp\183\jl\classes.jar
经排查,冲突根源是play-services-measurement-base.aar和play-services-measurement-api.aar这两个依赖包被重复引入。此前尝试过更换插件版本、清理Obj/Bin目录、手动移除冲突类等方法,均未解决问题(手动移除后构建成功但运行时崩溃)。
以下是针对性的解决建议:
强制统一Google Play服务依赖版本
打开项目Platforms/Android/build.gradle文件,添加依赖版本强制配置,确保所有相关依赖使用同一版本(版本号可根据插件兼容性调整):configurations.all { resolutionStrategy { force 'com.google.android.gms:play-services-measurement-base:21.5.0' force 'com.google.android.gms:play-services-measurement-api:21.5.0' } }排除插件的重复依赖
在项目的.csproj文件中,对其中一个插件排除冲突的measurement依赖,保留另一个的即可。比如针对Plugin.Firebase配置排除:<PackageReference Include="Plugin.Firebase" Version="你的版本号"> <ExcludePackageReferences> <ExcludePackageReference>com.google.android.gms:play-services-measurement-api</ExcludePackageReference> <ExcludePackageReference>com.google.android.gms:play-services-measurement-base</ExcludePackageReference> </ExcludePackageReferences> </PackageReference>选用插件的兼容版本组合
查看两个插件的官方仓库issue或文档,找到官方认可的无冲突版本组合,替换项目中的插件版本后重新构建。彻底清理并重建项目
执行以下命令彻底清理残留文件并重新还原依赖:dotnet clean dotnet restore dotnet build --no-incremental同时手动删除项目根目录下的
obj和bin文件夹,避免旧的冲突文件干扰构建。
内容的提问来源于stack exchange,提问作者WhoEvenKnowsMan

