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

.NET MAUI调用MediaPicker选图触发AppIcon资源未找到异常崩溃

问题根因

这个崩溃和MediaPicker的调用逻辑无关,核心是Android端应用图标资源生成异常:.NET MAUI在Android平台唤起系统媒体选择器时,需要引用mipmap/appicon资源作为选择器弹窗的关联应用标识,你替换图标后对应资源没有被正确编译生成到安装包的mipmap目录下,系统找不到资源就会直接抛出你看到的错误:

Android.Content.Res.Resources+NotFoundException Message=Drawable com.mycompany.myapp:mipmap/appicon with resource ID #0x7f0d0000

这类Android原生层抛出的异常不会进入托管代码的try/catch块,所以你写的异常捕获逻辑不会触发。你提到替换图标后真机仍然显示旧图标,也能佐证图标资源没有被正确编译打包。

解决步骤
  • 第一步全量清理构建缓存
    关闭Visual Studio,删除整个解决方案目录下所有bin、obj文件夹,不要只清理单个项目的缓存,旧的生成缓存会导致新图标不被处理。清理完成后重新打开项目,执行「重建解决方案」,不要用普通的增量构建。
  • 第二步检查图标生成操作配置
    你在属性面板设置的MAUIICON生成操作大小写错误,正确的生成操作名称是MauiIcon,大小写不匹配会导致MAUI的资源生成管道完全跳过这个图标文件,这也是资源缺失的核心诱因之一。把appicon.svg的生成操作改回正确值即可。
  • 第三步修正csproj中的图标配置
    你当前的图标配置缺少必要的属性声明,替换为如下配置:
<!-- App Icon -->
<MauiIcon Include="Resources\AppIcon\appicon.svg" 
          ForegroundFile="Resources\AppIcon\appicon.svg"
          Color="#000000" />

配置里的Color属性是图标背景色,可以根据你的设计需求替换为对应的十六进制色值。

  • 第四步校验SVG文件兼容性
    MAUI的图标生成工具基于SkiaSharp实现,不支持带复杂滤镜、内嵌位图、编辑器私有扩展标记的SVG文件。如果清理缓存、改完配置还是生成不出图标,就把你替换的SVG文件导出为纯文本格式的标准SVG(不要用设计工具导出的带编辑属性的SVG版本),可以先用一个简单的几何图形SVG做测试,确认生成流程正常后再替换为正式图标。
  • 第五步验证资源生成结果
    重建项目后,到obj\对应版本\netX.0-android\res\路径下检查,所有mipmap-*dpi命名的文件夹内都应该存在appicon.png文件,如果对应目录下没有这个文件,说明图标生成步骤仍然失败,回到前面的步骤检查配置和SVG文件。
  • 第六步真机部署前先卸载旧包
    真机上已经安装的旧版本应用会留存资源缓存,直接覆盖安装可能出现资源ID不匹配、图标不更新的问题,先卸载真机上的旧应用,再重新部署新构建的包。
兜底处理

如果上述步骤都完成后仍然出现崩溃,可以在Android平台的MainActivity类上追加配置,指定媒体选择器使用的主题资源,绕开对默认appicon的强依赖,但这个方案只是临时规避,优先解决图标资源生成的问题才是根本解法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 20:57:13