Non sembra essere un modo per convertire direttamente il JSON nel formato di file pbxproj, ma Xcode leggerà i dati in formato xml1
come file di progetto valido.
Ispirato dalla risposta accettata allo Library to read/write pbxproj/xcodeproj files?, ho deciso di provare a eseguire Xcode con il JSON convertito del progetto. Xcode mi ha dato un errore dicendo che il progetto non era valido. Quando ho convertito il JSON in XML usando plutil
, Xcode lo leggeva bene. Quando ho osservato il contenuto del file, ho visto che è rimasto in XML quando Xcode lo ha caricato, ma nel momento in cui ho cambiato qualsiasi valore in Xcode, ha riscritto il file usando il formato pbxproj. Sembrava riorganizzare l'ordine dei framework e delle librerie, ma ciò potrebbe essere dovuto al fatto che l'originale pbxproj con cui avevo a che fare era generato da Unity3D.
Ecco una ricetta di massima per come convertire automaticamente, manipolare, e successivamente utilizzare il file 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
Non so se c'è un modo facile-automatible avere Xcode portare il modificata file di nuovo al suo formato originale, ma dovrebbe essere bene per invocare xcodebuild
o xcrun
mentre il file è in formato XML.
Ho anche scoperto che 'plutil' è schizzinoso sull'ordine di' -convert' e '-o'. Ci sarà un errore se si mette '-o' prima. – amacleod