添加Info.plist后iOS SwiftUI应用图标不显示及启动页设置无法保存问题求助
看起来你遇到的问题核心是手动编写的Info.plist配置与现代SwiftUI项目的默认管理逻辑冲突,结合你用的是@main风格的App结构,我来帮你拆解问题并给出解决方案:
一、应用图标不显示的原因及修复步骤
你之前的App图标正常显示,添加Info.plist后失效,大概率是因为你手动添加了CFBundleIcons配置,干扰了Xcode通过Asset Catalog管理图标的默认流程:
移除Info.plist中多余的图标配置
现代iOS项目(尤其是SwiftUI)默认通过Assets.xcassets里的AppIcon集合管理所有尺寸的图标,不需要在Info.plist里手动声明CFBundleIcons字典。你可以直接删除Info.plist中这段代码:<key>CFBundleIcons</key> <dict> <key>CFBundlePrimaryIcon</key> <dict> <key>CFBundleIconFiles</key> <array> <string>AppIcon</string> </array> <key>UIPrerenderedIcon</key> <false/> </dict> </dict>验证AppIcon集合的完整性
打开Assets.xcassets,检查AppIcon下所有尺寸的图标是否都正确导入:- 确保每个图标 slot 都有对应的图片,没有红色警告(如果有警告,说明图片尺寸不符合要求)
- 图片格式建议用PNG,避免使用带透明通道问题的格式
彻底清理并重新构建
再次执行以下操作确保缓存被完全清除:- 按下
Shift + Cmd + K清理构建文件夹 - 执行终端命令删除Derived Data:
rm -rf ~/Library/Developer/Xcode/DerivedData - 重启Xcode,重新连接设备/模拟器,点击
Cmd + R重新运行应用
- 按下
二、LaunchScreen设置无法保存的原因及修复
这个问题和你Info.plist中多余的UIApplicationSceneManifest配置有关,因为你用的是@main的SwiftUI App结构,不需要手动配置SceneDelegate:
删除Info.plist中的SceneDelegate配置
你的项目没有SceneDelegate.swift文件,但Info.plist里却声明了UISceneDelegateClassName,这会导致Xcode的项目设置和Info.plist内容冲突,从而无法保存LaunchScreen设置。直接删除整个UIApplicationSceneManifest字典:<key>UIApplicationSceneManifest</key> <dict> <key>UIApplicationSupportsMultipleScenes</key> <false/> <key>UISceneConfigurations</key> <dict> <key>UIWindowSceneSessionRoleApplication</key> <array> <dict> <key>UISceneConfigurationName</key> <string>Default Configuration</string> <key>UISceneDelegateClassName</key> <string>$(PRODUCT_MODULE_NAME).SceneDelegate</string> </dict> </array> </dict> </dict>重新设置LaunchScreen
回到Xcode的General标签页,找到Launch Screen File选项,重新选择你的LaunchScreen.storyboard,现在切换页面后设置应该能正常保存了。
三、额外检查项
- 确认项目Build Settings中的
Asset Catalog App Icon Set Name(在Assets Compiler - Options分类下)设置为AppIcon,和你Assets里的集合名称一致 - 真机测试时,如果图标还是不显示,可以尝试重启设备,或者先删除应用再重新安装(iOS会缓存应用图标,有时候需要强制刷新)
- 检查Info.plist中的
CFBundleIdentifier、CFBundleName等字段是否和Xcode项目设置里的内容完全一致,避免配置不匹配
内容来源于stack exchange

