Fastlane官网 Fastlane官方文档 Fastlane Github地址
摘要 Fastlane 是一个完全开源的项目,是一款为 iOS 和 Android 开发者提供的自动化构建工具,它可以帮助开发者将 App 打包、签名、测试、发布、信息整理、提交 App Store 等工作完整的连接起来,实现完全自动化的工作流。
安装 安装fastlane之前需要安装一些前置软件包。
安装Homebrew 安装具体步骤可参考文章:Mac包管理工具-Homebrew
Ruby 首先mac系统会自带一个ruby版本。 通过如下命令查看ruby版本:
如果ruby版本过低可通过以下命令安装指定版本ruby环境:
安装完成后需要配置环境变量。国内的话需要替换gem source,替换为 gems.ruby-china.com。 查看gem source命令如下:
安装xcode命令行工具 执行如下命令:
如果安装过会有提示,如果没装过就会自动开始安装。一般你如果安装了xcode,并且打开过,都会提示已安装。
安装fastlane 安装fastlane有两种方式。 第一种是通过gem安装:
1 sudo gem install -n /usr/local/bin fastlane
第二种是通过Homebrew安装:
推荐第二种。 安装完成后可通过如下命令查看版本,可以正常输出版本信息及安装成功:
安装pgyer插件 如果使用的是pgyer作为分发平台,需要安装插件:
1 fastlane add_plugin pgyer
iOS setup 初始化 打开终端,cd到iOS项目根目录(xcodeproj 的同级目录),输入:
根据提示选择或者输入对应信息,会要求你输入apple id账号。初始化完成后项目目录下会出现新的文件夹/fastlane
,其中 Appfile 里面存放了 App 的基本信息包括 App_Identifier 、AppID 、Team_ID 等,Fastfile 是最重要的一个文件,在这个文件里面可以编写和定制我们打包脚本的一个文件,所有自定义的功能都写在这里。
配置Fastfile 打开并编辑Fastfile文件。 根据需求修改下方配置,并将其粘贴进Fastfile。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 default_platform(:ios) platform :ios do desc "以 development 方式打包并上传到蒲公英" lane :test_pgyer do puts "以 development 方式打包" gym( # 指定打包所使用的输出方式 (可选: app-store, package, ad-hoc, enterprise, development) export_method: "development", # 指定项目的 scheme 名称 scheme: "xxx", # 指定输出的文件夹地址 output_directory: "./archive/test_pgyer/" + Time.new.strftime("%Y-%m-%d-%H:%M:%S"), ) puts "上传 ipa 包到蒲公英" pgyer( # 蒲公英 API KEY api_key: "xxx", # 蒲公英 USER KEY(最新版本不需要配置user_key了) # user_key: "xxx" ) end desc "以 ad-hoc 方式打包并上传到蒲公英" lane :beta do puts "自动生成 Provisioning Profiles 文件" sigh( # 指定输出的文件夹地址 output_path: "./archive/sign", # 是否为 AdHoc 证书(设为 false 或不写默认为 AppStore 证书) adhoc: true ) puts "以 ad-hoc 方式打包" gym( # 指定打包所使用的输出方式 (可选: app-store, package, ad-hoc, enterprise, development) export_method: "ad-hoc", # 指定项目的 scheme 名称 scheme: "xxx", # 指定输出的文件夹地址 output_directory: "./archive/beta/" + Time.new.strftime("%Y-%m-%d-%H:%M:%S"), # 指定打包方式 (可选: Release, Debug) configuration: "Release" ) puts "上传 ipa 包到蒲公英" pgyer( # 蒲公英 API KEY api_key: "xxx", # 蒲公英 USER KEY(最新版本不需要配置user_key了) # user_key: "xxx" ) end desc "以 app-store 方式打包并上传到 iTunes Connect" lane :release do puts "自动生成 Provisioning Profiles 文件" sigh( # 指定输出的文件夹地址 output_path: "./archive/sign" ) puts "以 app-store 方式打包" gym( # 指定打包所使用的输出方式 (可选: app-store, package, ad-hoc, enterprise, development) export_method: "app-store", # 指定项目的 scheme 名称 scheme: "xxx", # 指定输出的文件夹地址 output_directory: "./archive/release/" + Time.new.strftime("%Y-%m-%d-%H:%M:%S"), # 指定打包方式 (可选: Release, Debug) configuration: "Release" ) puts "上传 ipa 包到 iTunes Connect" deliver( # 跳过截图上传 skip_screenshots: true, # 跳过元数据上传 skip_metadata: true, # 跳过审核直接上传 force: true ) end end
打包 打开终端,cd到项目根目录,自动打包并上传至pgyer:
自动打包并上传至App connect:
Android setup 安装获取应用版本的 Fastlane 插件 1 fastlane add_plugin android_versioning
初始化 打开终端,cd到Android项目根目录,输入:
根据提示选择或者输入对应信息,需要输入package name,初始化完成后项目目录下会出现新的文件夹/fastlane
,其中 Appfile 里面存放了 App 的基本信息,Fastfile 是最重要的一个文件,在这个文件里面可以编写和定制我们打包脚本的一个文件,所有自定义的功能都写在这里。
配置Fastfile 打开并编辑Fastfile文件。 根据需求修改下方配置,并将其粘贴进Fastfile。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 default_platform(:android) platform :android do lane:beta do #从蒲公英平台拿到的api_key和user_key #api_key = "xxx" #user_key = "xxx" puts "开始打包xxxdebug版本" # 开始打包 gradle(task:'clean') gradle( task: 'assemble', build_type: 'Debug', ) puts "xxx打包成功" #puts "开始上传到蒲公英" #开始上传ipa到蒲公英,这里用的是蒲公英提供的插件 #update_description代表更新信息,password代表安装密码 #pgyer(update_description: "#{desc}", api_key: "#{api_key}", password: "123456", install_type: "2") #puts "上传到蒲公英成功" #在上传完apk后,打开apk的存放文件夹,起到提示上传完成的作用 #system "open /User/wangchang/Desktop/defaultFlavor/debug" end lane:release do #从蒲公英平台拿到的api_key和user_key #api_key = "xxx" #user_key = "xxx" #输入蒲公英上传apk包后输入的版本描述信息 #puts "请输入版本描述:" #desc = STDIN.gets puts "开始打包xxxrelease版本" # 开始打包 gradle(task:'clean') gradle( task: 'assemble', build_type: 'Release', ) puts "xxx打包成功" #puts "开始上传到蒲公英" #开始上传ipa到蒲公英,这里用的是蒲公英提供的插件 #update_description代表更新信息,password代表安装密码 #pgyer(update_description: "#{desc}", api_key: "#{api_key}", password: "123456", install_type: "2") #puts "上传到蒲公英成功" #在上传完apk后,打开apk的存放文件夹,起到提示上传完成的作用 #system "open /User/wangchang/Desktop/defaultFlavor/debug" end end
fastlane打Android渠道包 首先,我们自定义一个 Action:add_channels_to_apk,这个 Action 的作用就是: 拷贝最终打包生成的 apk 文件,并修改文件名为渠道名,如 gengmei_qq_630.apk 然后将一个渠道名写入到 apk 文件的 META-INFO 目录中 其次,新建一个 txt 文件,里面写入所有需要打包的渠道名,如:QQ,360,Baidu…等等,渠道名之间用逗号隔开。 最后,在 Fastfile 中定义一个 Lane 来进行最终的集成处理:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 desc "Package a new app version with different channels" lane :do_package_apk do |options| project = "#{options[:project]}" target_version = options[:version] hipchat(message: "Start package #{project} at version #{target_version}") git_pull gradle(task: "clean") gradle(task: "assembleRelease") add_channels_to_apk(channels: './channels.txt') hipchat(message: "Deliver app #{project} successfully!") end
然后执行如下的命令打包:
1 fastlane do_package_apk project:Gengmei version:7.0.0
Fastlane常用命令
命令
说明
fastlane actions
展示所有有效action列表
fastlane action [action_name]
展示一个action的详细说明,使用方法等
fastlane lanes
展示fastfile中的所有lane
fastlane list
展示fastfile中的所有的有效的lane
fastlane new_action
创建一个新的action
fastlane env
打印fastlane、ruby环境,一般提bug到issue的时候会要求提供