Fastlane:什么是它,构建与发布自动化

作者: IT Sectr 发布日期: 2026-02-13 阅读时间: 10 分钟

Fastlane — 用于iOS和Android移动应用的构建和发布自动化工具。Fastlane管理代码签名、构建、运行测试、创建截图以及上传到App Store Connect和Google Play Console。它是移动开发中CI/CD的事实标准。

主要结论

  • Fastlane自动化整个移动发布流水线:构建、测试、签名和发布,一条命令完成
  • Fastfile — 用Ruby编写的配置文件,其中描述了lanes — 命名的自动化场景
  • 支持iOS和Android — Fastlane可与Xcode、Gradle、App Store Connect、Google Play、TestFlight和Firebase配合使用
  • match和sigh — 管理iOS开发的证书和配置文件
  • CI/CD集成 — Fastlane可嵌入GitHub Actions、GitLab CI、Bitrise、Jenkins和CircleCI

Fastlane — 什么是它

Fastlane — 是一个开源工具,可自动化移动开发的日常任务:构建应用程序、运行测试、创建截图、管理证书、将构建上传到TestFlight、App Store和Google Play。Fastlane用Ruby编写,通过RubyGems使用命令gem install fastlane分发。

Fastlane于2015年作为iOS工具出现,但很快扩展到Android。如今它是一个由数十个操作组成的生态系统——可以组合成称为lanes的场景的内置命令。每个lane执行特定任务:例如build_release构建发布版本,deploy_beta将构建上传到TestFlight。

Fastlane被Uber、Airbnb、Snapchat、Twitter和Shopify等公司使用。根据2024年的调查,超过60%的iOS开发者在其项目中使用Fastlane。该工具既支持本地运行,也支持与云CI系统集成,使其成为移动CI/CD的事实标准。

ruby
# 安装Fastlane
sudo gem install fastlane -NV

# 在项目中初始化
fastlane init

初始化后,Fastlane创建fastlane/目录,包含三个文件:Fastfile(场景)、Appfile(应用设置)和Matchfile(证书设置)。此结构对两个平台——iOS和Android——保持一致。

Fastfile和lanes

Fastlane的主要配置文件——Fastfile。它位于项目根目录的fastlane/文件夹中。Fastfile用Ruby编写:每个lane是一个带有操作序列的命名块。Lane可以接受参数、调用其他lanes并返回值。

ruby
# fastlane/Fastfile — iOS示例
default_platform(:ios)

platform :ios do
  desc "Build and upload to TestFlight"
  lane :beta do
    match(type: "appstore")
    gym(scheme: "MyApp", configuration: "Release")
    pilot(skip_waiting_for_build: true)
  end

  desc "Deploy to App Store"
  lane :release do
    ensure_git_status_clean
    match(type: "appstore")
    gym(scheme: "MyApp")
    deliver(
      skip_metadata: true,
      skip_screenshots: true
    )
    push_to_git_remote(tags: true)
  end
end

每个lane通过命令fastlane ios betafastlane ios release启动。Fastfile支持变量、条件、循环和调用外部脚本——它是一个完整的Ruby文件。开发者可以通过private_lane(本地方法)和从其他Fastfile import来重用代码。

Fastlane为大多数任务提供了超过200个内置操作。如果所需操作不存在,可以用Ruby编写自己的操作,或通过sh("...")调用shell命令。操作可以接受参数——构建设置、路径、访问令牌——并返回结果供下一步使用。

iOS构建自动化

Fastlane for iOS解决三个关键问题:管理证书和配置文件、通过Xcode构建IPA以及发布到App Store Connect和TestFlight。每个任务都由单独的操作覆盖。

match — 用于管理证书的操作。它将所有证书和配置文件存储在加密的Git仓库中。每个开发者和CI服务器使用相同的文件集,消除了冲突和证书过期问题。Match在添加新设备时自动更新配置文件。

sigh — 通过Apple Developer Portal创建和下载配置文件。当需要快速获取特定类型的配置文件时使用:development、ad-hoc或appstore。

gym — 构建IPA。Gym用最优参数封装xcodebuild,自动选择方案、配置、导出选项,并创建签名的IPA。示例:gym(scheme: "MyApp", export_method: "app-store")

pilot — 管理TestFlight。上传构建、添加测试人员、跟踪审核状态。deliver — 在App Store中完整发布,包括元数据、截图、价格和版本。

ruby
# 构建和发布iOS应用
lane :deploy_ios do
  cocoapods
  match(type: "appstore", readonly: true)
  gym(scheme: "MyApp", export_method: "app-store")
  pilot(changelog: "Bug fixes and performance improvements")
end

使用App Store Connect需要访问令牌。Fastlane支持两种认证方式:App Store Connect API密钥(推荐)和带有两步验证的Apple ID。API密钥更方便CI/CD使用,因为它们不需要交互式密码输入。

操作用途手动对应
match管理证书和配置文件Apple Developer Portal
sigh创建配置文件Xcode + Developer Portal
gym构建IPAxcodebuild + xcrun
pilot上传到TestFlightXcode Organizer
deliver在App Store发布App Store Connect Web
scan运行UI测试xcodebuild test

Android构建自动化

在Android上,Fastlane自动化通过Gradle构建、APK和AAB签名、上传到Google Play Console和Firebase App Distribution。

gradle — Android构建的主要操作。调用带有所需任务的Gradle wrapper:gradle(task: "assembleRelease")或对于AAB使用gradle(task: "bundleRelease")。可以传递标志、环境变量和gradle.properties的路径。

supply — 上传APK或AAB到Google Play Console。Supply管理版本、轨道(internal、alpha、beta、production)、发布说明、价格和分发国家。示例:supply(track: "beta", release_status: "completed")

screengrab — 为Google Play创建截图。运行仪器化测试,在不同设备和语言上截取应用屏幕截图。获得的截图通过supply上传。

ruby
# 构建和发布Android应用
lane :deploy_android do
  gradle(task: "clean bundleRelease")
  supply(
    track: "beta",
    release_status: "completed",
    version_code: 42
  )
end
操作用途手动对应
gradle通过Gradle构建./gradlew assembleRelease
supply上传到Google PlayGoogle Play Console Web
screengrab创建截图手动截图 + ImageMagick
firebase_app_distribution通过Firebase分发Firebase Console Upload

与CI/CD集成

Fastlane设计用于CI/CD流水线。它正确处理非交互模式、环境变量和构建产物。以下是与流行CI系统集成的示例。

GitHub Actions中,Fastlane作为Ruby脚本运行。典型工作流程:安装Ruby和Fastlane,配置密钥(证书、API令牌通过secrets),运行lane。iOS需要macOS运行器;Android在ubuntu-latest上运行。

GitLab CI中,Fastlane在.gitlab-ci.yml中使用,方案类似:安装依赖、运行fastlane、传递产物。GitLab CI支持macOS和Linux运行器。

Bitrise — 专为移动应用设计的CI/CD — 内置对Fastlane的支持。Bitrise Workflow可以调用Fastlane Step或使用fastlane运行任意脚本。Bitrise通过其自己的代码签名管理器管理证书。

ruby
# 带条件测试执行的CI/CD Fastfile
lane :ci_test do
  scan(scheme: "MyApp", code_coverage: true)
end

lane :ci_beta do
  ensure_git_status_clean
  version_bump_podspec(path: "MyApp.podspec")
  match(type: "appstore", readonly: true)
  gym(scheme: "MyApp", export_method: "app-store")
  pilot(distribute_external: true)
end

CI/CD集成的一个重要方面——秘密存储。Fastlane通过dotenv使用.env文件和环境变量。对于iOS,关键变量是:MATCH_PASSWORDFASTLANE_APPLE_API_KEYFASTLANE_APPLE_API_KEY_ID。对于Android:SUPPLY_JSON_KEY_DATA — Google Play服务账号的内容。

流行的Fastlane操作

Fastlane包含超过200个内置操作。以下是按平台和用途分类的最流行操作的概览。

操作平台描述
gymiOS使用优化的xcodebuild参数构建IPA
matchiOS通过Git同步证书和配置文件
pilotiOS上传构建到TestFlight并管理测试人员
deliveriOS在App Store发布应用并附带元数据
scaniOS运行单元和UI测试并生成报告
gradleAndroid运行Gradle任务:assemble、bundle、test
supplyAndroid上传APK和AAB到Google Play Console
screengrabAndroid为Google Play自动截图
firebase_app_distributionAndroid通过Firebase分发构建
snapshotiOS在模拟器上为App Store自动截图
increment_build_numberiOS在Xcode项目中自动增加构建号
appcenter_upload两者上传构建到App Center

要搜索所需操作,使用命令fastlane action [名称],它会显示文档、参数和示例。完整列表可在本地查看:fastlane actions

Fastlane还支持插件——添加新操作的社区扩展。插件通过fastlane add_plugin [名称]安装,并在RubyGems注册表中可用。流行插件的示例:fastlane-plugin-versioning(版本管理)、fastlane-plugin-sentry(将调试符号上传到Sentry)、fastlane-plugin-teams(Microsoft Teams中的通知)。

Frequently Asked Questions

Fastlane是什么,有什么用途?

Fastlane — 是用于移动应用构建和发布自动化的工具。它用于用一条命令替代手动操作——构建、签名、上传到商店。Fastlane将发布时间从几小时缩短到几分钟,并消除发布中的人为错误。

可以仅用于Android或仅用于iOS吗?

可以。Fastlane独立支持两个平台。iOS需要macOS,Android只需要Linux。在一个Fastfile中,可以按平台划分lanes:platform :ios do ... endplatform :android do ... end

Fastlane如何管理iOS证书?

通过match操作。它将加密的证书和配置文件存储在Git仓库中。每个开发者克隆仓库,match使用来自MATCH_PASSWORD变量的密码解密文件并将其安装到钥匙串中。这解决了"在我机器上能构建"的问题。

Fastlane是否支持Firebase App Distribution?

是的。Fastlane有内置的firebase_app_distribution操作用于将APK和IPA上传到Firebase App Distribution。还有firebase_app_distribution_add_testers用于添加测试人员。替代方案是用于App Center的appcenter_upload操作。

如何在CI服务器上安装Fastlane?

Fastlane通过RubyGems安装:gem install fastlane -NV。iOS需要带有Xcode的macOS;Android需要带有JDK和Android SDK的Linux或macOS。在GitHub Actions中,有现成的ruby/setup-ruby操作用于安装Ruby和Fastlane。环境变量通过CI系统的secrets传递。

Fastlane与Bitrise或Jenkins有什么区别?

Fastlane — 是用于构建和发布任务自动化的库和CLI。BitriseJenkins — 是完整的CI/CD平台。Fastlane在它们内部工作:Jenkins将Fastlane作为流水线步骤运行,Bitrise通过特殊的Step调用Fastlane。Fastlane不替换CI系统,而是用移动特性补充它。

Summary

  • Fastlane — 用于iOS和Android移动应用构建、测试和发布自动化的开源工具
  • Fastfile — 描述lanes(带有操作序列的场景)的Ruby配置文件
  • match + gym + pilot — iOS标准流水线:证书管理、构建IPA、上传到TestFlight
  • gradle + supply — Android标准流水线:通过Gradle构建、上传到Google Play Console
  • CI/CD集成 — Fastlane通过环境变量嵌入GitHub Actions、GitLab CI、Bitrise、Jenkins和CircleCI
  • 200多个操作 — 用于签名、构建、测试、截图、发布和通知的内置命令
  • 插件 — 添加新操作的社区扩展:版本管理、Sentry、即时通讯通知

我们将开发一款交钥匙移动应用程序

IT Sectr自2017年以来为初创企业和企业打造iOS和Android应用程序。我们将为您提供咨询并提出最佳解决方案。

讨论项目

另请阅读