No parece haber una forma de convertir directamente el JSON al formato de archivo pbxproj, pero Xcode leerá xml1
datos formateados como un archivo de proyecto válido.
Inspirado por la respuesta aceptada a Library to read/write pbxproj/xcodeproj files?, decidí intentar ejecutar con Xcode convertida JSON del proyecto. Xcode me dio un error al decir que el proyecto no era válido. Cuando convertí el JSON a XML usando plutil
, Xcode lo leyó muy bien. Cuando observé el contenido del archivo, vi que se quedó en XML cuando Xcode lo cargó, pero en el momento en que cambié cualquier valor en Xcode, reescribí el archivo usando el formato pbxproj. Parecía reordenar el orden de los marcos y las bibliotecas, pero eso puede deberse a que el pbxproj original con el que estaba trabajando fue generado por Unity3D.
Esta es una receta aproximada de cómo convertir de forma automática, manipular, y posteriormente utilizar el archivo 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
No sé si hay una manera más fácil-automatible tener Xcode llevar el modificado vuelva a su formato original, pero debería estar bien invocar xcodebuild
o xcrun
mientras el archivo está en formato XML.
También descubrí que 'plutil' es exigente con el fin de' '-convert' y -o'. Lanzará un error si coloca '-o' primero. – amacleod