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

Xamarin.Android迁移MAUI遇XA4215错误:Java类型重复生成

解决Xamarin.Android迁移.NET MAUI Android后的XA4215错误

疑问解答

1. MAUI项目为啥还出现Xamarin相关内容?Xamarin.Android.Common.targets是什么?

.NET MAUI Android是从Xamarin.Android演进过来的,构建过程里还复用了旧的Xamarin.Android.Common.targets构建脚本,这个文件属于微软Android SDK的一部分,默认存在C:\Program Files\dotnet\packs\Microsoft.Android.Sdk.Windows\<版本号>\tools\目录下,不在你的项目/解决方案文件夹里是正常的。

出现Xamarin相关引用,是因为项目间接依赖了旧的Xamarin.Android支持库(比如Xamarin.Android.Support.Media.Compat)和AndroidX库(Xamarin.AndroidX.Media),这俩库生成了同名的Java桥接类型,直接触发了冲突。

2. 怎么解决XA4215错误?

根据报错信息,冲突来自两个不同库的MediaSessionCompat+IOnActiveChangeListenerImplementor,按以下步骤处理:

  • 清理重复依赖:
    打开项目的.csproj文件,删掉所有Xamarin.Android.Support.*开头的NuGet包引用,换成对应的AndroidX包。比如把Xamarin.Android.Support.Media.Compat换成Xamarin.AndroidX.Media,确保只留AndroidX版本的库。

  • 统一依赖版本:
    在.csproj里添加统一的包版本配置,避免不同依赖引入版本不一致的库:

    <ItemGroup>
      <PackageReference Include="Xamarin.AndroidX.Media" Version="1.6.0.0" />
      <!-- 其他AndroidX包也统一版本,确保无冲突 -->
    </ItemGroup>
    
  • 彻底清理缓存后重建:
    执行以下命令清空缓存并重新构建:

    dotnet clean
    rd /s /q bin obj # Windows系统用这个,Mac/Linux用rm -rf bin obj
    dotnet restore
    dotnet build
    
  • 检查间接依赖:
    运行dotnet list package --include-transitive命令查看所有间接依赖,找出还在引用旧Xamarin支持库的第三方包,要么把这个第三方包更到支持MAUI/AndroidX的版本,要么换成其他替代包。


内容的提问来源于stack exchange,提问作者angleUr

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 21:04:58