You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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缓存

    1. 删除项目根目录下的bin和obj文件夹,彻底清除编译缓存。
    2. 在终端执行dotnet nuget locals all --clear清空本地NuGet缓存,再运行dotnet restore重新还原所有依赖。
    3. 重启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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 12:03:27