MAUI .NET 8 Android迁移编译异常求助:类重复定义问题
问题分析与解决方案
Xamarin.Android.Google.BillingClient包是否会引发该异常?
会。Xamarin.Android.Google.BillingClient 依赖旧版本的Xamarin.AndroidX.Collection.Ktx(如你遇到的1.2.0.9版本),而MAUI .NET 8默认引入更高版本的Xamarin.AndroidX.Collection.Jvm(1.4.0.4),两个包都包含androidx.collection.ArrayMapKt.class类,直接触发了重复定义的编译冲突。
解决方案
1. 全局统一AndroidX包版本
在项目的.csproj文件中添加全局版本控制节点,强制所有AndroidX相关包对齐到兼容版本:
<PropertyGroup> <AndroidXVersion>1.4.0.4</AndroidXVersion> </PropertyGroup>
此配置会让所有依赖AndroidX的NuGet包自动使用指定版本,消除版本差异导致的冲突。
2. 显式排除冲突依赖
如果全局版本控制未生效,可在引用Xamarin.Android.Google.BillingClient时,排除旧版冲突包:
<PackageReference Include="Xamarin.Android.Google.BillingClient" Version="你的当前版本"> <ExcludePackageReferences> <ExcludePackageReference>Xamarin.AndroidX.Collection.Ktx</ExcludePackageReference> </ExcludePackageReferences> </PackageReference>
3. 清理缓存并重建项目
- 在Visual Studio中执行生成 -> 清理解决方案
- 打开命令提示符,执行
dotnet nuget locals all --clear清除NuGet缓存 - 执行
dotnet restore重新还原包,再重新生成项目
4. 升级BillingClient到最新兼容版本
直接将Xamarin.Android.Google.BillingClient升级到官方最新版本,新版本通常会适配MAUI .NET 8的AndroidX依赖版本,从根源避免冲突。
内容的提问来源于stack exchange,提问作者Anitha v
相关产品推荐
相关产品推荐

