库读/写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也使用它 ,毫无疑问还有更多。
您还可以考虑使用PlistBuddy命令:
这样做有一个很好的Python包。 文档不是很好,但源代码非常有条理,你可以找到你需要的东西。
对于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