python 脚本实现自动配置iOS工程证书文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 脚本实现自动配置iOS工程证书文件相关的知识,希望对你有一定的参考价值。
参考技术A 在实现iOS项目的自动打包工程中,我们需要配置好工程的证书文件信息,为了能够自动的根据bundle id来设置不同的profile文件,我们可以通过脚本文件来修改工程的projext.pbxproj文件帮助我们进行自动设置。1. Project.pbxproj
Xcode项目中的xxx.xcodeproj其实是一个文件夹,右键单击xxx.xcodeproj,显示包内容:
Project.pbxproj的解析
关于这个配置文件的结构,请参考 project.pbxproj,最熟悉的”陌生人 (http://www.olinone.com/?p=215),解析该文件可以使用现有的解析工具mod-pbxproj,该工具是一个python的脚本。其github地址为: https://github.com/kronenthaler/mod-pbxproj 。
为了修改不同taget的profile,我们需要知道这些配置在文件中的具体位置,不难发现:
我们的目标是为不同的bundle id设置不同的profile,所以只需要找到不同target的XCBuildConfiguration,修改其中PROVISIONING_PROFILE的值即可。通过分析project.pbxproj文件结构,你会发现其找到这些target的buildSettings的路径如下:
rootObject=> PBXNativeTarget=> XCConfigurationList=> XCBuildConfiguration。
XCBuildConfiguration会有Debug和Release两个版本,这里我们以修改Release版本的为例进行说明。
2. Python脚本修改profile
需要在工程目录下配置如下脚本文件,通过从json文件中读取配置信息,然后根据不同的bundle id来设置不同的profile文件和其他字段信息。其中xcode_configurator_profile.py为修改profile的脚本文件,profile.json为配置的证书信息。demo如下图所示:
首先在profile.json文件中配置好bundle id和对应的profile文件,如下如所示:
然后在工程目录下执行xcode_configurator_profile.py:
检查profile修改结果:
如果设置了以后有任何问题, 你可以在对应的xxx.xcodeproject下找到对应的备份。
源码:自己用Python写的iOS项目自动打包脚本
http://www.cocoachina.com/ios/20160307/15501.html
什么?又要测试包!
做iOS开发几年了,每天除了码代码,改Bug之外,最让我烦恼的莫过于测试的妹子跑过来:“刚才的Bug都改完了吧,再打个包吧”。然而对于这个自己应尽的义务我已经烦透了,先不说要配置各种参数什么的,光是用xcode打包时候clean代码,验证证书就让我焦头烂额,时不时还要翻个墙甚至要手机开个热点才能打包成功。每次打包顺利的话,也要7~8分钟,每天n个包,想早点完成任务准时下班想都别想了。于是做了个打包的脚本(然后欢乐的像狗了)。好了,废话不多说,下面来介绍一下这个脚本,希望能给你带来方便。
脚本的地址: https://github.com/hades0918/ipapy
优点:
-
自动化打包,一句指令解决,节省大量打包时间
-
省去证书验证的无奈等待
-
自动上传到fir.im分发平台 //不用再发qq给测试人员了,如果你觉得不安全的话,fir.im是可以设置密码的
-
自动发送邮件给测试人员
-
有帮助指令,上手简单
准备工作:(工欲善其事必先利其器)
-
安装xcode
-
安装 fir.im的指令,见:https://github.com/FIRHQ/fir-cli/blob/master/README.md
-
安装python2.7,这个是mac系统自带的,如果不是2.7的话,可以升级一下
参数配置:(如果指令没安装好的话,goto 准备工作)
配置相关信息 python ipa.py -c 或者 python ipa.py --config ,后面需要修改的话也用这个指令
targetName:工程的名称,如:我的工程是BossZP.xcodeproj,所以我的targetName就是BossZP
gitPath:工程的git地址,如:我的git地址是http://git.xxx.org/xxxxxx/xxxxxx.git
certificateName:证书名称,如:我的是iPhone Developer: YANG YU (7XC3UZCAZM)
firToken:在fir.im上创建应用后的token,如:我的是2ac8uf3j9z3ur98d7gxxxxxxxx
下面的是邮件设置:
emailFromUser:我的邮箱,如:[email protected]
emailToUser:测试人员的邮箱,如:[email protected]
emailPassword:我的邮箱的密码
emailHost:邮箱的host,可以去邮箱网页查看,如:我的是smtp.163.com
配置完信息,可以通过 --help 或者 -h 查看基本的使用方法
-h, --help 查看帮助信息
-c, --config 配置基本信息
-s, --showTags 显示git上所有的版本
-t TAG, --tag=TAG 设置打包时的版本
● 如果你不喜欢我把放在Documents下面,你可以把脚本的第28行改成你喜欢的目录,如:target_path = "/Users/yuyang/clone/BossZP"
你可以这样使用:
python ipa.py -h
python ipa.py --help
python ipa.py -c
python ipa.py --config
python ipa.py -s
python ipa.py --showTags
python ipa.py -t v3.0 //打包时候这样使用,后面的v3.0参数可以使用python ipa.py -s获取
python ipa.py -tag v3.0 //打包时候这样使用,后面的v3.0参数可以使用python ipa.py -s获取
python ipa.py (tag不写,默认是master)
最后自曝一下脚本的缺点吧,这个脚本只适合.xcodeproj的工程,workspace的还不支持,后续会慢慢改进。如果这个脚本能给你带来方便,顺手给个star吧,给我把它做的更好来点动力。
demo下载:
以上是关于python 脚本实现自动配置iOS工程证书文件的主要内容,如果未能解决你的问题,请参考以下文章
[python]RobotFramework自定义库实现UI自动化
Gitlab-CI自动化打包之Runner配置和CI脚本说明
使用本脚本可以自动批量完成中间节点环境的部署工作,包括:Nginx编译安装添加程序管理脚本设置开机启动反向代理配置证书分发添加iptables规则等