Có vẻ như không có cách nào để chuyển đổi trực tiếp JSON trở lại định dạng tệp pbxproj, nhưng Xcode sẽ đọc dữ liệu được định dạng xml1
dưới dạng tệp dự án hợp lệ.
Lấy cảm hứng từ câu trả lời được chấp nhận cho Library to read/write pbxproj/xcodeproj files?, tôi quyết định thử chạy Xcode bằng JSON được chuyển đổi của dự án. Xcode đã cho tôi một lỗi nói rằng dự án không hợp lệ. Khi tôi chuyển đổi JSON sang XML bằng cách sử dụng plutil
, Xcode đã đọc nó một cách tốt đẹp. Khi tôi quan sát các nội dung tập tin, tôi thấy rằng nó ở lại trong XML khi Xcode tải nó, nhưng thời điểm tôi thay đổi bất kỳ giá trị trong Xcode, nó viết lại các tập tin bằng cách sử dụng định dạng pbxproj. Nó dường như sắp xếp thứ tự các khung công tác và thư viện, nhưng điều đó có thể là do pbxproj ban đầu mà tôi xử lý được tạo ra bởi Unity3D.
Đây là một công thức nấu ăn thô cho làm thế nào để tự động chuyển đổi, thao tác, và sau đó sử dụng các tập tin 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
Tôi không biết nếu có một cách dễ dàng-automatible có Xcode mang sửa đổi tập tin trở lại định dạng ban đầu của nó, nhưng nó sẽ là tốt để gọi xcodebuild
hoặc xcrun
trong khi tệp ở định dạng XML.
Tôi cũng phát hiện ra rằng 'plutil' là cầu kỳ về thứ tự của' -convert' và '-o'. Nó sẽ ném một lỗi nếu bạn đặt '-o' trước. – amacleod