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

如何解决Xamarin迁移MAUI时出现的Android构建错误XA4215

错误 XA4215:Java类型xamarin.essentials.fileProvider由多个托管类型生成,请修改[Register]属性,避免生成重复的Java类型。
错误 XA4215:xamarin.essentials.fileProvider由以下项生成:Xamarin.Essentials.FileProvider, Xamarin.Essentials, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
错误 XA4215:xamarin.essentials.fileProvider由以下项生成:Microsoft.Maui.Essentials.FileProvider, Microsoft.Maui.Essentials, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

错误原因

报错是项目迁移过程中同时引入了旧版Xamarin.Essentials和MAUI内置的Microsoft.Maui.Essentials库导致,两个库的FileProvider类生成安卓Java绑定时使用了相同的类型名,触发重复注册冲突。

解决方案

优先方案:移除Xamarin.Essentials依赖

MAUI已经内置了全量的Essentials能力,API完全兼容旧版Xamarin.Essentials,无需单独引用:

  • 打开项目NuGet包管理器,卸载所有Xamarin.Essentials相关依赖包
  • 删除项目根目录下的bin、obj缓存文件夹
  • 重新生成项目即可直接消除冲突

备选方案(仅适用于必须保留Xamarin.Essentials的场景):自定义Register属性修改Java类型名

如果项目依赖的第三方组件强制要求Xamarin.Essentials无法卸载,可以通过自定义子类修改绑定名称规避冲突:

  1. 在安卓平台项目中新增自定义FileProvider类,通过[Register]属性指定唯一的Java类型名:
using Android.Runtime;
using Xamarin.Essentials;

// 此处Register参数替换为你自己的包名+唯一标识,避免和其他类型冲突
[Register("com.your_app_package.custom_file_provider")]
public class CustomFileProvider : FileProvider
{
    public CustomFileProvider(IntPtr javaReference, JniHandleOwnership transfer) 
        : base(javaReference, transfer)
    {
    }
}
  1. 打开Platforms/Android/AndroidManifest.xml,找到所有xamarin.essentials.fileProvider相关的配置项,替换为你自定义的类的完整名称
  2. 清理项目缓存,删除bin、obj文件夹后重新生成项目

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 04:06:00