讲讲 Xcode 中丢失的 info.plist 文件

这里每天分享一个 iOS 的新知识,快来关注我吧

前言

做 iOS 开发的同学应该对 info.plist 文件都不陌生,其中包含了大量关于项目配置的选项。但是从 Xcode 13 开始,新项目中已经不包含 info.plist 文件了。

这个在 Xcode 13 的发行说明中也有提到:

Projects created from several templates no longer require configuration files such as entitlements and Info.plist files. Configure common fields in the target's Info tab, and build settings in the project editor.

我试了一下,如果创建的是 SwiftUI 项目,新项目的目录中已经完全不包含 这个文件了:

如果创建的是 storyboard UIKit 项目,info.plist 还在,只不过其中只有 Application Scene Manifest 字段。

更改 info.plist

虽然创建工程的时候不自带 info.plist 文件了,但是我们仍然可以像以前一样更改这个文件:

按照顺序导航到 Project → Targets → Info → Custom iOS Target Properties,可以看到这个文件的预览页面:

然后就可以在这里对 info.plist 文件进行更改了,其中有一点很奇怪的是,在这里的修改有的会同步到 info.plist 文件中,有的则不会,这个还没弄清楚原因,不过大家以后如果有修改这个文件的需求最好是通过 Targets 下的 info 栏修改。

恢复 info.plist 文件?

某些情况下(比如自动化脚本)会读取 info.plist 文件,如果没有这个文件的话就会比较麻烦,那么有没有可能恢复这个文件呢?下边有个办法可以尝试一下。

1、创建一个新的 info.plist 文件

这里假设你的新项目是 swiftUI 项目,如果是 storyboard UIKit 项目就不用再创建新的了。按快捷键 Command + N 创建一个新的 Property List 文件,并命名为 Info.plist

2、把 Target info 下的属性全部复制到新的 Info.plist 文件中

没有找到能够全选的方法,只能一个一个复制粘贴了。

3、设置路径

选中新的 info.plist 文件,右侧可以看到这个文件的路径,复制它。

然后来到 Project → Targets → Build Settings → Info.plist File,把刚刚复制的路径粘贴进去:

4、其他设置

除了上边的设置之外,还需要把 Generate Info.plist File 选项设置为 No:

然后来到 Build Phases 下的 Copy Bundle Resources 中,把 Info.plist 删除掉。

最后尝试编译一下,上边的步骤不出错的话会成功编译,然后可以通过新建的 Info.plist 文件修改一些属性,运行项目看看改动是否生效。至此,老的 Info.plist 文件又回来了。

这里每天分享一个 iOS 的新知识,快来关注我吧

本文同步自微信公众号 "iOS新知",每天准时分享一个新知识,这里只是同步,想要及时学到就来关注我吧!

相关推荐
Nick56831 小时前
Xcode16 避坑
ios
ii_best1 小时前
IOS/ 安卓开发工具按键精灵Sys.GetAppList 函数使用指南:轻松获取设备已安装 APP 列表
android·开发语言·ios·编辑器
2501_915909061 小时前
iOS 26 文件管理实战,多工具组合下的 App 数据访问与系统日志调试方案
android·ios·小程序·https·uni-app·iphone·webview
hweiyu001 小时前
苹果iOS开发零基础特训(视频教程)
ios
YGGP5 小时前
【Swift】LeetCode 438. 找到字符串中所有字母异位词
swift
2501_9159184115 小时前
掌握 iOS 26 App 运行状况,多工具协作下的监控策略
android·ios·小程序·https·uni-app·iphone·webview
2501_9159090618 小时前
iOS 混淆实战,多工具组合完成 IPA 混淆与加固(源码 + 成品 + 运维一体化方案)
android·运维·ios·小程序·uni-app·iphone·webview
QWQ___qwq20 小时前
Swift中.gesture的用法
服务器·microsoft·swift