fastlane 入门使用_普通网友的博客-程序员秘密

640?wx_fmt=jpeg

黑客技术 点击右侧关注,了解黑客的世界! 640?wx_fmt=jpeg

640?wx_fmt=jpeg

Linux编程 点击右侧关注,免费入门到精通! 640?wx_fmt=jpeg


回想一下我们发布 iOS 应用,不仅步骤繁琐,非常耗时。一旦其中一步失误了,又得重新来。作为一名优秀的工程师不应该让这些重复的工作在浪费我们的人生。在软件工程里面,我们一直都推崇把重复、流程化的工作交给程序完成。这次的文章主角就是为了解放我们而来—— fastlane,这个明星库在 github 已经高达 1w 多的start量,得到了广大码农们的认为。


Fastlane


fastlane 是 iOS (还有 Android ) 布署和发布最好的一套工具。它处理了所有重复的工作,例如生成截图,处理签名和发布应用。


安装


fastlane实际是由Ruby写的,使用Ruby的Gem安装是我们的不二选择



sudo gem install fastlane -NV


接着在终端进入项目里面(目前fastlane swift 正在测试,就以之前的版本讲解)



fastlane  init


按照提示初始化完成之后,在项目下面生成 fastlane 文件夹


基本介绍


先普及两个重要的文件,初始化后在./fastlane文件件即可找到


Appfile


存放着 AppleID 或者 BundleID 等一些fastlane需要用到的信息。基本上我们不需要改动这个文件的内容。


它放到你项目下面的 ./fastlane文件夹下面,默认生成的文件如下:



app_identifier "net.sunapps.1" # The bundle identifier of your app
apple_id "felix@krausefx.com"  # Your Apple email address

# 如果账号里面有多个team,可以指定所有的team
# team_name "Felix Krause"
# team_id "Q2CBPJ58CA"

# 指定 App Store Connect 使用的team
# itc_team_name "Company Name"
# itc_team_id "18742801"


更多详细的配置,可以参考一下文档


Appfile Doc


FastFile


一开始生成的Fastlane文件大概如下:



platform :ios do
  before_all do

  end

  desc "Runs all the tests"
  lane :test do
    scan
  end

  # You can define as many lanes as you want

  after_all do |lane|

  end

  error do |lane, exception|
    # slack(
    #   message: "Error message"
    # )
  end
end


Fastfile里面包含的块类型有四种:


  • before_all 用于执行任务之前的操作,比如使用cocopods更新pod库

  • after_all 用于执行任务之后的操作,比如发送邮件,通知之前的

  • error 用于发生错误的操作

  • lane 定义用户的主要任务流程。例如打包ipa,执行测试等等


如下面,来讲解一下lane的组成。



desc "Push a new beta build to TestFlight"   //该任务的描述
lane :beta do  //定义名字为 beta 的任务
  build_app(workspace: "expample.xcworkspace", scheme: "example"//构建App,又叫gym
  upload_to_testflight //上传到testfilght,
end


该任务的作用就是构建应用并上传到 TestFilght。下面有两个 Action


  • build_app 生成 ipa 文件

  • upload_to_testflight 把 ipa 文件上传到 TestFilght


在控制台进入项目所在的文件夹下面,执行下面命令



fastlane beta


即可执行任务,按照上面的任务,会生成 ipa 并上传到 TestFilght。其实很简单,定义好任务,控制台执行任务即可。


实践


那么如何写一个我们属于自己的 lane 呢? 就以发布 ipa 到 fir 为例



desc "发布到Fir"
lane :pulish_to_fir do
  # 运行 pod install 
  cocoapods 
  # 构建和打包ipa
  gym(
    clean: true,
    output_directory: './firim',
    scheme: 'xxxx',
    configuration: 'Test',
    export_options: {
      method: 'development',
      provisioningProfiles: {
          "xxx.xxx.xxx""match Development xxx.xxx.xxx"
      },
    }
  )
  # 上传ipa到fir.im服务器,在fir.im获取firim_api_token
  firim(firim_api_token: "fir_token")
end


下面解释一下上面的内容



cocoapods


在项目里执行 pod install,详细例子可见 Doc



sh "./update_version.sh"


这是由作者本地写的更新版本号的脚本



gym (又名build_app)


gym 是fastlane的里面一部分,它可以方便生成和签名ipa,能为开发者省下不少功夫。


Doc



firim


firim 是一个插件,执行 fastlane add_plugin firim 即可把插件装好


总结


fastlane里面内置很多常用的Action,具体的使用方法建议多看一下官方文档。


fastlane项目里面也有很多其他公司的 例子,在不清楚怎么使用的时候,看看这些例子也未尝不是一种方法。


【无门槛免费领】

535G超强程序员编程

0基础从入门到精通自学视频教程!

640?wx_fmt=jpeg

640?wx_fmt=jpeg 640?wx_fmt=jpeg

640?wx_fmt=jpeg 640?wx_fmt=jpeg 640?wx_fmt=jpeg

640?wx_fmt=jpeg 640?wx_fmt=jpeg 640?wx_fmt=jpeg

640?wx_fmt=jpeg 640?wx_fmt=jpeg 640?wx_fmt=jpeg

640?wx_fmt=jpeg 640?wx_fmt=jpeg 640?wx_fmt=jpeg 640?wx_fmt=jpeg

640?wx_fmt=png万水千山总是情,点个 “ 在看” 行不行
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/olsQ93038o99S/article/details/90455422

智能推荐

rust go java 性能_Java,Go和Rust之间的比较_等灯等灯丶的博客-程序员秘密

这是JAVA,Go和Rust之间的比较。 这不是基准测试,而是更多输出可执行文件大小,内存使用,CPU使用率,运行时要求之间的比较,当然还有一个小的基准测试,可以每秒获取一些请求,并尝试使 一些数字的感觉。内存使用情况空闲,无所事事> Memory usage of each Application while running idle in memory.什么? Go和Rust版本的条形图...

App启动白屏黑屏优化_通用黑屏优化_Android-Yang的博客-程序员秘密

App启动时黑白屏优化     黑白屏问题是app需要重点优化点之一,我以前都是遇到这种比较典型的问题直接上网查找相关的解决方案,筛选直接用,这样的缺点是,只知其表,不知其里,感觉自己这块懂了,但是和人实际表述的时候却说的很片面。细致梳理一下,让自己认知更深刻一下。如果有理解不对的地方,请多多指点。在此先谢过!!1 、app的启动流程图:小结:从图中可以看出app启动分为俩个阶段,一个是系统进程层...

关于使用动态代理创建代理对象是报错 java.lang.ClassCastException: $Proxy0 cannot be cast to 的解决办法_马可菠萝me的博客-程序员秘密

出现此问题的场景一般有以下两种:(1)在Java中使用代理模式创建对象。如何创建代理对象在这就不说了。首先,要为代理对象实现接口,然后生成的代理对象用接口的类型进行接收。此处是使用JDK的代理方式,另一种参考下面的第二种应用场景。(2)在spring框架中使用代理的方式创建对象。Spring的文档中这么写的:Spring AOP部分使用JDK动态代理或者CGLIB来为目标对象创建代

高斯混合模型GMM_高斯肤色模型协方差矩阵 计算_零钱币的博客-程序员秘密

写在前面:    Gaussian Mixture Model (GMM)。事实上,GMM 和 k-means 很像,不过 GMM 是学习出一些概率密度函数来(所以 GMM 除了用在 clustering 上之外,还经常被用于 density estimation ),简单地说,k-means 的结果是每个数据点被 assign 到其中某一个 cluster 了,而 GMM 则给出这些

【CS231n】Softmax浅谈 + Softmax代码实现_cs231nsoftmax_我是一只计算鸡的博客-程序员秘密

1. Softmax1.1 Softmax概要 Softmax分类器可以认为是在SVM分类器的基础上做了一些改进,SVM的输出为对于一张image在各个类别上面的评分,因为没有明确的参照,所以很难直接解释。而Softmax则不同,Softmax将对于一张image在各个类别上面的评分看作为归一化的对数概率,概率给了我们明确的参照,我们可以认为这张image应该认为是概率最高所...

随便推点

python之路:Day05 --- 常用模块_a575771207的博客-程序员秘密

本节内容  1.模块介绍  2.sys  3.os  4.time & datetime 模块  5.random  6.shutil  7.hashlib  8.logging  9.re正则表达式   10、shelve  11、xml 处理  12、yaml 处理  13、configpareser  14、subpr...

java HttpClient 下载文件关于 content-length 为 -1 的问题_nanqu2090的博客-程序员秘密

     在系统使用 HttpClient 去服务器下载文件时,以 以下 代码为例,需要使用getContentLength判断content-length的长度 response = getHttpClient().execute(httpPost); log.info("message:download请求状态, param:[status:{}]" ,resp...

str_getcsv() 函数_冷月醉雪的博客-程序员秘密

查看更多https://www.yuque.com/docs/share/3b90dd35-f890-49ce-b724-6e6c89eb4f90

vue 启动Module build failed (from ./node_modules/vue-loader/lib/index.js)_Archer_yy的博客-程序员秘密

vue 启动时,出现以下错误:Module build failed (from ./node_modules/babel-loader/lib/index.js):ReferenceError: E:\cblhxwebtest\babel.config.js: Error while loading config - webpack is not defined at Object....

org.springframework.beans.factory.UnsatisfiedDependencyException_Hello 华的博客-程序员秘密

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'dirDao' defined in file [C:\ideaProject\IdeaProjects\etmf3\target\etmf\WEB-INF\classes\com\meta\etmf\ma

推荐文章

热门文章

相关标签