资源检查

时间:2010-03-08 14:41:07

标签: iphone cocoa-touch xcode xcodebuild

嘿我经常将我的XCode iPhone项目上传到svn存储库,以便在另一台机器上构建。

我的问题是,当我向项目添加资源时,有时我忘记将资源添加为相对于项目。

我知道一个答案是要更加小心(当你疲惫时不容易!)但是如果有办法运行脚本来检查我的资源路径是相对的,当我建立并警告我,如果他们不是它将是对我来说是一个很好的节省时间。

我将如何做到这一点?

由于

克里斯

2 个答案:

答案 0 :(得分:1)

您可以选择项目中的所有文件,并一次性为所有文件设置路径类型。虽然这不是一个脚本,但这确实比单独执行文件节省了大量时间

我认为编写脚本的最佳方法是查看.xcodeproj文件 - 文件路径列在那里。如果您的项目名为MyProject,则需要打开(通过在Finder中使用Show Package Contents或只在终端中使用常用的cd)MyProject.xcodeproj目录。

在这里,您将找到一个名为project.pbxproj的文件 - 在编辑器中打开它,不会弄乱您的格式并查看文件。如果在项目中搜索某个文件,您应该能够看到Xcode如何存储对项目文件的引用。

查找名为/ * Begin PBXFileReference section * /的部分。在这里列出了所有文件,以及它们相对于项目的位置,例如:

... path = Classes/MyClass.h; sourceTree = SOURCE_ROOT

如果您可以解析此文件,您应该能够实现您想要的 - 但请记住备份该文件,否则您可能会破坏您的项目。

答案 1 :(得分:0)

如果您改为编写一个脚本,询问SCM是否未提交项目中的任何内容,那该怎么办?例如,想一想这个场景

Project Root

  Codex

    Project.xcodeproj
    …

  Design

    anImage.png

其中anImage.png位于Codex之外,Xcode项目所在的位置(其路径以../开头)。强大的.pbxproj解析器必须支持Xcode引用文件的所有变体,以确切知道是否存在杂散文件。

OTOH,SCM知道一切都在哪里(你提到过ping到SVN服务器),所以为什么不去问它呢。

  • 如果项目中的任何内容未提交,我们有一个Ruby script在Xcode的构建日志中打印警告。