【发布时间】:2016-01-02 11:01:10
【问题描述】:
我正在尝试使用 mod_pbxproj.py 修改 Unity3D 生成的 Xcode 项目,该项目由 PostProcessBuild 属性触发的 python 脚本调用。由于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 的根目录中添加(或修改)选项 em> 树使用标准的 mod_pbxproj.py。
如何做到这一点?
编辑: My fork of mod_pbxproj
【问题讨论】:
-
我也想不通。感谢您的补丁,到目前为止似乎运行良好。
标签: python xcode unity3d bitcode unity3d-editor