美文网首页
iOS 持续化集成打包

iOS 持续化集成打包

作者: huainanzi | 来源:发表于2018-03-22 12:22 被阅读10次
CI

作为iOS开发来说,我想最开始的状态是:功能分支的研发 ->发MR等待测试 ->进行分支的集成。。。在MR发后的测试阶段,你可能就去开发另一项功能需求,但这是 测试的兄弟会过来:喂 ,给我打一个xxx的包,你便Archive下,几分钟过去了,发给了测试,不久一会又过来又要一个xxx的包,你又archive下,又是几分钟,搞搞弄弄发现没时间开发另外的需求了。我想你的内心绝对是崩溃的。那么我们有没有一个提高此过程效率的工具尼?那就引入了CI(持续集成或自动化打包的概念)。我想目前业内的打包基础都依赖于XcodeBuild来实现打包的。

1.基于XcodeBuild的CLI来实现打包

这一方法使得我们使用终端代替操控Xcode来完成打包。当我们装完Xcode的时候XcodeBuild CLI就已经有我们大致看下有哪些命令及使用:

首先我们需要了解下Xcode中工程组织中几个概念:

Xcode Workspace :工作区(它可以包含多个Project和其他文档文)

Xcode Project :project就是一个个的仓库,里面会包含属于这个项目的所有文件,资源,以及生成一个或者多个软件产品的信息。每一个project会包含一个或者多个 targets,而每一个 target 告诉我们如何生产 products。project 会为所有 targets 定义了默认的 build settings,每一个 target 也能自定义自己的 build settings,且 target 的 build settings 会重写 project 的 build settings

Xcode Target :target 会有且唯一生成一个 product, 它将构建该 product 所需的文件和处理这些文件所需的指令集整合进 build system 中。Projects 会包含一个或者多个 targets,每一个 target 将会产出一个 product

Build Settings :build setting 中包含了 product 生成过程中所需的参数信息。project的build settings会对于整个project 中的所有targets生效,而target的build settings是重写了Project的build settings,重写的配置以target为准

Xcode Scheme :一个Scheme就包含了一套targets(这些targets之间可能有依赖关系),一个configuration,一套待执行的tests

下面看看具体的XcodeBuild :

XcodeBuild命令

其中:

archive命令

这几个命令是我们平时用来生成.archive的几个命令,其中的参数就不用一一解释了。通过XcodeBuild -help 可以看到。

ipa生成命令

我们可以使用此命令来讲archive 导出ipa包。

对于其中的schme,target,configuration,可以通过

下面来实践验证下:

我们来先使用第一个Archive命令,因为它的所有的参数都是可选的所以我们全部默认:

是不是出现了问题,导出的我们正常想要的是.archive,而生成的确实.app,经过Google得知.app和.archive都是源码归档后的产物,只是.app需要使用XCRun这个东西来生成.ipa,这个东西目前来说已经过时了。相关问题XcodeBuild

解决这个问题通过查找发现需要加上archive这个选项。emmm..

what ? 不支持Action

后来想了想,是不是缺少archive的路径 emmm...

我日。。。 又错,咦。好像这个错很明显-scheme是必须的。

哇,终于看到了.archive

下面我们将.archive 导出.ipa 其中最后一个参数为exportOptionsPlist,好像在哪里见过它,意思为一个plist文件,恩,我们每次在用Xcode导出的时候就会自动生成

可以看到,这里定义了导出ipa包的规则,这些参数的字段是可以在xcodeBuild -help是可以看到的,这里我们直接就将这个plist直接拿过来使用。

就此,我们使用XcodeBuild脱离Xcode导出ipa。

2.自动化打包

通过上面的XcodeBuild的了解,基本上替代传统的xcode的archive的方式,但这个并不能算的上是自动化打包。如何实现一键打包尼。下面介绍两种方案:一种是使用shell脚本封装XcodeBuild命令,另外一种是基于fastlane工具的打包。

2.1 shell脚本一键打包

这种方式的本质是对XcodeBuild命令行的封装来实现一键打包的,这里我们需要了解一点shell脚本的相关知识。shell脚本入门

下面我们尝试用shell脚本一键打包:

桌面创建一文件夹,创建一shell脚本文件。

来生成.archive文件

这一句使我们上面介绍过的生成.archive。下面运行:

是不是很简单的就生成了.archive,下面我们继续来生成.ipa包。注意着这里我们需要生一个plist文件来配置导出。我们先把之前生成的直接拿过来使用。

运行前后我们对比下文件夹:

运行前

运行脚本

这样是不是一个简单只要运行一句shell脚本就可以导出我们想要的ipa包。

emmm...这样就能满足我们日常打包的需求了吗?

相关文章

网友评论

      本文标题:iOS 持续化集成打包

      本文链接:https://www.haomeiwen.com/subject/aycaqftx.html