库读/写pbxproj / xcodeproj文件?

有没有人知道一个库来读/写Xcode项目文件.xcodeproj / .pbxproj? 欢迎任何语言。

提前致谢。

Xcode项目的表面语法是“旧式plist”。 您可以使用该命令轻松将其转换为XML plist

plutil -convert xml1 -o - myproj.xcodeproj/project.pbxproj 

请注意,这不是“真正的XML”,而是以XML语法表示的Mac OS X plist结构; 它几乎完全由键值对字典和数组组成。 Xcode将读取XML表示,但在项目打开时将其转换回“旧式plist”。

plist中项目的结构和关系遵循项目的结构。 UUID用于交叉引用项目与其目标之间的项目,以及项目与项目包装器中的用户文件之间的项目。

‘isa’键标识每种对象。 PBXProject包含PBXFileReference,PBXGroup,PBXNativeTarget和PBXBuildConfiguration对象。

目标具有PBXBuildPhase对象,这些对象包含对文件引用的交叉引用; BuildConfigurationLists,用于存储目标的构建设置以及目标类型和名称等其他目标设置。

buildConfigurationLists交叉引用buildConfigurations,后者又包含buildSettings的字典。

我建议首先查看旧式plist文本,因为它更具可读性,实际上有内联注释来告诉你什么是什么。 然后,您可以使用XML工具根据自己的喜好编辑或编写项目文件。

我最终创建了一个,它在github上托管:

https://github.com/jasperblues/XcodeEditor

允许列出标题,文件,添加源文件,将源文件设置为目标成员,添加图像,创建组等。

它的工作原理是操作project.pbxproj文件的内容。 用于:

  • 减轻痛苦:移动应用程序的自动function测试。 (编辑:现在是Xamarin工具的一部分)。
  • Level Helper:用于在iOS和Android上开发2D游戏的RAD框架。
  • TextMate的
  • Apportable

我刚刚发现了这个: https : //github.com/alunny/node-xcode我还没有使用它,但对于Node.js开发人员看起来很有希望。

试试这个: https : //github.com/sap-production/XcodeProjectJavaAPI

它可以读取和写入任何Property List文件,并包含一个语义模型来读取和操作Xcode Project文件。 语义模型处于早期阶段,但可以很容易地扩展。

它也在SAP的Xcode Maven插件中大量使用,该插件将于本月发布。

CocoaPods现在有一个ruby库来操作pbxproj文件:

https://github.com/CocoaPods/Xcodeproj

除了被CocoaPods使用之外, fastlane , synx , slather也使用它 ,毫无疑问还有更多。

这样做有一个很好的Python包。 文档不是很好,但源代码非常有条理,你可以找到你需要的东西。

https://github.com/kronenthaler/mod-pbxproj

对于PHP(轻松移植到您需要的任何语言),非常基本的只写:

 function modifyPlistXCodeProject($file_path,$app_name,$bundle_identifier,$latest_version,$bundle_version) { $data = file_get_contents($file_path); $changes = Array(); $changes['PRODUCT_BUNDLE_IDENTIFIER'] = $bundle_identifier; foreach ($changes as $key => $value){ $data = oldStylePlistReplace($data,$key,$value); } file_put_contents($file_path, $data); } function oldStylePlistReplace($data,$key,$value){ $e = explode($key,$data); for ($i=1;$i