5

RubyでiOSプロジェクトを自動修正するスクリプトを作っています。いくつかのファイルを追加した後、project.pbxproj ファイルを変更してプロジェクトの変更を保存する必要があります。

pbxproj ファイルを json に解析する方法を見つけました。

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

しかし、json を変更した後、変更を pbxproj 形式で保存するプロセスを元に戻したいと思います。誰かがそれを行う方法を知っていますか?

4

1 に答える 1

1

JSON を pbxproj ファイル形式に直接変換する方法はないようですが、Xcode はxml1フォーマットされたデータを有効なプロジェクト ファイルとして読み取ります。

pbxproj/xcodeproj ファイルを読み書きするライブラリへの受け入れられた回答に触発されましたか? 、プロジェクトの変換された JSON で Xcode を実行してみることにしました。Xcode から、プロジェクトが無効であるというエラーが表示されました。を使用して JSON を XML に変換するとplutil、Xcode はそれを問題なく読み取りました。ファイルの内容を観察すると、Xcode がロードしたときに XML のままでしたが、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 で変更されたファイルを元の形式に戻す簡単に自動化できる方法があるかどうかはわかりませんが、ファイルが XML 形式である間に呼び出してxcodebuildも問題ないはずです。xcrun

于 2014-02-19T20:14:13.463 に答える