Ruby изменить проект.pbxproj

Я делаю сценарий, который автоматически изменяет проект iOS с помощью ruby. После добавления некоторых файлов мне нужно изменить файл project.pbxproj, чтобы сохранить изменения в проекте.

Я нашел метод для анализа файла pbxproj в json:

json = JSON.parse(`plutil -convert json -o - "#{filename}"`)

Но после изменения json я хотел бы вернуться к процессу, чтобы сохранить изменения в формате pbxproj. Кто-нибудь знает, как это сделать?

1 ответ

Кажется, что нет способа напрямую преобразовать JSON обратно в формат файла pbxproj, но Xcode будет читать xml1 отформатированные данные в качестве допустимого файла проекта.

Вдохновленный принятым ответом на Библиотеку для чтения / записи файлов pbxproj/xcodeproj? Я решил попробовать запустить Xcode с преобразованным JSON проекта. Xcode дал мне сообщение о том, что проект недействителен. Когда я преобразовал JSON в XML, используя plutilXcode прочитал это просто отлично. Когда я посмотрел содержимое файла, я увидел, что он остался в XML, когда XCode загрузил его, но в тот момент, когда я изменил любое значение в 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

Я не знаю, есть ли легко-автоматизируемый способ заставить XCode вернуть измененный файл в его первоначальный формат, но это должно быть хорошо, чтобы вызвать xcodebuild или же xcrun пока файл в формате XML.

Другие вопросы по тегам