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( export_method: "development" , scheme: "xxx" , output_directory: "./archive/test_pgyer/" + Time.new.strftime("%Y-%m-%d-%H:%M:%S" ), ) puts "上传 ipa 包到蒲公英" pgyer( api_key: "xxx" , ) end desc "以 ad-hoc 方式打包并上传到蒲公英" lane :beta do puts "自动生成 Provisioning Profiles 文件" sigh( output_path: "./archive/sign" , adhoc: true ) puts "以 ad-hoc 方式打包" gym( export_method: "ad-hoc" , scheme: "xxx" , output_directory: "./archive/beta/" + Time.new.strftime("%Y-%m-%d-%H:%M:%S" ), configuration: "Release" ) puts "上传 ipa 包到蒲公英" pgyer( api_key: "xxx" , ) end desc "以 app-store 方式打包并上传到 iTunes Connect" lane :release do puts "自动生成 Provisioning Profiles 文件" sigh( output_path: "./archive/sign" ) puts "以 app-store 方式打包" gym( export_method: "app-store" , scheme: "xxx" , output_directory: "./archive/release/" + Time.new.strftime("%Y-%m-%d-%H:%M:%S" ), 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的时候会要求提供