Fastlane 使用心得

2023-11-23 18:50
文章标签 使用 心得 fastlane

本文主要是介绍Fastlane 使用心得,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 为什么选择fastlane
在程序的世界里,一切重复性的,流程化的工作都可以交给自动化/工具去完成。
在移动开发中也是如此,编写代码只是软件开发中的一部分,除此之外还需要我们编译、打包、上传、发布、部署、库管理、版本控制等coding 之外的事,而正是这些重复而又繁杂的工作,耗费了我们大量的时间。
所以面对这样的工作,总会有人想要做出改变,于是就会出现许多好用的工具,既方便了自己,又帮助了其他人。

2. 关于fastlane
今天就要给大家介绍一个工具: fastlane, 这个在GitHub上面属于明星项目,目前共有1万多个star,并且有1500多个fork,这个在开源方面算比较厉害的了。
先简单介绍一下,fastlane使用ruby语言编写的一套自动化工具集和框架,每一个工具实际都对应一个ruby脚本,用来执行某一个特定的任务,而fastlane核心框架则允许使用者通过配置文件的形式,将不同的工具有机而灵活的结合在一起,从而形成一个完整的自动化流程
到目前为止,fastlane 的工具集大约包含了170多个小工具,基本涵盖了打包,签名,测试,部署,发布,库管理等移动开发中所涉及到的内容。关于这些工具详细的介绍和使用,可以在fastlane 文档中去查阅。
如果这些工具仍然没有符合你的要求,没有关系,得益于fastlane,本身强大的action和plug机制,如果你恰好懂一些ruby开发的话,可以轻易的编写出自己想要的工具。
其实fastlane 的安装非常简单,和cocoapod 一样,fastlane 也可以通过rubygems来安装,如果你的电脑上有ruby环境的话,只需要一句话就可以完成,gem install fastlane

3. 移动端持续集成和持续交付的场景和痛点
fastlane 本身能做的事情很多,但是其中一个最为重要的作用就是能够无缝的嵌入在持续测试和交付的体系中。
下面可以为大家例举一个场景
当一个迭代开发测试结束,服务器端上线之后,我们会使用Testflight进行线上跟测,一般会执行以下流程:
1. 执行git pull,拉取最新代码到本地
2. pod install 安装最新的依赖库
3. 在Xcode中将build version增加
4. 在Xcode中点击archive编译并打包
5. 选择输出一个iOS App Store模式的IPA文件
6. 通过application loader将IPA上传至ITC(Itunes connect)
7. 然后等待ITC Process 完成之后,登录ITC选择刚上传的IPA文件进行Testflight测试
8. 由于修改了版本号,所以需要将代码commit和push 一下
如果线上跟测发现有问题,那么需要修复完毕和重复上面8个步骤。
其实做过这件事的同学应该都有体会,顺利的话差不多一次得20到30分钟,如果某一次build version 忘记增加了,那么前面的工作都白做了。

4. fastlane 在项目中的应用
上面介绍了fastlane 在持续集成和交互上的一些优势,那么我们在来看看移动端目前的发展趋势。
最近几年,随着智能手机的普及,移动端不仅要承载更多业务场景的实现,并且还要应对不断变化的也无需求,敏捷开发也是如此,这就要求我们团队能够迅速响应变化,快速迭代,那么随之而来的问题就是,如何保障在不牺牲质量的前提下,尽可能的提升我们的速度,我觉得这一切需要建立在高质量的持续测试和持续交付体系之上,

所以我们团队从前一段时间开始,一直在尝试着寻找这样的一种工具,可以快速的帮助我们持续集成与交互。
刚开始我们在尝试使用Jenkins+pgyer搭建了一套持续测试的环境,大致的流程如下图:

说实话,效果还是可以的,至少在一定时期内满足了我们的要求,但是Jenkins本身只是一个通用的CI流程管理系统,本身并不提供诸如ITC提包和Meta内容管理,签名,证书管理等等和移动端业务紧密结合的场景,而且配置的过程相当繁琐。

前段时间闲暇之余,我们在许多博客上面发现了Fastlane,看了Readme后感觉有戏,于是决定尝试一下。其实刚开始的时候,我们也只是用Fastlane来解决iOS团队内证书同步和上传ITC的问题,但是随着深入的研究,发现其实Fastlane能做的更多,比如:私有Pod的发布,代码的静态检查,UIAutomation测试等等。

另外,Fastlane本身也可以和Jenkins,Circle等主流CI系统做很好的集成,并且由于主要的CI流程都由Fastlane来管理和执行,所以从根本上降低了这些系统配置的复杂度。
随着我们在项目中更深入的运用Fastlane, 持续集成、测试、交付离我们不远了。


参考文档:

http://www.infoq.com/cn/articles/actual-combat-of-fastlane-part01

这篇关于Fastlane 使用心得的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/420003

相关文章

vue使用docxtemplater导出word

《vue使用docxtemplater导出word》docxtemplater是一种邮件合并工具,以编程方式使用并处理条件、循环,并且可以扩展以插入任何内容,下面我们来看看如何使用docxtempl... 目录docxtemplatervue使用docxtemplater导出word安装常用语法 封装导出方

Linux换行符的使用方法详解

《Linux换行符的使用方法详解》本文介绍了Linux中常用的换行符LF及其在文件中的表示,展示了如何使用sed命令替换换行符,并列举了与换行符处理相关的Linux命令,通过代码讲解的非常详细,需要的... 目录简介检测文件中的换行符使用 cat -A 查看换行符使用 od -c 检查字符换行符格式转换将

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

Elasticsearch 在 Java 中的使用教程

《Elasticsearch在Java中的使用教程》Elasticsearch是一个分布式搜索和分析引擎,基于ApacheLucene构建,能够实现实时数据的存储、搜索、和分析,它广泛应用于全文... 目录1. Elasticsearch 简介2. 环境准备2.1 安装 Elasticsearch2.2 J

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

Java中List的contains()方法的使用小结

《Java中List的contains()方法的使用小结》List的contains()方法用于检查列表中是否包含指定的元素,借助equals()方法进行判断,下面就来介绍Java中List的c... 目录详细展开1. 方法签名2. 工作原理3. 使用示例4. 注意事项总结结论:List 的 contain

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

Android中Dialog的使用详解

《Android中Dialog的使用详解》Dialog(对话框)是Android中常用的UI组件,用于临时显示重要信息或获取用户输入,本文给大家介绍Android中Dialog的使用,感兴趣的朋友一起... 目录android中Dialog的使用详解1. 基本Dialog类型1.1 AlertDialog(

Python使用自带的base64库进行base64编码和解码

《Python使用自带的base64库进行base64编码和解码》在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求,其中,Base64是一种常用的编码方案,本文我将详细介绍如何使... 目录引言使用python的base64库进行编码和解码编码函数解码函数Base64编码的应用场景注意