我正在尝试修改Unity3D生成的Xcode项目,其中mod_pbxproj.py从python脚本调用,该脚本由PostProcessBuild属性触发。由于New warnings in 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')
几乎按预期工作。我在pbxproj文件中有5个条目,而不是我在Xcode中手动设置选项时注意到的2个更改。无论如何它到目前为止似乎都有效。
但是:修补一个众所周知的软件感觉很奇怪,我无法相信在 buildSettings的根目录中添加(或修改)一个选项是不可能的树使用标准mod_pbxproj.py。
如何实现这一目标?
编辑: My fork mod_pbxproj
答案 0 :(得分:0)
只要您有最新的mod_pbxproj.py
,这样就可以了:
project.add_flags({'ENABLE_BITCODE':'NO'})
您可以从此处获取mod_pbxproj.py:https://github.com/kronenthaler/mod-pbxproj/blob/master/mod_pbxproj/mod_pbxproj.py