本身动手设计一款iOS自动构建发布工具

本身动手设计一款iOS自动构建发布工具

1、引言

    在iOS开发中,你可能常常会遇到这样的场景:html

本身负责的功能模块开发完成后,将其合并到测试分支,而后打测试包给测试安装。测试发现bug,这时你可能正在开发分支上作其余的事情,可是你须要修改了bug,提交到测试分支,再次打测试包给测试人员使用。反反复复的切换分支,反反复复的构建打包将浪费你大量的时间,做为一名工程师,最不能容忍的即是在重复的事情上浪费时间。因而,你想,我能够本身动手写一个自动构建发布的小工具。git

    本篇博客就是基于上面的想法,给你们介绍编写一个简洁的自动化工具的具体步骤与核心要点。在编写本博客时,我也基于这样的想法开发了一款Mac上的iOS自动构建,打包,发布工具,而且将代码开源在Github,若是有兴趣,你也能够做为参考。github

2、需求分析

    开发工具也是一种产品,在开始作一件产品以前,需求分析是十分重要的步骤。商业产品的需求者是用户,而开发工具的需求者就是你本身。首先,结合工做须要,一款自动化构建工具应该至少知足以下这些功能需求:数据库

    1.它应该支持多个项目同时进行自动化构建。 编程

    2.应该能够方便的新增与删除项目。xcode

    3.它应该具有Git操做能力,自动选择合适的分支进行构建。服务器

    4.它须要调用Xcode命令来完成打包工做。网络

    5.它具有发布到第三方平台的能力(例如蒲公英)。多线程

    6.它能够灵活的进行模式配置,Git模块,Xcode构建模块和发布模块能够自由组合。框架

    7.它应该有一个输出窗口,可让使用者获取构建的进度以及log日志。

    8.它有记忆功能,会将配置信息保存到本地。

上面列出的功能点是这个自动化构建工具的一些基础功能,实现了这些功能,你的软件即可以正式的投入使用,可是它并不完善,你能够在本身规划的第二版,第三版中继续丰富功能,优化体验。

3、技术分析

    明确了需求,你下一步须要考虑的即是实现这些需求所须要的技术。

    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.记忆功能。

    你能够选择使用数据库来存储每一个项目的信息,由于数据量并不大,我在开发这个软件时,采用的是归档的原理来进行数据的持久化。

4、界面设计

    在Xcode中,使用storyboard开发界面是一件什么畅快的事情。在开发项目的主界面时,我参照了SourceTress的设计,也感谢 @魔笛 提供的界面思路。我想做为开发者的工具无需绚丽的外表,简约是实用,而后看上去舒服就算达到要求。主页面截图以下,其也十分简单,只是做为数据的展现。

添加工程界面我采用的是弹出窗口的模式,正如上面分析,添加工程的实质就是拿到Xcode项目文件的地址,界面效果以下:

项目详情界面略微复杂,其中须要配置编译模块,Git模块和发布模块,界面以下:

关于逻辑与功能的编写,代码较多,须要的朋友能够自动查看源码。

5、扩展与源码

    Jenkins是一个持续集成与发布软件的平台。后续你能够为你的自动构建工具添加轮询打包的功能,将其运行在一台做为服务器的Mac电脑上,它就是具备了持续集成功能。

    软件下载地址:http://zyhshao.github.io/AutoBuild/welcome.html。

    github源码:https://github.com/ZYHshao/AutoBuild。 欢迎starO(∩_∩)O

 

欢迎指教 共同窗习

相关文章
相关标签/搜索