加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

iphone – Xcode目标阶段Python脚本

发布时间:2020-12-17 00:51:33 所属栏目:Python 来源:网络整理
导读:我正在尝试将Python脚本添加到我的项目中,以直接从Git获取构建和营销编号. 我创建了一个新的目标阶段,并运行脚本,如下所述: http://yeahrightkeller.com/2008/10/19/xcode-run-script-build-phase-tip/ 我编写了一个Python脚本,用于解析程序Info.plist from

我正在尝试将Python脚本添加到我的项目中,以直接从Git获取构建和营销编号.

我创建了一个新的目标阶段,并运行脚本,如下所述:
http://yeahrightkeller.com/2008/10/19/xcode-run-script-build-phase-tip/

我编写了一个Python脚本,用于解析程序Info.plist

from Foundation import NSMutableDictionary

但是,编译时脚本失败并向构建结果报告以下错误:

Running a custom build phase script: gitversion.py  
Traceback (most recent call last):  
File "/Users/jorge/Documents/Programming iPod/Pruebas/RowOrder/Scripts/gitversion.py",line 9,in 

很明显,distutils以某种方式硬编码它是为版本10.6(Snow Leopard,我正在使用的那个)编译的,但该项目将MacOSX部署目标设置为10.5.

如果我尝试将项目中的此变量设置为10.6,那么我得到:

ld: library not found for -lcrt1.10.6.o

关于如何解决这个问题的任何想法?提前致谢.

最佳答案
我有同样的问题,我想保留python版本,因为通过NSMutableDictionary处理plist比在Info.plist上使用正则表达要好得多.

基于Maxence的答案,解决方案是将python代码从Run Script构建阶段剥离到gitversion.py文件中:

#!/usr/bin/env python
import os
from Foundation import NSMutableDictionary
from subprocess import Popen,PIPE

p = Popen(
        "/sw/bin/git rev-parse --short HEAD",stdout=PIPE,close_fds=True,shell=True)

version = p.stdout.read()
print version
info = os.environ['INFOPLIST_FILE']
print info
plist = NSMutableDictionary.dictionaryWithContentsOfFile_(info)
print plist
plist['revision'] = version[:-1]
plist.writeToFile_atomically_(info,1)

然后用shell脚本替换原始的Run Script:

env MACOSX_DEPLOYMENT_TARGET=10.6 python gitversion.py

请务必记住将Shell设置更改为/ bin / sh.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读