Xcode / mod_pbxproj:如何设置ENABLE_BITCODE

时间:2015-10-05 17:34:42

标签: python xcode unity3d bitcode unity3d-editor

我正在尝试修改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

1 个答案:

答案 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