2

我正在尝试使用从 Python 脚本调用的mod_pbxproj.py修改 Unity3D 生成的 Xcode 项目,该脚本由PostProcessBuild属性触发。由于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 个更改。无论如何,它似乎到目前为止工作。

但是:修补一个众所周知的软件感觉很奇怪,我无法相信使用标准 mod_pbxproj.py在buildSettings树的根目录中添加(或修改)选项是不可能的。

如何做到这一点?

编辑: 的 mod_pbxproj 分支

4

1 回答 1

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

于 2016-01-06T16:47:42.647 回答