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

.NET MAUI Android编译报错:android.support.v4.os类重复定义

解决.NET MAUI Android编译时重复定义android.support.v4.os.IResultReceiver$Stub$Proxy的问题

问题根源

这个错误的核心是项目同时引入了AndroidX库和旧版Android Support库,导致同一Java类被多次定义。从错误日志能看到,冲突一方来自androidx.core.core.aar,结合你的NuGet包列表,旧版第三方插件是触发冲突的主要诱因。

排查与解决方案

1. 替换过时的第三方插件

你项目里的Xam.Plugin.Geolocator(4.5.0.6)和Xam.Plugin.Media(6.0.2)均已停止维护,它们依赖旧版Android Support库,和MAUI默认的AndroidX生态完全不兼容:

  • 替换Xam.Plugin.Geolocator:改用MAUI内置的Microsoft.Maui.Devices.GeolocationAPI,无需额外安装NuGet包
  • 替换Xam.Plugin.Media:改用MAUI内置的Microsoft.Maui.Media.PickersAPI,同样为内置功能,完美适配AndroidX

操作步骤:

  • 卸载旧插件:
    dotnet remove package Xam.Plugin.Geolocator
    dotnet remove package Xam.Plugin.Media
    
  • 重构代码:将原插件调用逻辑替换为MAUI官方API即可

2. 强制统一依赖为AndroidX

如果暂时无法替换插件,可在项目的.csproj文件中添加以下配置,强制所有依赖使用AndroidX,并自动将旧Support库映射到AndroidX:

<PropertyGroup>
  <!-- 启用AndroidX映射 -->
  <AndroidUseAndroidX>true</AndroidUseAndroidX>
  <!-- 自动转换旧Support库依赖为AndroidX -->
  <AndroidEnableJetifier>true</AndroidEnableJetifier>
</PropertyGroup>

Jetifier工具会自动处理依赖中的旧Support库类,替换为对应的AndroidX类,从根源解决重复定义问题。

3. 彻底清理并重建项目

完成上述修改后,执行以下步骤确保环境干净:

  • 删除项目根目录下的bin、obj文件夹
  • 还原NuGet依赖:
    dotnet restore
    
  • 重新编译Android项目:
    dotnet build -f net8.0-android
    

4. 排查其他潜在冲突包

若问题仍存在,可通过以下命令查看完整的依赖树形结构,定位其他依赖旧Support库的包:

dotnet list package --include-transitive

重点检查第三方组件版本,比如当前使用的Telerik.UI.for.Maui 6.7.0,可尝试更新到兼容.NET MAUI 8的最新版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 21:15:53