MAUI Android编译报错:androidx.collection.ArrayMapKt重复定义
解决MAUI .NET8 Android编译JAVA0000重复定义错误(ArrayMapKt)
针对你遇到的androidx.collection.ArrayMapKt重复定义问题,按以下步骤逐一排查解决:
检查并清理冲突的NuGet依赖
打开项目的.csproj文件,确认是否直接引用了xamarin.androidx.collection.jvm和xamarin.androidx.collection.ktx两个包。由于ktx包本身包含了jvm包的核心功能,建议移除xamarin.androidx.collection.jvm的直接引用。如果是间接依赖引入的冲突,在终端执行dotnet list package --include-transitive查看完整依赖树,找到引入冲突包的上游依赖,尝试更新该上游包至兼容版本。强制统一依赖版本或排除冲突包
在.csproj中添加配置,强制两个包使用相同版本,或直接排除冲突的jvm包:<ItemGroup> <!-- 保留ktx包,排除jvm包的所有资产 --> <PackageReference Include="xamarin.androidx.collection.ktx" Version="[你的最新版本号]" /> <PackageReference Include="xamarin.androidx.collection.jvm" Version="[你的最新版本号]" ExcludeAssets="All" /> </ItemGroup>或者用版本锁定确保依赖一致:
<ItemGroup> <PackageVersion Include="xamarin.androidx.collection.jvm" Version="[与ktx一致的版本号]" /> <PackageVersion Include="xamarin.androidx.collection.ktx" Version="[与ktx一致的版本号]" /> </ItemGroup>清理项目及NuGet缓存
- 删除项目根目录下的
bin和obj文件夹,彻底清除编译缓存。 - 在终端执行
dotnet nuget locals all --clear清空本地NuGet缓存,再运行dotnet restore重新还原所有依赖。 - 重启Visual Studio后重新编译项目。
- 删除项目根目录下的
临时启用重复类忽略(仅紧急情况)
如果上述方法未生效,可临时在.csproj的Android配置中添加忽略重复类的打包参数,但这只是权宜之计,仍需优先解决依赖冲突:<PropertyGroup Condition="'$(TargetFramework)' == 'net8.0-android'"> <AndroidDexTool>d8</AndroidDexTool> <AndroidDexFlags>--ignore-duplicate-classes</AndroidDexFlags> </PropertyGroup>验证MAUI Workload与VS版本兼容性
在终端执行dotnet workload list查看已安装的MAUI组件版本,确保与当前Visual Studio的.NET 8版本完全匹配。若存在版本不匹配,执行dotnet workload install maui重新安装兼容的MAUI workload。
内容的提问来源于stack exchange,提问作者Enrico
相关产品推荐
相关产品推荐

