在运行我的应用程序之前,我想运行一个外部shell来更新我的Info.plist。
使用Build Phases-> Run Script,我可以运行我的外壳。这是我的问题,我看到Info.plist在程序构建时更新数据,但是当我遇到我的应用程序时,我发现从plist读取的数据是以前的旧数据。
我还发现了另一个有趣的事情。
一方面,如果我刚刚构建了项目(命令+ B),我看到plist更新然后我运行程序,UI中显示的数据是新数据。
另一方面,如果我在Xcode中使用了Run Button,当Xcode显示构建成功时,我看到Info.plist更新,但是,UI中显示的数据是旧数据。
那么,会发生什么?你能帮我解决一下,让我的数据永远是最新的。
=============
现在,我已经将'Run Script'移动到'Compile Source(swift files)'之前运行外壳,并且它可以工作。但是,我仍然无法理解,因为它在构建期间运行,如果我在'编译源(快速文件)'后运行我的'运行脚本',运行程序无法从Info.plist中获取正确的数据?程序在运行时或编译时加载数据吗?
答案 0 :(得分:0)
构建应用程序涉及许多不同的阶段。编译源只是其中之一,还有链接,复制资源,签名等。其中一些明确列在"构建阶段"选项卡,其他人不是。
因此,在构建过程中的适当时间运行脚本真的是一个问题,以便在构建过程实际使用之前修改Info.plist。
如果您点击"报告导航器" icon(左侧面板顶部列表中的最后一个图标),然后在最后一次构建中,您将看到该构建的报告,其中列出了构建过程中执行的所有步骤,包括运行脚本和处理Info.plist。