Nie ma sposobu na bezpośrednią konwersję JSON z powrotem do formatu pliku pbxproj, ale Xcode odczyta sformatowane dane w postaci xml1
jako prawidłowy plik projektu.
Zainspirowany zaakceptowaną odpowiedzią na Library to read/write pbxproj/xcodeproj files?, postanowiłem spróbować uruchomić Xcode z konwertowanym JSON projektu. Xcode dał mi błąd, mówiąc, że projekt był nieważny. Kiedy przekonwertowałem JSON na XML używając plutil
, Xcode odczyta go w porządku. Kiedy obserwowałem zawartość pliku, zobaczyłem, że pozostało ono w formacie XML po wczytaniu go przez Xcode, ale w chwili, gdy zmieniłem jakąkolwiek wartość w Xcode, przepisałem ten plik w formacie pbxproj. Wydawało się, że zmieniło kolejność frameworków i bibliotek, ale może tak być dlatego, że oryginalny pbxproj, z którym miałem do czynienia, został wygenerowany przez Unity3D.
Oto przepis na szorstki jak automatycznie konwertować, manipulować, a następnie użyć pliku 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
nie wiem, czy jest łatwo automatible sposób mieć Xcode Doprowadzić zmodyfikowana powrócić do oryginalnego formatu, ale powinno być w porządku wywołanie xcodebuild
lub xcrun
, gdy plik jest w formacie XML.
Odkryłem także, że 'plutil' jest wybredny w stosunku do' -convert' i '-o'. Spowoduje to zgłoszenie błędu, jeśli najpierw wprowadzisz "-o". – amacleod