iOS--fastlane自动化打包

前言:App的开发过程中,打包测试也是非常重要的一环,但是频繁的机械式操作反而阻塞我们的开发测试效率,我们希望通过自动打包上传到测试环境减少一些不必要的简单操作,所以自动打包开发工具就应运而生了,常见的主流工具有Jenkins、fastlane。Jenkins功能强大,但是需要的配置也比较多,团队较大的可以优先考虑,fastlane比较轻便,配置较为简单,使用起来也很方便。本文将基于fastlane自动化打包的功能,详细的介绍下fastlane安装到上传蒲公英的整个流程。

目录

<一>. fastlane的安装

<二>. fastlane的配置

<三>. fastlane打包并上传至蒲公英fir.im

<一>. fastlane的安装

1.笔者配置fastlane的环境为 macOS Catalina v10.15.6版本。

2.fastlane是用Ruby语言编写的一套自动化工具集和框架,fastlane的Github地址fastlane的官网fastlane的文档

3.fastlane的安装(在终端命令行操作):

--第一步:因为fastlane是用Ruby语言编写的工具,所以必须保证已经配置好了Ruby开发环境。可以使用如下命令行查看是否安装了Ruby:

ruby -v

如果有以下提示说明你已经安装了Ruby:

ruby 2.6.0p0(2018-12-25 revision 66547)[x86_64-darwin19]

如果没有安装也没关系,这里提供一个博主的方法

--第二步:安装Xcode命令行工具

xcode-select--install

如果没有安装,命令会有提示框,根据提示一步一步安装即可。

如果出现以下命令提示,说明已经安装成功:


已经安装成功提示

xcode-select: error: command line tools are already installed, use "Software Update" to install updates

--第三步:Ruby和Xcode环境都配置好之后,我们只需要执行以下命令来安装fastlane

sudo gem install -n /usr/local/bin fastlane

安装完成之后,输入以下命令查看是否安装成功:

fastlane --version

出现以下提示说明你已经安装成功了:


fastlane安装成功

如果没有以上提示也没关系,回看前面的步骤,再仔细检查下,祝君好运。

<二>. fastlane的配置

fastlane安装成功之后,接下来就是比较重要的fastlane的配置。

<1>首先需要我们cd到你的iOS项目下,执行初始化命令:

fastlane init

命令执行完成之后会给出我们如下几个提示:

fastlane init

命令执行到最后有What would you like to use fastlane for?提示,此时fastlane列出几个选项,需要我们告诉它使用fastlane需要执行哪种操作:

第一种获取App Store的App预览照片。

第二种打包上传至TestFlight工具上。

第三种打包上传到App Store。

第四种自定义打包方式。

以上四种方式大家可以根据自己的需要自行选择,本文主要介绍打包上传至第三方平台,所以选择4自定义打包方式。选择完成之后,fastlane会在我们项目中创建fastlane文件,这个过程大概需要两分钟等待。

出现以下截图说明已经创建成功:

此时只需要我们一直敲回车键即可,直到该命令运行结束,我们会看到如下创建的文件:

<2>创建好fastlane文件夹之后,Appfile是编辑我们相关App和开发者账号信息的,一般不需要我们去手动修改,在最后一步的打包过程中如果出现需要App ID的相关信息,我们在命令行中正常输入即可。Fastfile是我们对自动打包这个过程的完整配置,默认的Fastfile文件内容如下:

1.主要介绍lane的任务结构和蒲公英、fir.im的api配置。

笔者给出一个自己的例子来作为参考并讲解主要参数的含义:


关于上述的蒲公英api_key和user_key可以到蒲公英Api网站查看:

截屏2020-10-23 下午5.14.55.png

关于fir.im的相关信息可以到fir.imApi网站查看:

FIR_API

build_app 中主要是编译打包成ipa文件这个过程的相关操作,build_app中的相关参数介绍:

参数参数的意义默认值

workspaceiOS项目的workspace

project工程路径

schemeiOS项目的scheme

cleanfastlane自动打包之前知否clean项目false

output_directory编译App完成后ipa包的存放地址,默认在工程中.

output_nameipa包名称

silent编译过程中隐藏掉不必要的信息false

codesigning_identity描述文件

skip_package_ipa自动跳过ipa打包false

skip_package_pkg自动跳过pkg打包false

include_symbolsipa包包含symbols?

include_bitcodeipa包包含symbolsbitcode?

export_method打包导出方式: app-store, ad-hoc, package, enterprise, development, developer-id

export_options需要一个export_options plist 文件路径或者export_options ,用 'xcodebuild -help' 查看提供的 options

skip_build_archiveExport ipa from previously built xcarchive. Uses archive_path as source

skip_archive跳过打archive包过程

skip_codesigningBuild without codesigning

catalyst_platformcatalyst app的打包平台: ios, macos

build_pathThe directory in which the archive should be stored in

archive_pathThe path to the created archive

sdk应用支持的手机系统版本

套用fastlane官方的配置例子:

build_app(  workspace: "MyApp.xcworkspace",  configuration: "Debug",  scheme: "MyApp",  silent: true,  clean: true,  output_directory: "path/to/dir", # Destination directory. Defaults to current directory.  output_name: "my-app.ipa",      # specify the name of the .ipa file to generate (including file extension)  sdk: "iOS 11.1"        # use SDK as the name or path of the base SDK when building the project.)

gym 中主要是编译打包成功后,对导出的IPA包的操作,gym中的相关参数可参考build_app中的参数,因为两者的参数基本一致,最后用一个gym例子:

platform:iOSdodesc"打测试包上传到fir.im"lane:firdobuild_app(workspace:"XXXXX.xcworkspace",scheme:"XXXXX",export_method:"ad-hoc",output_directory:"/Users/XXXXX/Desktop/IPA",silent:"true")gym(workspace:"MyApp.xcworkspace",configuration:"Debug",scheme:"MyApp",silent:true,clean:true,output_directory:"path/to/dir",# Destination directory. Defaults to current directory.output_name:"my-app.ipa",# specify the name of the .ipa file to        generate (including file extension)sdk:"iOS 11.1"# use SDK as the name or path of the base SDK when building the project.)endend

4 蒲公英和fir.im的插件配置

经过上面的相关配置,我们的配置就差一步:第三方平台的插件配置。

@1.蒲公英插件的配置:

执行以下命令来安装蒲公英插件:

fastlane add_plugin pgyer

出现以下结果表明安装成功:

@2.fir.im插件的配置:

执行以下命令来安装fir.im插件:

fastlane add_plugin firim

出现以下结果表明安装成功:

<三>. fastlane打包并上传至蒲公英和fir.im

经过上面的配置,我们就可以愉快的自动打包上传啦,不过最后还有几点跟大家说明一下,首先贴出来笔者打包的配置文件:

platform:iOSdodesc"打测试包上传到蒲公英"lane:pgydobuild_app(workspace:"XXXXX.xcworkspace",scheme:"XXXXX",export_method:"ad-hoc",output_directory:"/Users/XXXXX/Desktop/IPA")#蒲公英的配置 替换为自己的api_key和user_keypgyer(api_key:"蒲公英api_key",user_key:"蒲公英user_key",update_description:"该版本更新的内容")enddesc"打测试包上传到fir.im"lane:firdobuild_app(workspace:"XXXXX.xcworkspace",scheme:"XXXXX",export_method:"ad-hoc",output_directory:"/Users/XXXXX/Desktop/IPA",silent:"true")# 上传ipa到fir.im服务器,在fir.im获取firim_api_tokenfirim(firim_api_token:"firim_api_token")# token 在fir 上查看endend

首先lane作为一个单独的任务模块,它是可以自己定义的,例如笔者的例子中platform为iOS,下面有两个任务:pgy和fir,所以在我们只需要cd 到相关的iOS项目下执行以下命理即可:

(打包上传至fir.im  ios为platform字段中的平台  fir为自己自定义的任务 当然这个名字可以任意取,在我们执行命令的时候对应上即可。)

fastlane ios fir

或者

fastlane ios pgy

出现下面的截图就代表你已经上传成功了:

附录:

<1> firim相关参数配置

参数参数的意义默认值

platform平台:ios , mac, android---

firim_api_urlhttps://www.betaqr.com/apps---

firim_api_tokenfirim网站的API token---

app_changelog更新日志---

firim_username用户名---

app_passwd安装密码---

ipaipa包---

apkapk包---

gradle_file------

icon------

file------

app_identifier------

app_name------

app_desc------

app_short------

app_is_opened------

app_is_show_plaza------

app_store_link_visible------

app_version------

app_build_version------

app_release_type------

app_info_to_file_path------

<2> 蒲公英相关参数配置

参数参数的意义默认值

api_keyhttps://www.pgyer.com/account/api---

user_keyhttps://www.pgyer.com/account/api---

ipaipa包---

apkapk包---

password安装包密码---

update_description更新日志---

install_type------

写在最后:fastlane的本地打包主题感受是相比之前手工操作省去了不少机械操作,笔者80M左右的项目上传成功大概用了9分左右,还是挺有效率的。当然这也只是开发测试中的一环,弊端就是必须要本地配置好才可以,关于后续的服务器自动化打包测试会继续更新,感谢大家的拜读,如果文中有错误或者理解不对的地方,欢迎大家的批评指正。

作者:coderGMQ111的笔记

链接:https://www.jianshu.com/p/81b78c53d171

来源:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,049评论 5 473
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,478评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,109评论 0 333
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,097评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,115评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,280评论 1 279
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,748评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,398评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,553评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,440评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,487评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,176评论 3 317
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,750评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,821评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,049评论 1 257
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,559评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,150评论 2 341