自己动手设计一款iOS自动构建发布工具
2017-07-24 00:00
369 查看
摘要: 在iOS开发中,开发者经常会需要打各种各样的软件包。有些提交测试,有些提交appstore,还有些可能要提交第三方平台。一款全自动的打包发布工具可以帮助我们事半功倍的完成这些工作。
自己负责的功能模块开发完成后,将其合并到测试分支,然后打测试包给测试安装。测试发现bug,这时你可能正在开发分支上做其他的事情,但是你需要修改了bug,提交到测试分支,再次打测试包给测试人员使用。反反复复的切换分支,反反复复的构建打包将浪费你大量的时间,作为一名工程师,最不能容忍的便是在重复的事情上浪费时间。于是,你想,我可以自己动手写一个自动构建发布的小工具。
本篇博客就是基于上面的想法,给大家介绍编写一个简洁的自动化工具的具体步骤与核心要点。在编写本博客时,我也基于这样的想法开发了一款Mac上的iOS自动构建,打包,发布工具,并且将代码开源在Github,如果有兴趣,你也可以作为参考。
1.它应该支持多个项目同时进行自动化构建。
2.应该可以方便的新增与删除项目。
3.它应该具备Git操作能力,自动选择合适的分支进行构建。
4.它需要调用Xcode命令来完成打包工作。
5.它具备发布到第三方平台的能力(例如蒲公英)。
6.它可以灵活的进行模式配置,Git模块,Xcode构建模块和发布模块可以自由组合。
7.它应该有一个输出窗口,可以让使用者获取构建的进度以及log日志。
8.它有记忆功能,会将配置信息保存到本地。
上面列出的功能点是这个自动化构建工具的一些基础功能,实现了这些功能,你的软件便可以正式的投入使用,但是它并不完善,你可以在自己规划的第二版,第三版中继续丰富功能,优化体验。
①拉取项目所有分支:git branch
②进行分支的切换:git checkout [分支名]
③从远端拉取代码:git pull
①清理工程:xcodebuild clean -[工程类型] [工程地址] -scheme [scheme名称] CONFIGURATION=[DEBUG模式]
②导出archive文件:xcodebuild archive -[工程类型] [工程地址] -scheme [scheme名称] -archivePath [导出路径] CONFIGURATION=[DEBUG模式]
③导出IPA安装包:xcodebuild -exportArchive -archivePath [archive文件路径] -exportPath [导出路径] exportOptionsPlist [配置plist文件]
![](https://static.oschina.net/uploads/space/2017/0724/144737_29Rh_2340880.png)
添加工程界面我采用的是弹出窗口的模式,正如上面分析,添加工程的实质就是拿到Xcode项目文件的地址,界面效果如下:
![](https://static.oschina.net/uploads/space/2017/0724/144911_Fce3_2340880.png)
项目详情界面略微复杂,其中需要配置编译模块,Git模块和发布模块,界面如下:
![](https://static.oschina.net/uploads/space/2017/0724/145300_7qKC_2340880.png)
![](https://static.oschina.net/uploads/space/2017/0724/145321_v8WU_2340880.png)
![](https://static.oschina.net/uploads/space/2017/0724/145338_ONFv_2340880.png)
关于逻辑与功能的编写,代码较多,需要的朋友可以自动查看源码。
软件下载地址:http://zyhshao.github.io/AutoBuild/welcome.html。
github源码:https://github.com/ZYHshao/AutoBuild。 欢迎starO(∩_∩)O
欢迎指教 共同学习
自己动手设计一款iOS自动构建发布工具
一、引言
在iOS开发中,你可能经常会遇到这样的场景:自己负责的功能模块开发完成后,将其合并到测试分支,然后打测试包给测试安装。测试发现bug,这时你可能正在开发分支上做其他的事情,但是你需要修改了bug,提交到测试分支,再次打测试包给测试人员使用。反反复复的切换分支,反反复复的构建打包将浪费你大量的时间,作为一名工程师,最不能容忍的便是在重复的事情上浪费时间。于是,你想,我可以自己动手写一个自动构建发布的小工具。
本篇博客就是基于上面的想法,给大家介绍编写一个简洁的自动化工具的具体步骤与核心要点。在编写本博客时,我也基于这样的想法开发了一款Mac上的iOS自动构建,打包,发布工具,并且将代码开源在Github,如果有兴趣,你也可以作为参考。
二、需求分析
开发工具也是一种产品,在开始做一件产品之前,需求分析是十分重要的步骤。商业产品的需求者是用户,而开发工具的需求者就是你自己。首先,结合工作需要,一款自动化构建工具应该至少满足如下这些功能需求:1.它应该支持多个项目同时进行自动化构建。
2.应该可以方便的新增与删除项目。
3.它应该具备Git操作能力,自动选择合适的分支进行构建。
4.它需要调用Xcode命令来完成打包工作。
5.它具备发布到第三方平台的能力(例如蒲公英)。
6.它可以灵活的进行模式配置,Git模块,Xcode构建模块和发布模块可以自由组合。
7.它应该有一个输出窗口,可以让使用者获取构建的进度以及log日志。
8.它有记忆功能,会将配置信息保存到本地。
上面列出的功能点是这个自动化构建工具的一些基础功能,实现了这些功能,你的软件便可以正式的投入使用,但是它并不完善,你可以在自己规划的第二版,第三版中继续丰富功能,优化体验。
三、技术分析
明确了需求,你下一步需要考虑的便是实现这些需求所需要的技术。1.支持多个项目同时进行自动化构建。
在界面上,可以采用列表的方式进行已添加项目的展示。NSTableView是一个很好选择,其使用方便,结合xib文件来编写cell,其开发效率也十分高。关于进行多个项目的同时构建,可以采用多线程编程技术,在Objective-C中,NSOperationQueue可以方便的进行多线程任务管理,我们可以使用它来实现异步编程。2.新增与删除项目。
对于iOS工程的自动构建,新增和删除项目无非就是保存或删除xcode文件的路径,当然,你可以也需要一些附带的数据用于显示,例如项目名等。3.操作Git。
安装了Xcode工具,Git工具会被自动的安装。你可以直接在终端通过命令行来调用Git命令,你可以使用Foundation框架中的NSAppleScript类来在OS X平台软件中执行脚本命令,关于Git模块,你需要使用到的命令如下:①拉取项目所有分支:git branch
②进行分支的切换:git checkout [分支名]
③从远端拉取代码:git pull
4.使用Xcode命令来进行工程的构建。
和操作Git命令类似,你需要使用到的Xcode的构建命令如下:①清理工程:xcodebuild clean -[工程类型] [工程地址] -scheme [scheme名称] CONFIGURATION=[DEBUG模式]
②导出archive文件:xcodebuild archive -[工程类型] [工程地址] -scheme [scheme名称] -archivePath [导出路径] CONFIGURATION=[DEBUG模式]
③导出IPA安装包:xcodebuild -exportArchive -archivePath [archive文件路径] -exportPath [导出路径] exportOptionsPlist [配置plist文件]
5.发布到第三方平台
这一步其实就是IPA安装包的上传,你可以长传到蒲公英平台作为私有项目供测试人员使用,你也可以上传到公司自己的服务器,AFNetworking是一个同时支持iOS和OS X的网络第三方库,你可以选择使用它来上传文件。6.灵活的组合模块。
这部分就完全是代码逻辑了,在设计时,你可以将每个模块封装成具体的任务,任务之间只能顺序进行执行,然后自由组合这些任务即可。7.输出窗口。
使用NSTextView来显示输出信息,无论是执行脚本,还是上传文件,如果出错,都会有信息反馈。8.记忆功能。
你可以选择使用数据库来存储每个项目的信息,因为数据量并不大,我在开发这个软件时,采用的是归档的原理来进行数据的持久化。四、界面设计
在Xcode中,使用storyboard开发界面是一件什么畅快的事情。在开发项目的主界面时,我参照了SourceTress的设计,也感谢 @魔笛 提供的界面思路。我想作为开发者的工具无需绚丽的外表,简约是实用,然后看上去舒服就算达到要求。主页面截图如下,其也十分简单,只是作为数据的展示。![](https://static.oschina.net/uploads/space/2017/0724/144737_29Rh_2340880.png)
添加工程界面我采用的是弹出窗口的模式,正如上面分析,添加工程的实质就是拿到Xcode项目文件的地址,界面效果如下:
![](https://static.oschina.net/uploads/space/2017/0724/144911_Fce3_2340880.png)
项目详情界面略微复杂,其中需要配置编译模块,Git模块和发布模块,界面如下:
![](https://static.oschina.net/uploads/space/2017/0724/145300_7qKC_2340880.png)
![](https://static.oschina.net/uploads/space/2017/0724/145321_v8WU_2340880.png)
![](https://static.oschina.net/uploads/space/2017/0724/145338_ONFv_2340880.png)
关于逻辑与功能的编写,代码较多,需要的朋友可以自动查看源码。
五、扩展与源码
Jenkins是一个持续集成与发布软件的平台。后续你可以为你的自动构建工具添加轮询打包的功能,将其运行在一台作为服务器的Mac电脑上,它就是具有了持续集成功能。软件下载地址:http://zyhshao.github.io/AutoBuild/welcome.html。
github源码:https://github.com/ZYHshao/AutoBuild。 欢迎starO(∩_∩)O
欢迎指教 共同学习
相关文章推荐
- 自己动手设计代码编辑器——(四)代码智能提示(自动完成功能)
- 代码自动发布工具设计
- grunt配置太复杂?发布一个前端构建工具,简单高效,自动跳过未更新的文件
- 自己动手构建表单验证功能【iOS】
- 从今天开始学习iOS开发(iOS 7版)--构建一款App之设计用户界面
- 自己做了一款新浪博客自动访客工具
- ArcGIS10中国工具正式发布,包括图框,接合图表,批量打印,图形裁剪,椭球面积,自动编号
- 自己动手写操作系统 开发工具
- 自己动手编写CSDN博客备份工具-blogspider
- iOS 本地自动打包工具
- 架构设计:系统间通信(40)——自己动手设计ESB(1)
- Maqetta Preview 2 发布,开源HTML5可视化设计工具
- 如何比较Keras, TensorLayer, TFLearn ?——如果只是想玩玩深度学习,想快速上手 -- Keras 如果工作中需要解决内部问题,想快速见效果 -- TFLearn 或者 Tensorlayer 如果正式发布的产品和业务,自己设计网络模型,需要持续开发和维护 -- Tensorlayer
- 自己动手写CPU之第七阶段(5)——流水线暂停机制的设计与实现
- 发布一个自动生成实体类,接口类,数据底层和业务类的小工具
- 又一款MVVM组件 构建自己的Vue组件(2)
- 构建一款App之使用设计模式
- 自己动手写Web自动化测试框架(7):框架架构的设计
- 利用Ant实现项目自动构建测试备份并发布到项目web(4)
- 自己动手编写CSDN博客备份工具-blogspider之源码分析(3)