Fastlane是一个开源工具,用于自动化构建、测试和发布iOS和Android应用程序。开发者无需手动执行十几个签名、构建和上传到商店的命令,而是在Fastfile中描述整个流程并通过一个命令启动。根据Fastlane Docs, 2025,该工具在全球超过150万个项目中使用。Fastlane整合了用于App Store Connect、Google Play Console和代码签名系统的实用程序。
要点
Fastlane是一个用于自动化移动构建的工具,使用Ruby编写并在MIT许可证下分发。它自动化移动开发人员的日常任务:构建应用程序、运行测试、创建截图、签名代码以及上传二进制文件到App Store或Google Play。无需15–20个手动命令,开发人员只需运行一个带有场景名称的fastlane命令。
Fastlane作为Xcode实用程序(xcodebuild、xcrun)和Android SDK(gradlew、apksigner、bundletool)的包装器,为两个平台提供统一接口。这对于维护同一应用的iOS和Android版本的团队尤其有价值——相同的Fastfile可以描述两个平台的构建,参数差异极小。
根据GitHub数据,Fastlane拥有超过39000颗星,是移动开发中的自动化标准。该工具得到社区和Google公司的支持——Fastlane已集成到Firebase中,作为将Android应用交付到Google Play Console的推荐方式。
Fastlane架构建立在三个层次上:actions(基本命令)、lanes(场景)和工具(专业化实用程序)。Actions是Fastlane的独立函数,每个执行特定操作:创建截图、构建IPA、上传到TestFlight。Lanes将多个actions组合成Fastfile中描述的连续场景。
Actions是Fastlane的构建块。每个action接收参数并执行一个任务。例如,gym action构建iOS应用程序,scan运行测试,pilot将构建上传到TestFlight。Fastlane共有超过200个内置actions,每个action的文档可通过fastlane action [名称]命令查看。
如果内置actions不够用,开发人员可以创建用Ruby编写的custom action并将其连接到Fastfile中。自定义actions通过Fastlane插件分发,这些插件在Rubygems上发布并通过项目根目录中的FastfilePlugin文件安装。
Lane是一个命名的自动化场景,将多个actions组合成逻辑序列。一个lane可以调用其他lanes(private lanes),传递参数和处理错误。这允许构建场景层次结构:基础构建lane、部署lane、完整CI/CD循环lane。
Fastlane包含一系列专业化工具,每个工具解决特定的移动自动化任务。工具作为actions在lanes内部或直接从命令行运行。让我们来看四个覆盖iOS和Android主要CI/CD需求的关键工具。
| 工具 | 用途 | 命令 |
|---|---|---|
| scan | 在iOS模拟器上运行Unit和UI测试 | fastlane scan |
| gym | 为iOS构建IPA或APP文件 | fastlane gym |
| match | 通过Git同步证书和配置文件 | fastlane match |
| deliver | 上传二进制文件和元数据到App Store Connect | fastlane deliver |
| snapshot | 在不同设备上自动生成截图 | fastlane snapshot |
Scan简化了Xcode测试的运行,自动选择合适的模拟器并格式化报告。Gym使用最佳编译标志构建应用,并支持针对不同构建类型(development、adhoc、appstore)的exportOptions.plist。Deliver允许不仅上传二进制文件,还可以通过单一元数据文件上传截图、描述、版本和价格。
Match工具值得特别关注——它解决了团队中iOS证书存储和同步的问题。Match加密证书和配置文件并将其存储在Git仓库中,开发人员在运行fastlane match时自动获取它们。这消除了每个工作台的手动配置。
Snapshot是一个用于在不同设备和语言上自动创建移动应用截图的工具。Snapshot在iOS模拟器上运行UI测试,在测试的每个步骤截取屏幕截图。结果保存在fastlane/screenshots目录中,可以通过deliver上传到App Store Connect。
对于Android,screengrab在Android模拟器上执行类似功能。两个工具都支持本地化——为每种语言创建截图,简化了在多语言应用商店发布材料的准备工作。
对于iOS项目,Fastlane通过Gemfile(安装gem fastlane)和fastlane目录中的Fastfile进行配置。初始配置通过fastlane init命令完成,该命令创建基本目录结构,请求App Store Connect数据,并生成包含基本lanes的Fastfile模板。
iOS的关键命令——fastlane match——必须首先执行以获取证书和配置文件。成功签名后,Fastlane可以构建应用程序(gym)、运行测试(scan)和上传二进制文件(pilot或deliver)。
# iOS应用程序的Fastfile
default_platform(:ios)
lane :build do
cocoapods
scan(scheme: 'App', devices: ['iPhone 15'])
gym(scheme: 'App', export_method: 'app-store')
end
lane :deploy do
match(type: 'appstore')
build
pilot(skip_waiting_for_build_processing: true)
slack(message: '新版本已上传到TestFlight')
end
要使用TestFlight,请使用pilot action——它上传IPA并管理测试人员。Fastlane支持upload_to_testflight(pilot的同义词)并自动处理等待Apple处理构建,这可能需要5到30分钟。
对于Android项目,Fastlane的配置类似,但使用Gradle和Android SDK代替Xcode工具。Fastlane for Android支持构建APK和AAB,通过apksigner或jarsigner签名,运行仪器测试以及通过Supply action上传到Google Play Console。
主要区别——Android构建不需要通过match管理证书(Android签名通过单独存储的Keystore管理)。Fastlane for Android使用gradle action运行任何Gradle任务,使用supply action与Google Play交互。
# Android应用程序的Fastfile
default_platform(:android)
lane :build do
gradle(task: 'clean assembleRelease')
gradle(task: 'testReleaseUnitTest')
end
lane :deploy do
build
supply(
track: 'internal',
aab: 'app/build/outputs/bundle/release/app-release.aab'
)
end
要使用Google Play Console,需要具有Google Play API访问权限的Google Cloud服务账号。Fastlane通过环境变量SUPPLY_JSON_KEY或supply action中的json_key参数接收服务账号的JSON密钥。发布轨道可以是internal、alpha、beta或production。
Fastlane可以与任何能够运行Ruby脚本的CI/CD系统集成:Jenkins、Travis CI、GitHub Actions、GitLab CI、Bitrise和CircleCI。集成包括安装gem fastlane并在管道的script阶段运行fastlane [lane_name]命令。
对于CI/CD,设置环境变量以存储敏感数据非常重要:MATCH_PASSWORD(证书加密密码)、FASTLANE_USER(Apple ID)、FASTLANE_PASSWORD(Apple ID密码)。在Travis CI中,变量通过travis encrypt加密,在GitHub Actions中——通过Secrets repository。
推荐做法——在CI/CD中使用带有readonly标志的fastlane match,以防止意外更改证书仓库。对于Android,使用Base64编码并保存在环境变量中的Keystore,在before_install阶段解密并保存到临时文件。
Fastlane Match是一个用于自动化管理iOS证书和配置文件的工具,是Fastlane对团队最有价值的功能之一。Match创建一个加密的Git仓库(或使用现有仓库),其中存储所有证书和配置文件,并在开发人员和CI/CD服务器之间同步它们。
Match支持五种配置文件类型:development、adhoc、appstore、enterprise和developer_id。每种类型存储在仓库内的单独目录中。fastlane match development命令在本地机器上安装开发证书,fastlane match appstore安装用于CI构建的App Store配置文件。
# 在Fastfile中使用Match
lane :setup_signing do
match(
type: 'appstore',
readonly: true,
git_branch: 'main'
)
end
lane :update_profiles do
match(
type: 'development',
force: true,
app_identifier: ['com.example.app', 'com.example.app.watchkitapp']
)
end
Match的安全性通过在提交到Git之前加密所有文件来保证。加密密码通过环境变量MATCH_PASSWORD设置,并且必须对团队所有成员相同。Match使用OpenSSL进行加密,并且不以明文形式在仓库中存储密码。
常见问题
Fastlane是一个用于iOS和Android应用程序的开源自动化工具。它通过一个配置文件Fastfile和一套内置工具自动化构建、测试、代码签名以及交付到App Store和Google Play。
Fastlane的主要工具:scan(测试)、gym(iOS构建)、match(证书)、deliver(App Store)、pilot(TestFlight)、snapshot(截图)、supply(Google Play)和frameit(截图边框)。每个工具可以作为lane内的action或从命令行使用。
安装gem fastlane,在项目根目录中运行fastlane init。配置包含构建(gym)和测试(scan)lanes的Fastfile。设置Match通过Git仓库管理证书。添加带pilot或deliver的部署lane用于上传到App Store Connect。
使用包名运行fastlane init。使用gradle action运行Gradle任务(assembleRelease、testReleaseUnitTest)。通过环境变量配置Keystore。使用supply action将AAB或APK上传到Google Play Console的所需轨道。
在CI/CD服务器上安装gem fastlane并在管道的script阶段添加fastlane [lane_name]命令。在CI/CD密钥变量中设置FASTLANE_USER、FASTLANE_PASSWORD和MATCH_PASSWORD环境变量。在CI中使用match readonly以避免意外更改证书。
总结
我们将开发一款交钥匙移动应用程序
IT Sectr自2017年以来为初创企业和企业打造iOS和Android应用程序。我们将为您提供咨询并提出最佳解决方案。