前言
Fastlane 是一款为 iOS 和 Android 开发者提供的自动化构建工具,它可以帮助开发者将 App 打包、签名、测试、发布、信息整理、提交 App Store 等工作完整的连接起来,实现完全自动化的工作流,如果使用得当,可以显著的提高开发者的开发效率。
前置条件
安装fastlane之前,我们得安装ruby,因为fastlane使用ruby语言写的,
安装ruby前,我们要先安装一个mac软件包管理工具Homebrew。
一.控制台安装命令安装ruby
brew install ruby
二.安装fastlane,使用控制器安装命令:
gem install fastlane -NV
如果安装错误提示 提示没有写入权限
ERROR: While executing gem … (Gem::FilePermissionError) You don’t have write permissions for the /
在命令前面添加sudo
sudo gem install fastlane -NV
安装成功输入fastlane --version看是否有版本号显示
三.初始化fastlane
输入命令fastlane init
输入命令fastlane init会看到如下选项
What would you like to use fastlane for?
- Automate screenshots
- Automate beta distribution to TestFlight
- Automate App Store distribution
- Manual setup - manually setup your project to automate your tasks
对应如下
1.自动截屏。这个功能能帮我们自动截取APP中的截图,并添加手机边框(如果需要的话),我们这里不选择这个选项,因为我们的项目已经有图片了,不需要这里截屏。
2.自动发布beta版本用于TestFlight,如果大家有对TestFlight不了解的,可以参考王巍写的这篇文章
3自动的App Store发布包。我们的目标是要提交审核到APP Store,按道理应该选这个,但这里我们先不选,因为选择了以后会需要输入用户名密码,以及下载meta信息,需要花费一定时间,这些数据我们可以后期进行配置。
4手动设置。
选择第四个后一路回车即可,我们会看到生成了我们熟悉的fastlane目录,该目录下包含了Appfile和Fastfile。我们打开这两个文件。
因为我们是需要打包上传到蒲公英,所以选4
初始化成功会在项目目录下生成如下文件
Appfile 配置工程AppID和AppleID(开发者账号)
- #app_identifier("[[APP_IDENTIFIER]]") # The bundle identifier of your app
-
apple_id("[[APPLE_ID]]") # Your Apple email address # apple_id("[[APPLE_ID]]") # Your Apple email address
Fastfile 管理工程的lane的各个action,可以看成设置的任务流程
四.安装Xcode命令行工具:
打开终端执行:xcode-select --install
五.安装蒲公英的 Fastlane 插件
在终端中,输入以下命令,即可安装蒲公英的 fastlane 插件。
fastlane add_plugin pgyer
打开终端进入项目根目录下 输入fastlane add_plugin pgyer ,否者后面上传蒲公英会报错
Fastfile打包文件修改
下面是一个最简单的Fastfile打包文件
六.打开终端进入项目所在目录执行
fastlane develop 即可打包上传到蒲公英
上传成功显示如下
lane :inhouse do
以下两个action来自fastlane-plugin-versioning,
第一个递增 Build,第二个设定Version。
如果你有多个target,就必须指定target的值,否则它会直接找找到的第一个plist修改
increment_build_number_in_plist(target: 'FastlaneTest')
increment_version_number_in_plist(
target: 'FastlaneTest',
version_number: '1.0'
)
# gym用来编译ipa
gym(scheme: 'FastlaneTest',#打包scheme
export_method:"enterprise",#打包类型app-store, ad-hoc, enterprise, development
output_directory: "./build",#ipa打包存放路径
output_name: 'inhouse.ipa'#ipa名称
)
end