PostProcessBuild属性によってトリガーされる Python スクリプトから呼び出されるmod_pbxproj.pyを使用して、Unity3D で生成された Xcode プロジェクトを変更しようとしています。iOS 9 の新しい警告 で説明されている問題のため、ENABLE_BITCODE = NOを設定する必要があります。
私は Python 初心者で、Xcode PBX の内部構造についてあまり知りません。私はいくつかの呼び出しを試しました
project.add_flags ('ENABLE_BITCODE=NO')
または配列、辞書などのバリアント。私が試したすべてのことは、仕事をしなかったか、システムログにエラーを投げました. 最後に、必要なことを行う mod_pbxproj.py のパッチになりました。
def add_other_buildsetting(self, flag, value):
build_configs = [b for b in self.objects.values() if b.get('isa') == 'XCBuildConfiguration']
for b in build_configs:
if b.add_other_buildsetting(flag, value):
self.modified = True
と
def add_other_buildsetting(self, flag, value):
modified = False
base = 'buildSettings'
key = flag
if not self.has_key(base):
self[base] = PBXDict()
self[base][key] = value
modified = True
return modified
現在、呼び出しproject.add_other_buildsetting ('ENABLE_BITCODE', 'NO')
はほぼ期待どおりに機能します。Xcode でオプションを手動で設定したときに気付いた 2 つの変更ではなく、pbxproj ファイルに 5 つのエントリがありました。とにかく、これまでのところうまくいくようです。
しかし、よく知られているソフトウェアにパッチを当てるのはかなり奇妙に感じられ、標準の mod_pbxproj.py を使用してbuildSettingsツリーのルートにオプションを追加 (または変更) できないとは信じられません。
これはどのように達成できますか?
編集: mod_pbxproj の私のフォーク