use*_*607 5 ruby parsing json pbxproj
我正在制作一个用ruby自动修改iOS项目的脚本.添加一些文件后,我需要修改project.pbxproj文件以保存项目中的更改.
我找到了一个解析pbxproj文件到json的方法:
json = JSON.parse(`plutil -convert json -o - "#{filename}"`)
Run Code Online (Sandbox Code Playgroud)
但是在修改了json之后,我想恢复进程以保存pbxproj格式的更改.有人知道某种方法吗?
似乎没有办法直接将 JSON 转换回 pbxproj 文件格式,但 Xcode 会将xml1格式化数据读取为有效的项目文件。
受到 Library to read/write pbxproj/xcodeproj files 的公认答案的启发吗?,我决定尝试使用项目转换后的 JSON 来运行 Xcode。Xcode 给我一个错误,说该项目无效。当我使用 将 JSON 转换为 XML 时plutil,Xcode 可以很好地读取它。当我观察文件内容时,我发现当 Xcode 加载它时它仍保留在 XML 中,但是当我更改 Xcode 中的任何值时,它会使用 pbxproj 格式重写文件。它似乎重新排列了框架和库的顺序,但这可能是因为我正在处理的原始 pbxproj 是由 Unity3D 生成的。
以下是如何自动转换、操作和随后使用 pbxproj 文件的粗略方法:
#!/bin/sh
plutil -convert json -r -o project.json -- project.pbxproj
ruby my_script.rb < project.json > project-modified.json
plutil -convert xml1 -o project-modified.xml -- project-modified.json
cp project-modified.xml project.pbxproj
Run Code Online (Sandbox Code Playgroud)
我不知道是否有一种简单的自动化方法可以让 Xcode 将修改后的文件恢复为原始格式,但在文件为 XML 格式时调用xcodebuildor应该没问题。xcrun
| 归档时间: |
|
| 查看次数: |
1117 次 |
| 最近记录: |