Fastlane是一套使用Ruby写的自动化工具集,用于iOS和Android的自动化打包、发布等工作,可以节省大量的时间。

Github:https://github.com/fastlane/fastlane

官网:https://fastlane.tools/

文档:https://docs.fastlane.tools/

安装

1、首先要安装正确的 Ruby 版本。在终端窗口中用下列命令来确认:

  1. ruby -v

2、然后检查 Xcode 命令行工具是否安装。在终端窗口中输入命令:

  1. xcode-select --install

如果未安装,终端会开始安装,如果报错误:command line tools are already installed, use "Software Update" to install updates.代表已经安装。

3、以上依赖配置好之后就可以通过 rubygem 进行安装了:

  1. $ sudo gem install fastlane

安心等待一会,fastlane就安装完成了。

初始化

进入到工程目录执行:

  1. fastlane init

中间需要输入开发者账号、密码。

初始化之后目录下多了一个fastlane目录,内容:

Appfile

Appfile用来存放app_identifier,apple_id和team_id。 了解详情,它的格式是这样的:

  1. app_identifier "com.xxx.xxx" # app的bundle identifier
  2. apple_id "xxx@xxx.com" # 你的Apple ID
  3.  
  4. team_id "XXXXXXXXXX" # Team ID

你也可以为每个lane(后面会讲到)提供不同的 app_identifier, apple_id 和 team_id,例如:

  1. app_identifier "com.aaa.aaa"
  2. apple_id "aaa@aaa.com"
  3. team_id "AAAAAAAAAA"
  4.  
  5. for_lane :inhouse do
  6. app_identifier "com.bbb.bbb"
  7. apple_id "bbb@bbb.com"
  8. team_id "AAAAAAAAAA"
  9. end

这里就是为Fastfile中定义的:inhouse设置单独的信息。

Fastfile

Fastfile管理你所创建的 lane ,了解详情。它的格式是这样的:

  1. ···
  2. # 自动更新fastlane 工具
  3. # update_fastlane
  4.  
  5. #需要的fastlane的最小版本,在每次执行之后会检查是否有新版本,如果有会在最后末尾追加新版本提醒
  6. fastlane_version "2.30.1"
  7.  
  8. #默认使用平台是 ios,也就是说文件可以定义多个平台
  9. default_platform :ios
  10.  
  11. platform :ios do
  12. before_all do
  13. # ENV["SLACK_URL"] = "https://hooks.slack.com/services/..."
  14. cocoapods
  15.  
  16. end
  17.  
  18. desc "Runs all the tests"
  19. lane :test do
  20. scan
  21. end
  22.  
  23. desc "提交一个新的Beta版本到 Apple TestFlight"
  24. desc "This will also make sure the profile is up to date"
  25. lane :beta do
  26. # match(type: "appstore") # more information: https://codesigning.guide
  27. gym(scheme: "Docment") # Build your app - more options available
  28. pilot
  29.  
  30. # sh "your_script.sh"
  31. end
  32.  
  33. desc "部署一个新版本到App Store"
  34. lane :release do
  35. # match(type: "appstore")
  36. # snapshot
  37. gym(scheme: "Docment") # Build your app - more options available
  38. deliver(force: true)
  39. # frameit
  40. end
  41.  
  42. # 你可以定义自己的lane
  43.  
  44. #执行lane成功后的回调
  45. after_all do |lane|
  46. # slack(
  47. # message: "Successfully deployed new App Update."
  48. # )
  49. end
  50.  
  51. # 如果流程发生异常会走这里并终止
  52. error do |lane, exception|
  53. # slack(
  54. # message: exception.message,
  55. # success: false
  56. # )
  57. end
  58. end

我们也可以定义一个自己的lane:

  1. desc "企业版"
  2. lane :inHouse do
  3. gym(scheme: "XXX",
  4. export_method:"enterprise",
  5. output_directory "./build", # 打包后的 ipa 文件存放的目录
  6. output_name "XXX" # ipa 文件名
  7. )
  8. end

其中一个lane就是一个任务,里面是一个个的action组成的工作流。

修改项目版本号:

修改Build Settings中的Versioning配置,Current Project Version随便填一个,Versioning System选择Apple Generic。

  1. def prepare_version(options)
  2. increment_version_number(
  3. version_number: options[:version]
  4. )
  5.  
  6. increment_build_number(
  7. build_number: options[:build]
  8. )
  9. end

利用目前支持的工具可以做所有包含自动化和可持续化构建的每个环节,例如:

  • scan 自动化测试工具,很好的封装了 Unit Test

  • sigh针对于 iOS 项目开发证书和 Provision file 的下载工具

  • match 同步团队每个人的证书和 Provision file 的超赞工具

  • gym针对于 iOS 编译打包生成 ipa 文件

  • deliver 用于上传应用的二进制代码,应用截屏和元数据到 App Store

  • snapshot 可以自动化iOS应用在每个设备上的本地化截屏过程

执行

定义完lane之后怎么执行呢?打开终端,切换到项目的根目录:执行fastlane lane'name就可以了。成功之后会在相应的路径下生成ipa文件,如果报错的话就根据错误信息好好查看文档

其他

1、这里是官方提供的一些例子

2、想了解fastlane命令的话可以执行$ fastlane --help

3、查看可用任务的列表,可以执行命令$ fastlane lanes

4、fastlane也提供了很多插件方便我们使用,例如pgyer(发布app到蒲公英)。我们也可以打完包直接传到蒲公英上,具体的可以看蒲公英提供的文档

如果你感觉有些插件不符合自己的情况,你甚至可以自定义插件

5、多个 lane 的话实际上是可以相互调用的,这个其实特别实用。例如:

  1. default_platform :ios
  2.  
  3. platform :ios do
  4.  
  5. lane :prepare do
  6. cocoapods
  7. match
  8. end
  9.  
  10. desc 'fastlane build' 'fastlane build type:adhoc'
  11. lane :build do |options|
  12. # 调用上面的 prepare 任务
  13. prepare
  14.  
  15. case options[:type]
  16. when 'adhoc'
  17. adhoc
  18. else
  19. appstore
  20. end
  21. end
  22.  
  23. lane : adhoc do
  24. ···
  25. end
  26.  
  27. lane : appstore do
  28. ···
  29. end
  30.  
  31. end

6、我们可以在 Fastfile 文件中添加一个函数来设置version号和build号。

  1. default_platform :ios
  2.  
  3. def prepare_version(options)
  4. increment_version_number(
  5. version_number: options[:version]
  6. )
  7.  
  8. increment_build_number(
  9. build_number: options[:build]
  10. )
  11. end

然后可以在一个lane中使用这个函数:

  1. lane :appstore do |options|
  2. ···
  3. prepare_version(options)
  4. ···
  5. end

然后执行这个lane的时候:

  1. $ fastlane appstore version:2.4. build:2.0

Fastlane能做的事情还有很多,大家可以去好好看看文档,研究一些高级的用法吧!

Fastlane- app自动编译、打包多个版本、上传到app store的更多相关文章

  1. Ant自动编译打包&发布 android项目

    Eclipse用起来虽然方便,但是编译打包android项目还是比较慢,尤其将应用打包发布到各个渠道时,用Eclipse手动打包各种渠道包就有点不切实际了,这时候我们用到Ant帮我们自动编译打包了. ...

  2. Android-Ant自动编译打包android项目 -- 2 ----签名与渠道包

    上篇介绍了怎么使用ant自动编译打包现有的android项目,这篇将继续介绍如果如何在ant打包应用的时候加入签名信息以及自动打包渠道包. 1. 加入签名信息: 在项目的根目录下建一个ant.prop ...

  3. Android - Ant自动编译打包android项目 -- 1(转)

    1.  背景: Eclipse用起来虽然方便,但是编译打包android项目还是比较慢,尤其当要将应用打包发布到各个渠道时,用Eclipse手动打包各种渠道包就有点不切实际了,这时候我们用到Ant帮我 ...

  4. Andorid进阶7—— Ant自动编译打包&发布 android项目

    http://www.cnblogs.com/tt_mc/p/3891546.html Eclipse用起来虽然方便,但是编译打包android项目还是比较慢,尤其将应用打包发布到各个渠道时,用Ecl ...

  5. Ant自动编译打包android项目(转载)

      1.1   Ant安装 ant的安装比较简单,下载ant压缩包  http://ant.apache.org  (最新的为1.9.3版本),下载之后将其解压到某个目录(本人解压到E:\Progra ...

  6. (转载)Ant自动编译打包android项目

    1  Ant自动编译打包android项目 1.1   Ant安装 ant的安装比较简单,下载ant压缩包  http://ant.apache.org  (最新的为1.9.3版本),下载之后将其解压 ...

  7. 【转】 iOS开发之打包上传到App Store——(一)各种证书的理解

    OK,有日子没写iOS开发的相关文章啦,主要是最近的精力都没在这上面,不过既然产品已经快要出来了,就有必要了解一下各种证书啥的(众所周知iOS的一堆证书可是很让人头大呀),最近确实被这个搞得头大,然后 ...

  8. ipa上传到APP store

    原地址:http://blog.csdn.net/akun1103/article/details/8632651 在itunes中创建程序 该部分内容继续以雪豹系统为例 打开https://itun ...

  9. 阿里云CentOS自动备份MySql 8.0并上传至七牛云

    本文主要介绍一下阿里云CentOS7下如何对MySql 8.0数据库进行自动备份,并使用.NET Core 将备份文件上传至七牛云存储上,并对整个过程所踩的坑加以记录. 环境.工具.准备工作 服务器: ...

  10. windows如何上传ios app到appstore

    我们在hbuilderx这些开发工具打包好ios app后,需要将这个app提交appstore才能让用户下载安装. 上传IOS APP主要是通过苹果开发者中心来上传,然后借助香蕉云编上传工具来上传就 ...

随机推荐

  1. 最后通牒!8月1日开始ios中国区下架全部无版号游戏

      据媒体报道,苹果早于7月8日就给中国游戏开发者发送邮件,要求游戏开发者必须在7月31日前提交游戏版号及相关文件,否则付费游戏将不可以在中国AppStore供应,8月1日期全部正式下架. ​   需 ...

  2. ios 富文本 加颜色 删除线

    UILabel *valueL = [JAppViewTools getLabel:CGRectMake(JFWidth(15), CGRectGetMaxY(proName.frame)+JFWid ...

  3. 020_go语言中的接口

    代码演示 package main import ( "fmt" "math" ) type geometry interface { area() float ...

  4. Redis教程——检视阅读

    Redis教程--检视阅读 参考 Redis教程--菜鸟--蓝本--3.2.100 Redis教程--w3c--3.2.100 Redis教程--w3c--Redis开发运维实践指南 Redis教程- ...

  5. ECS7天实践进阶训练营Day1:使用阿里云ECS,快速搭建、管理VuePress静态网站

    一.概述 VuePress是2018年由尤雨溪发布的一个全新的基于Vue的静态网站生成器,它是一个非常轻量级的静态网站生成器.VuePress主要用于生成技术文档,其类似于Gitbook,我们可以用于 ...

  6. Linux探测工具BCC(可观测性)

    BCC(可观测性) 目录 BCC(可观测性) 简介 动机 版本要求 安装 安装依赖 安装和编译LLVM 安装和编译BCC windows源码查看 BCC的基本使用 工具讲解 execsnoop ope ...

  7. C#设计模式之6-适配器模式

    适配器模式(Adapter Pattern) 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/399 访问. 适配器模式属 ...

  8. C# NPOI计算Execl里面的公式

    我这里分两种情况处理 1.Execl中表格中存在公式,我们通过公式获取数据 我们通过Npoi,获取列的属性: private static object GetValueType(ICell cell ...

  9. 学习java的第五周

    java流程控制 顺序结构 语句与语句之间,框与框之间是按从上到下的顺序进行的,它是由若干个依次执的处理步骤组成的,它是任何-一个算法都离不开的一种基本算法结构. 选择结构 if结构 if(布尔表达式 ...

  10. 关于word2vec我有话要说

    写在前面的话: 总结一下使用word2vec一年来的一些经验,因为自己在做的时候,很难在网上搜到word2vec的经验介绍,所以归纳出来,希望对读者有用. 这里不介绍word2vec的原理,因为原理介 ...