如何让MAUI Resizetizer同时生成双平台适配的启动屏PNG?
解决MAUI双平台启动屏Resizetizer一次性生成资源问题
问题根源
你当前的配置使用Condition基于当前构建的目标平台激活对应的<MauiSplashScreen>条目,导致每次构建仅处理其中一个条目,Resizetizer自然只会生成对应平台的PNG文件,切换平台时未被处理的条目就会出现文件缺失。
优化方案
改用Platform属性为每个启动屏条目指定专属平台,让Resizetizer同时处理两个条目,一次性生成双平台所需的PNG资源:
<ItemGroup> ... <!-- Splash Screen --> <MauiSplashScreen Platform="iOS" Include="Resources\Splash\logo_filled_withtext_whiteondarkb.svg" Color="#4D8F8D" /> <MauiSplashScreen Platform="Android" Include="Resources\Splash\logo_filled_withtext_whiteondarkb_android12.svg" Color="#4D8F8D" /> ... </ItemGroup>
方案说明
Platform属性明确指定该启动屏条目归属的平台,Resizetizer会遍历所有带Platform属性的条目,为每个平台单独生成适配资源,不受当前构建目标平台的限制。- 若需覆盖除Android外的所有其他平台(如Windows、MacCatalyst),可将第一个条目改为
Platform="!Android",替代Platform="iOS",这样非Android平台都会统一使用该启动图:<MauiSplashScreen Platform="!Android" Include="Resources\Splash\logo_filled_withtext_whiteondarkb.svg" Color="#4D8F8D" />
验证效果
修改配置后清理并重新构建项目,obj目录下会同时生成两个平台对应的启动屏PNG资源,切换平台运行时不会再出现文件找不到的错误,也无需反复调换条目顺序。
内容的提问来源于stack exchange,提问作者Bob Sammers
相关产品推荐
相关产品推荐

