.NET MAUI项目因应用图标问题无法归档/发布求助
按照微软MAUI应用图标文档指引,对项目做了如下修改:
Android Manifest配置
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"> <application android:allowBackup="true" android:icon="@mipmap/kigoo" android:roundIcon="@mipmap/kigoo_round" android:supportsRtl="true"> </application> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <queries> <intent> <action android:name="android.intent.action.DIAL" /> <data android:scheme="tel"/> </intent> <intent> <action android:name="android.intent.action.SENDTO" /> <data android:scheme="mailto" /> </intent> </queries> </manifest>
项目.csproj文件配置
<!-- App Icon --> <MauiIcon Include="Resources\AppIcon\appicon.svg" ForegroundFile="Resources\AppIcon\kigoo.svg" ForegroundScale="0.65" Color="#512BD4" />
项目可正常部署到模拟器和物理设备,但遇到以下问题:
- Debug模式下归档(用于排查错误)失败,无错误提示;
- Release模式下归档时抛出3个错误:
Severity Code Description Project File Line Suppression State
Error APT2260 resource mipmap/kigoo_round (aka com.companyname.kigoopcmauisimple:mipmap/kigoo_round) not found. This error is likely caused by an issue with the AndroidManifest.xml file or an Android manifest generation attribute in a
source code file. KigooPCMauiSimple C:\Users{path} 1Severity Code Description Project File Line Suppression State
Error APT2260 resource mipmap/kigoo (aka com.companyname.kigoopcmauisimple:mipmap/kigoo) not found. This error is likely caused by an issue with the AndroidManifest.xml file or an Android manifest generation attribute in a source code file. KigooPCMauiSimple
C:\Users{path} 1Severity Code Description Project File Line Suppression State
Error APT2067 failed processing manifest. KigooPCMauiSimple C:\Program Files\dotnet\packs\Microsoft.Android.Sdk.Windows\32.0.448\tools\Xamarin.Android.Aapt2.targets 212
核心原因
MAUI的MauiIcon会自动生成Android所需的mipmap资源,但你手动在AndroidManifest中指定了android:icon和android:roundIcon,而MAUI默认生成的资源名称是appicon而非kigoo,导致归档时找不到对应资源。
具体修复步骤
修改AndroidManifest.xml
移除手动指定的android:icon和android:roundIcon属性,让MAUI自动处理图标配置:<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"> <application android:allowBackup="true" android:supportsRtl="true"> </application> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <queries> <intent> <action android:name="android.intent.action.DIAL" /> <data android:scheme="tel"/> </intent> <intent> <action android:name="android.intent.action.SENDTO" /> <data android:scheme="mailto" /> </intent> </queries> </manifest>确认csproj配置有效性
保持现有MauiIcon配置不变,MAUI会根据该配置自动生成包含圆形图标在内的所有mipmap资源,无需手动在Manifest中声明:<!-- App Icon --> <MauiIcon Include="Resources\AppIcon\appicon.svg" ForegroundFile="Resources\AppIcon\kigoo.svg" ForegroundScale="0.65" Color="#512BD4" />清理重建项目
- 执行
dotnet clean命令清理项目 - 删除项目目录下的
bin和obj文件夹 - 重新尝试Debug/Release归档
- 执行
额外排查点
如果上述步骤无效,检查以下内容:
- 确认
Resources\AppIcon目录下的appicon.svg和kigoo.svg文件存在,且文件路径与csproj中的配置完全一致 - 检查Android项目的
Resources\mipmap-*目录是否有生成的图标资源,若没有,可尝试卸载并重新安装MAUI workload:dotnet workload uninstall maui dotnet workload install maui
内容的提问来源于stack exchange,提问作者Rikudou En Sof

