iOS Jenkins 自动化打包构建
前言
在测试app项目过程中,通常都是需要开发打测试包给到测试,但是无论是iOS还是Android的打包过程都是相当漫长的,频繁的回归测试需要频繁的打包,对于开发同学影响还是蛮大的。因此在这种情况下,开发通常都会搭建一个简单的自动化打包平台(Jenkins),自动化构建打包或者上传到蒲公英,firm等分发平台。作为测试也需要了解相关的知识,因为这些工作也有可能测试来做或推动开发去做相关的工作,用以优化提高开发测试效率。
涉及技术点:
- Jenkins的搭建配置,任务构建
- iOS开发环境配置
- iOS打包(证书配置)
- iOS命令行打包xcodebuild的使用
xcode打包介绍
准备工作
如果不打包,直接在测试机上跑app是不需要证书和描述文件的。只要有Apple ID就是可以的,它可以自动生成描述文件,然后让app运行到测试机上。
如果是需要打包分发的话,就是必须要有证书和描述文件。
证书有两种,一种是开发证书,一种是上线证书,当然测试只需要拿到开发证书就可以了,大部分情况下上线工作是不需要测试来做的(涉及到一些开发者账号等东西)。
如果我们需要本地打包的话那么就需要跟开发要两样东西:
- 开发证书
- 描述文件
开发证书拿到之后双击打开就好,可以在钥匙串中看到安装好的证书。
描述文件需要单独保存一下,一些配置可能用到,Xcode配置中需要导入。
代码权限,跟开发拿到代码权限,git clone到本地。
Xcode使用
Xcode是iOS开发IDE,使用的时候需要跟开发同步使用的版本,有些开发是一直用最新版的,有的可能用的是老版本,会有问题。
检查本地环境及代码
使用Xcode打开clone到本地的代码,如果版本什么都对应的话,build应该是没有问题的。
command+b build项目,查看是否有错误。
或者导航栏:product → Build

如果没什么问题,可以编译build成功就OK了。
模拟器运行
如果只是模拟器运行是不需要配置证书描述文件的,选择模拟器类型,直接运行就好了。

真机运行
真机运行有两种方式:
- 一种是不需要证书描述文件但是需要一个appleID账号密码
- 一种是需要证书描述文件导出.ipa包
第一种方式的话只能手机通过USB链接到电脑上,然后运行项目在手机上安装app
第二种方式的话是可以导出ipa文件传输到手机上安装
第一种方式:
可以通过导航栏Xcode → Preferences → Accounts 添加apple账号

在项目中配置(target→ sanjieke),有个Automatically manage signing,勾选了后选择apple账号就会自动生成配置描述文件

如果有错误看下错误说明,然后调整下配置,一般的错误就是
buddle id的问题
iOS版本的问题
调整下就没什么问题了。
第二种方式,真机打包
如果是导出包安装测试的话,还需要在开发者中心把测试机的udid加入到里面,这个给到开发就好了
安装好了证书,拿到了描述文件,在项目中配置
还是上图红框的内容,不要点击Automatically manage signing了,点击provisioning profile,选择import profile,将描述文件导入就可以了。
然后在模拟器那个位置选择Generic iOS Device
导航栏 Product → Archive
按照提示一步步选择就好了,最后会在你选择的路径下生成需要的ipa 包。
xcodebuild命令介绍
如果不想手动操作打包,还可以使用命令打包
xcodebuild基础命令
- xcodebuild -usage 查看xcodebuild用法
- xcodebuild -showsdks 查看安装的sdk
- xcodebuild -list 查看项目中的target(目标项目),configuration(打包环境debug,release)和schemes(项目名), 这三个参数也是后续打包需要用到的
- xcodebuild 构建生成archive文件 archive -archivePath <archivePath> -project <projectName> -scheme <schemeName> #从-list命令中获取 -configuration < Debug|Release> -sdk <sdkName> #sdkName可从showsdks命令中获取
- xcodebuild 将archive文件导出为ipa文件 -exportArchive -archivePath <xcarchivepath> -exportPath <destinationpath> -exportOptionsPlist <plistpath>#这个plist文件可以通过打一次ipa包里面去获取,然后根据需求修改
xcodebuild命令实际应用
从基础命令来看用的最多的就是4和5,实际上命令行导出ipa文件有两种方式
- 一种方式是先将项目构建成.app文件,通过xcodebuild build, 然后使用xcun 将app文件导出生成ipa,但是目前新版本的不支持这种方式了,一般用2
- 另外一种方式就是先构建生成.xcarchive文件, 然后导出生成.ipa文件
注意一点的是,plist文件我们可以通过用Xcode打包一次获得,然后根据需要修改,也可以参数化,内容如下:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>compileBitcode</key> <true/> <key>destination</key> <string>export</string> <key>method</key> <string>development</string> <key>provisioningProfiles</key> <dict> <key>com.sanjieke.app</key> <string>com.sanjieke.appDevelop</string> </dict> <key>signingCertificate</key> <string>iPhone Developer</string> <key>signingStyle</key> <string>manual</string> <key>stripSwiftSymbols</key> <true/> <key>teamID</key> <string>V5LUS4979S</string> <key>thinning</key> <string><none></string> </dict> </plist>
xcodebuild打包脚本
知道了如何用命令行进行打包后,我们可以自己写个简单的脚本来进行打包,然后集成到Jenkins的话直接执行脚本,不使用Jenkins提供的Xcode插件,更加方便。
iOS Jenkins 自动化打包构建的更多相关文章
- Android Jenkins 自动化打包构建
前言 在测试app项目过程中,通常都是需要开发打测试包给到测试,但是无论是iOS还是Android的打包过程都是相当漫长的,频繁的回归测试需要频繁的打包,对于开发同学影响还是蛮大的.因此在这种情况下, ...
- gitlab+jenkins自动化打包APK
前置条件: 环境搭建,jenkins需要的插件看这里: gitlab+jenkins自动化打包IOS 配置思路: step1: 搭建sdk,gradle运行环境,参照: CentOS7下安装安装and ...
- gitlab+jenkins自动化打包IOS-jenkins配置
实现的效果如图: 构建界面: 完成效果: 功能说明: 根据选择的代码分支,执行构建打包 构建成功后根据ipa/apk生成二维码,并可在历史构建列表中展示各个版本的二维码,通过手机扫描二维码可直接安装 ...
- iOS自动化探索(九)使用Jenkins自动化打包并发布iOS App
继前一篇: Mac环境下安装Jenkins Jenkins安装好后, 我们试着创建一个iOS自动打包并发布的任务 iOS App构建必须在MAC上面使用xcode进行,所以我们要安装下xcode集成插 ...
- 搭建Jenkins自动化持续构建和部署系统
什么是Jenkins? Jenkins是一个持续集成和持续交付的java应用程序,可以处理任何类型的构建或持续集成.集成Jenkins可以用于一些测试和部署技术.简单得说就是一款自动化构建测试和部署的 ...
- Jenkins自动化打包配置
具体流程不细讲,教程很多 * 环境配置: * xmapp安装 * Jenkins.war丢到Tomcat目录中,配置Jenkins * 宿主机安装jdk,gradle,配置环境变量(在Jenkins的 ...
- jenkins自动化打包部署
请参考: http://m.blog.csdn.net/article/details?id=50518959 1.启动 jenkins.war ,打开首页 192.168.158.129:8080 ...
- Jenkins自动化打包(Gitlab)并上传蒲公英
整个过程详见:https://www.jianshu.com/p/91e8f571fc2b 以下是遇到的问题及解决过程 一.安装homebrew(网速很慢很慢……被墙了) /usr/bin/ruby ...
- jenkins自动化打包报错:gradle: 未找到命令
shell脚本如下: cd /home/wangju/gitProject/Automation echo "************************开始清理环境********** ...
随机推荐
- (四)Activiti之流程定义部署之ZIP方式和流程定义查询
一.流程定义部署之ZIP方式 上一章节我们使用classpath的方式加载流程定义文件,这里我们使用ZIP的方式. 1.1 用activiti插件生成bpmn和png图片之后,压缩到一个zip格式的压 ...
- Spring Boot 项目集成 Alibaba Druid
Druid 是一个非常好用的数据库连接池,但是他的好并不止体现在作为一个连接池加快数据访问性能上和连接管理上,他带有一个强大的监控工具:Druid Monitor.不仅可以监控数据源和慢查询,还可以监 ...
- solr 配置中文分析器/定义业务域/配置DataImport功能(测试用)
一.配置中文分析器 使用IKAnalyzer 配置方法: 1)把IK的jar包添加到solr工程中/WEB-INF/lib目录下 2)把IK的配置文件扩展词典, ...
- 在sublime3中运行python文件
1.首先下载Sublime和Python,安装Python环境 注意:如果不想动手亲自配置Python环境安装的时候环境变量,请在安装的界面给Add Python 3.5 To Path前面打上对号. ...
- taglist and nerdtree
函数:function! s:Tlist_Window_Exit_Only_Window()中的winbunr(2)改为winbunr(3),即只剩2个窗口时关闭,考虑到2个窗口肯定是同时存在,所以这 ...
- 为什么说Java程序员必须掌握 Spring Boot ?
Spring Boot 2.0 的推出又激起了一阵学习 Spring Boot 热,那么, Spring Boot 诞生的背景是什么?Spring 企业又是基于什么样的考虑创建 Spring Boot ...
- CentOS7安装CDH 第三章:CDH中的问题和解决方法
相关文章链接 CentOS7安装CDH 第一章:CentOS7系统安装 CentOS7安装CDH 第二章:CentOS7各个软件安装和启动 CentOS7安装CDH 第三章:CDH中的问题和解决方法 ...
- linux 基础11-例行性命令
1. 什么是例行性命令 1.1 linux工作排程的种类: linux例行性命令主要有两种: at:仅执行一次就从linux的任务中取消 cron:将持续例行性的工作下去 1.2 系统常见的例行性命令 ...
- Kinect for Windows SDK开发入门(七):骨骼追踪基础 下
http://www.cnblogs.com/yangecnu/archive/2012/04/09/KinectSDK_Skeleton_Tracking_Part2.html 上一篇文章用在UI界 ...
- TensorFlow utils
1. def model_stats(): print("============================================================" ...