fastlane自动化构建工具

一句代码fastlane [lane_name],实现一键自动完成构建打包。fastlane还有很多其他功能,学会直线骑车再学拐弯等骑车技巧就很容易了。下面讲fastlane简单的自动化构建,免除我们日常工作中的编译、打包、部署等重复流程。

一、安装fastlane

  • 我安装fastlane遇到个问题,长点知识,凡是遇到这种报错基本都是本地ruby版本太低了。查看了ruby的一系列版本之后选了最新的版本2.4.1,就是这个2.4.1这个版本我装好了好久都装不上,花了我好多时间,后来退了一个版本2.2.2,问题解决。(一万只马在奔腾......)
// 报错的大致信息:
YAML safe loading is not available. Please upgrade psych to a version that supports safe loading (>= 2.0).
ERROR:  SSL verification error at depth 1: unable to get local issuer certificate (20)
...
ERROR:  Error installing fastlane:
    ERROR: Failed to build gem native extension.

    Building has failed. See above output for more information on the failure.
extconf failed, exit code 1

  • 解决Answer:打开终端,键入
// 安装新版本,这个版本没问题,rvm>2.0版本就可以了
rvm install 2.2.2

回到正题:安装fastlane


fastlane官方地址
[fastlaneGithub地址]
参考文章1
参考文章2
参考LuisX
参考文章4

// 终端键入,等待安装完成
rvm install fastlane

  • 测试是否安装成功,有版本号就成功,我的版本是2.89.0
// 终端键入
fastlane -v

二、fastlane简单使用和初始化

  • 进入项目根目录
cd 你项目的根目录
  • 初始化fastlane,fastlane init,我选择第3种

     What would you like to use fastlane for?
    1. 📸  Automate screenshots
    2. 👩‍✈️  Automate beta distribution to TestFlight
    3. 🚀  Automate App Store distribution
    4. 🛠  Manual setup - manually setup your project to automate your tasks
    
fastlane初始化.png
  • 失败原因是:fastlane默认的是App Store自动化设置,但是我是用企业账号没有权限来设置App Store自动化打包,所以失败,我改选第4项的手动设置。
  • 初始化成功后,进入你项目根目录的fastlane文件有两个文件:AppfileFastfile
Appfile
  • Appfile文件用来存放你的APP信息,包括app_identifier,apple_id和team_id。
Fastfile
  • Fastfile文件是你自动化构建配置的信息
实现企业版自动化构建配置,解决上面权限问题
  • 在Fastfile文件写入
desc "企业版"
  lane :inhouse do
  gym(scheme: "BeeEnrichmentAppiOS",
  clean:true,
  configuration: "Release",
  export_method: "enterprise",
  output_name:"BeeEnrichmentAppiOS",
  output_directory:"build") # Build your app - more options available
  deliver(force: false)
  # frameit
  end
  • 打开终端,cd到你的项目根目录,键入fastlane ios inhouse do

  • 更多fastlane的其他指令请看fastlane Doc指南

fastlane actions:      列出所有可用fastlane活动
fastlane action [action_name]:   显示一个更详细的活动描述
fastlane lanes:      列出所有可用lanes (有描述)
fastlane list:       列出所有可用lanes (没有描述)
fastlane new_action:     在fastlane创建一个活动(集成)
  • fastlane工具:
  • deliver: 上传截图, 元数据, app应用程序到App Store
  • supply: 上传Android app应用程序和元数据到Google Play
  • snapshot: 自动捕获iOS app应用程序本地截图
  • screengrab: 自动捕获Android app应用程序本地截图
  • frameit: 快速截屏并将截屏放入设备中
  • pem: 自动生成和更新推送通知配置文件
  • sigh: 开发证书和描述文件下载
  • produce: 使用命令行在iTunes Connect上创建新的app和开发入口
  • cert: 自动创建和配置iOS代码签名证书
  • spaceship: Ruby 库访问 Apple开发者中心和 iTunes Connect
  • pilot: 最好的方式管理你的TestFlight 测试人员和从终端构建
  • boarding: 最简单的方式邀请你的TestFlight beta测试人员
  • gym: iOS app打包签名自动化工具
  • match: 使用Git同步你的团队证书和配置文件
  • scan: 最简单方式测试你的 iOS 和 Mac apps

三、gym配置自动化构建

  • gym也是fastlane的工具之一,iOS app打包签名自动化工具


    gym图片
  • gym安装:
// 终端
sudo gem install gym
  • gym的使用

一下操作都是cd到项目的根目录下

// 终端
gym --workspace "gymTest.xcworkspace" --scheme "gymTest" --clean
// 或者用这条命令,fastlane 指令
fastlane gym
执行
  • 在Fastfile文件写完lane配置后,终端键入fastlane [lane_name],自动打包完成。
  • 以后打包的时候,只要cd到项目根目录,再键入fastlane [lane_name]就实现自动构建。[lane_name]是你写入的lane名字。
  • 你可以在Fastfile写入这写功能:
platform :ios do

  before_all do
  # ENV["SLACK_URL"] = "https://hooks.slack.com/services/..."
  cocoapods
  end

  #执行lane成功后的回调
  after_all do |lane|
   # slack(
   #  message: "Successfully deployed new App Update."
   # )
     end
  # 如果流程发生异常会走这里并终止
  error do |lane, exception|
   # slack(
   #  message: exception.message,
   #  success: false
   # )
     end
  end

  desc "Description of what the lane does"
  lane :custom_lane do
    # add actions here: https://docs.fastlane.tools/actions
  end

  desc "提交一个新的Beta版本到 Apple TestFlight"
  desc "This will also make sure the profile is up to date"
  lane :beta do
  # match(type: "appstore") # more information: https://codesigning.guide
  gym(scheme: "你的项目名字") # Build your app - more options available
  pilot
  # sh "your_script.sh"
  end

  desc "部署一个新版本到App Store"
  lane :release do
  # match(type: "appstore")
  # snapshot
  gym(scheme: "你的项目名字”,
      clean:true,
      configuration: "Release”,
      export_method: "appstore"
      ) # Build your app - more options available
  deliver(force: false)
  # frameit
  end
  
  desc "企业版"
  lane :inhouse do
  gym(scheme: "你的项目名字",
      clean:true,
      configuration: "Release",
      export_method: "enterprise",
      output_name:"你的项目名字",#打包.ipa的文件名
      output_directory:"build") # Build your app - more options available
  deliver(force: false)
  # frameit
  end

end

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