前言
这段时间刚刚学习了一段时间的Python,加上自己是做iOS开发的,就想着用Python来做一个自动化打包,可以自动完成打包,上传到蒲公英,并且发送邮箱给测试人员.
一是可以减少打包功夫,二来可以练练手,结合自己的工作来输出一点东西.废话不多说,直接上代码…
原理
就是使用xcodebuild来控制Xcode进行一系列的操作,从而完成打包的操作.
为什么要做这个?
在我们日常开发的时候,特别是在内部测试的时间,有可能需要频繁的打包,打包的工作比较繁琐,需要等待点击下一步,选择之类,影响了开发的节奏.(开玩笑,我能有啥节奏…), 为什么不能直接运行,然后完成所有的操作呢?
思路:
从网上查找了一些关于xcodebuild来打包的资料,从而得到:
- 找到对应的项目
- clean项目
- archive项目
- export IPA
- 上传蒲公英
- 发送邮件
- 收工
思路有了,动手起来.
运行环境
Python, Xcode
这些需要大家直接去搭建好环境…
准备工作
- 下载安装pycharm(这只是我开发Python的工具而已,大家可以根据自己喜欢的来选择)
- 注册并认证蒲公英(不认证的话,是不能上传的)
- 邮箱开启POP3/SMTP服务(我使用的是QQ邮箱),记录下16位授权码
- 一个ExportOptions.plist文件, 这个下面会解释为什么需要还有怎么生成!
- 一份iOS项目代码→_→
完整代码
1 | #!/usr/bin/env python3 |
关于ExportOptions.plist文件
因为 Xcode 9+ 默认不允许访问钥匙串的内容,必须要设置 allowProvisioningUpdates 才会允许,Python的Xcode插件目前无法支持此项完成打包流程。
解决步骤如下:
1、手动Xcode10打包,导出ExportOptions.plist文件;
2、编辑ExportOptions.plist文件,配置 provisioningProfiles 对应填入Bundle identifier及证书关联配置文件(打包时自动匹配或手动填入证书,provisioningProfiles需配置的必填信息可自动生成);
3、提供ExportOptions.plist文件路径供Python脚本调用(详请参看Python脚本代码)。
具体的内容
1 | <?xml version="1.0" encoding="UTF-8"?> |
分析
1 | xcodebuild archive -workspace XXX.xcworkspace -scheme XXX -configuration Release -archivePath XXX CONFIGURATION_BUILD_DIR ./dir ODE_SIGN_IDENTITY=证书 PROVISIONING_PROFILE=描述文件UUID |
文件 | 说明 |
---|---|
-workspace XXX.xcworkspace | XXX.xcworkspace需要编译工程的工作空间名称,如果工程不是.xcworkspace的,可以不需要-workspace XXX.xcworkspace这段话 |
-scheme XXX | XXX是工程名称,-scheme XXX是指定构建工程的名称 |
-configuration Release | 填入打包的方式是Debug或Release,就跟在Xcode中编译前需要在Edit scheme的Build configuration中选择打出来的包是Debug还是Release包一样,-configuration就是配置编译的Build configuration |
-archivePath XXX | 配置生成.xcarchive的路径, |
ODE_SIGN_IDENTITY=证书 | 配置打包的指定证书,如果该工程的Xcode已经配置好了证书,那么不加入这段话也可以,打包出来的证书就是Xcode中配置好的。 |
PROVISIONING_PROFILE=描述文件UUID | 配置打包的描述文件,同上,Xcode已经配置好了就不用在填入这段话了 |
CONFIGURATION_BUILD_DIR | 配置编译文件的输出路径,如果需要用到.xcarchive文件内部的dSYM等文件,可以使用改字段指定输出路径。 |
问题一
配置一下compileBicode=NO即可
感谢树下敲代码的超人