2013-10-10 32 views
3

我想知道是否可以从我的Mac实用程序应用程序中将运行脚本构建阶段添加到另一个Xcode项目。我可以看到在添加运行脚本(执行diff)时Xcode项目发生了什么,但我不知道如何在代码中添加等效代码。如何以编程方式将运行脚本构建阶段添加到Xcode项目?

我应该手动解析它吗?是否有文档或库可用于此?如果我可以确保我安全和正确地做到这一点,这将是一个有用的功能。我不想搞乱人们的Xcode项目!

回答

1

我实际上决定添加一个运行脚本。事实证明,这很容易。首先,在Xcode中,将运行脚本添加到您的项目并通过diff工具观察更改。 'buildPhases'数组(附加在一些任意命名的字典中相当深的部分)还有一个补充,然后添加到'buildPhases'数组中的密钥也添加到'objects'字典中,并带有一个字典代表实际的运行脚本构建阶段格式。

因此,要以编程方式复制此内容,请将pbxproj文件的内容放入NSDictionary中,并遍历查找buildPhases数组的字典。然后,添加您的密钥。最后,使用键和一个反映Xcode格式的字典将对象添加到'objects'数组中。

将文件保存回磁盘在相同的位置,瞧!您已以编程方式添加了运行脚本构建阶段。

+1

什么时候你运行这段代码?它是一个快速的脚本?你介意在这里分享它还是作为一个“主旨”或什么? – Ali

2

可能最简单的解决方案是将运行脚本阶段添加到另一个项目,该项目定义执行脚本的命令行,该脚本驻留在某个已知位置的特定文件中。然后

第一个项目可能有一个运行脚本阶段,或执行其创建修改这个脚本文件的程序。当另一个项目启动时,它启动运行脚本阶段,并且 - voilà - 执行任何已定义的内容。

+0

感谢您的回答!仍然试图包裹我的头:)。我的Mac应用程序在商店中,而我试图做的是在我的应用程序中有一个按钮,它将运行脚本阶段添加到用户在文件系统上指定的任何项目。它需要在运行时。终端仍然是最佳选择? – Lizza

+1

好吧,这可能会变得复杂(在Xcode项目的XML中摆弄)。也许,一个初步的解决方案是你的应用程序创建一个脚本文件,并告诉用户如何在运行脚本阶段执行该脚本文件。此运行脚本阶段需要由用户在他的项目中添加。 – CouchDeveloper

+0

够公平的。这个问题的目的是看看它是否可行和可行。我不想冒着对人们项目文件的腐败风险,因此寻找工作可能会更好。谢谢! – Lizza

相关问题