讲讲 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新知",每天准时分享一个新知识,这里只是同步,想要及时学到就来关注我吧!

相关推荐
andyweike2 小时前
Swift
开发语言·ios·swift
茶底世界之下2 小时前
白杯偏蓝,色温调到哪里该停?Awaking 两版正式导出
ios
静以修身zzz5 小时前
OpenStack对象存储-Swift、OpenStack编排管理-heat、OpenStack网络管理-neutron
linux·运维·服务器·架构·openstack·swift
2501_915921436 小时前
KXBuild CI 实操,Windows/Linux 服务器接入 Jenkins 打包 iOS IPA
服务器·windows·vscode·ios·ci/cd·个人开发·敏捷流程
狗凯之家源码网6 小时前
iOS C2 V2 与 Python FastAPI 全链路远控系统深度评测
python·ios·fastapi
看浪的路人6 小时前
第6讲:Streaming 优化——告别“转圈圈“的用户体验
ios·iphone·xcode
传奇开心果编程17 小时前
【Flutter踩坑排雷】第7课:巨型 build 函数坑|全部 UI 写在同一个 build,维护难、隐性异常
android·flutter·ios·移动开发·跨平台·dart·声明式ui
程序员老刘20 小时前
从短剧App的bug看响应式编程在AI时代的优势
flutter·ai编程·客户端
瓦瓦gogo1 天前
第一次了解 iOS 开发:从 Swift、SwiftUI 到公共组件
ios·swiftui·swift
Liben1 天前
Weex开发踩坑记录
android·前端·ios