您的当前位置:首页fastlane自动化构建工具

fastlane自动化构建工具

2024-12-13 来源:哗拓教育

一句代码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


// 终端键入,等待安装完成
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 actions:      列出所有可用fastlane活动
fastlane action [action_name]:   显示一个更详细的活动描述
fastlane lanes:      列出所有可用lanes (有描述)
fastlane list:       列出所有可用lanes (没有描述)
fastlane new_action:     在fastlane创建一个活动(集成)
  • fastlane工具:
  • : 上传截图, 元数据, app应用程序到App Store
  • : 上传Android app应用程序和元数据到Google Play
  • : 自动捕获iOS app应用程序本地截图
  • : 自动捕获Android app应用程序本地截图
  • : 快速截屏并将截屏放入设备中
  • : 自动生成和更新推送通知配置文件
  • : 开发证书和描述文件下载
  • : 使用命令行在iTunes Connect上创建新的app和开发入口
  • : 自动创建和配置iOS代码签名证书
  • : Ruby 库访问 Apple开发者中心和 iTunes Connect
  • : 最好的方式管理你的TestFlight 测试人员和从终端构建
  • : 最简单的方式邀请你的TestFlight beta测试人员
  • : iOS app打包签名自动化工具
  • : 使用Git同步你的团队证书和配置文件
  • : 最简单方式测试你的 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"] = 
  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
显示全文