pbxproj_structure_check 1.0.1

pbxproj_structure_check 1.0.1

测试已测试
语言语言 Obj-CObjective C
许可 MIT
发布最后发布2014年12月

Kamil Borzym 维护。




  • Kamil Borzym

pbxproj structure check

一个简单的 Ruby 脚本,用于检查 Xcode *.pbxproj 文件结构与项目物理目录结构是否匹配。它可以添加为构建阶段,以便在您的项目结构失去对齐时向您发出警告。

动机

一些(如果不是所有)的 Xcode 开发者历史:您在 Subfolder 组中看到了一些 TestClass 文件

readme_img1.png

但是在文件检查器中看到了一些奇怪的东西!TestClass.[h|m] 文件实际上不在 Subfolder 组中 :o

readme_img2.png

使用 Finder 揭露了可怕的真相 - *.pbxproj 文件和文件系统不对齐!

readme_img3.png

Cocoa Pods

pbxproj_structure_check 可以通过 CocoaPods 集成到您的项目中。将以下条目添加到您的 Podfile 中

pod 'pbxproj_structure_check', '~> 1.0.1'

然后向您的应用目标添加一个 'Run Script' 构建阶段(有关详细信息,请参阅 将构建阶段添加到 Xcode)。将以下内容作为构建阶段脚本

ruby Pods/pbxproj_structure_check/pbxproj_structure_check.rb ${PROJECT_NAME}.xcodeproj/project.pbxproj

如果您在构建期间从脚本收到有关某些对象的错误,您可以通过在脚本调用末尾添加用':'连接的对象 ID 来忽略这些错误。

例如:当您收到有关对象 D497DE90182D2EFC00924692 和 A497DE90182D2EFC00924692 的错误时,您想忽略这些错误,请使用以下调用

ruby Pods/pbxproj_structure_check/pbxproj_structure_check.rb ${PROJECT_NAME}.xcodeproj/project.pbxproj D497DE90182D2EFC00924692:A497DE90182D2EFC00924692

手动使用

$ ruby pbxproj_structure_check.rb 
ruby pbxproj_structure_check.rb pbx_path [ignored_id:...]

例子

$ ruby pbxproj_structure_check.rb /allignedProjectPath/allignedProject.xcodeproj/project.pbxproj
$ echo $?
0

$ ruby pbxproj_structure_check.rb /otherProject/otherProject.xcodeproj/project.pbxproj
Object 'D497DE90182D2EFC00924692' named 'Supporting Files' at '/otherProject' has no physical path
$ echo $?
1
# I don't care about this object, let's ignore it :P
$ ruby pbxproj_structure_check.rb /otherProject/otherProject.xcodeproj/project.pbxproj D497DE90182D2EFC00924692
$ echo $?
0

将构建阶段添加到 Xcode

让我们将 pbxproj_structure_check.rb 与您的项目集成,使其成为您项目对齐的捍卫者:)

首先 - 将 pbxproj_structure_check.rb 复制到您的项目根目录。

readme_img4.png

在项目导航器中选择您的项目,选择您的应用目标并选择 构建阶段 选项卡。

readme_img5.png

从菜单栏选择 编辑添加构建阶段添加运行脚本构建阶段

readme_img6.png

运行脚本 已添加,将其移动到上方,使其位于 目标依赖关系 下方。将 pbxproj_structure_check.rb 调用作为脚本

ruby pbxproj_structure_check.rb ${PROJECT_NAME}.xcodeproj/project.pbxproj

然后您可以在上述调用末尾指定要忽略的 ID(例如 'Frameworks'、'Products' 等)

readme_img7.png

如果脚本在构建期间检测到任何错位对象,则报告错误。

readme_img7.png

我很感激任何建议!