iOS Fastlane使用实例


一:Fastlane 安装准备工作

一、安装xcode命令行工具

xcode-select --install

如果没有安装,会弹出对话框,点击安装。如果提示xcode-select: error: command line tools are already installed, use "Software Update" to install updates表示已经安装

二、安装Fastlane

1.Homebrew安装:

brew cask install fastlane

2.安装程序脚本下载zip文件。然后双击install脚本(或在终端窗口中运行)。

3.RubyGems 带有Ruby版本> 2.0.0 

gem install fastlane -NV

安装完了执行下方命令,确认下是否安装完成和当前使用的版本号。

fastlane --version

二:Fastlane 安装初始化

一、初始化Fastlane

cd到你的项目目录执行 

fastlane init

成功后会出现如下,根据你的需求,选择下方的一个继续:

我这里选的是3,

1.下一步需要登录开发者账号,输入账号密码后

2.验证当前应用identifier是否已在App Store中存在,如果没有的话,会进一步提示你创建App名称...然后自动帮你创建,如果已有的话,那会节省很多时间,也可以避免很多问题

一切正确无误后,初始化成功后会在当前工程目录生成一个fastlane文件夹,文件目录为下:

文件名描述

Appfile 从Apple Developer Portal 获取和项目相关的信息 详情

Fastfile 核心文件,存放lane任务

Deliverfile  deliver的配置文件,从 iTunes Connect 获取和项目相关的信息详细

metadata 同步iTunes Connect中的元数据

screenshots 同步iTunes Connect中的截图

Fastfile是我们最应该关注的文件,也是我们的工作文件。这样第二步总算是完成了,接下来第三步就是配置Fastfile文件

三:Fastfile文件配置(示例)

关于fastfile:

里面存放了很多lane,每个lane相当于按顺序执行的工作流。每个lane可以存放多个action,action可以看做具体的执行动作

生命周期:

1 before_all 在执行 lane 之前只执行一次

2 before_each 每次执行 lane 之前都会执行一次

3 lane 自定义的任务

4 after_each 每次执行 lane 之后都会执行一次

5 after_all 在执行 lane 成功结束之后执行一次

6 error 在执行上述情况任意环境报错都会中止并执行一次

任务

desc  #false 可多次使用打到换行的目的

name   #true 符号化的方法名

options   #false 返回 Hash 类型

task   #true  参考ruby的方法代码且支持 ruby 代码


default_platform(:ios)

#声明

    k_app_name = "ABC"

    k_workspace = "GameTrade.xcworkspace"

    k_scheme_name = "GameTrade"

    k_ipa_time = Time.now.strftime("%Y%m%d_%H%M")

    k_output_directory = "packages"

    k_app_info_plist_path = './GameTrade/Info.plist'

    k_export_method = ""

    k_env_prefix = ""

    k_ipa_name = ""

platform :ios do

  before_all do

    # ENV["SLACK_URL"] = "https://hooks.slack.com/services/..."

  end

#debug包

  lane :debug_package do

    k_env_prefix ="debug_"

    k_export_method = "development"

    package(configuration: "Debug")

  end

#release包

  lane :release_package do

    k_env_prefix ="adhoc_"

    k_export_method = "ad-hoc"

    package(configuration: "Release")

    pgyer(api_key: "2455364b6a08c261b84cfbe7fff55fba", user_key: "ad18b738e7854bf3c689ecfe71f1b7a5", update_description: "update by fastlane")#蒲公英设置查看key

  end

#发布包 "Push a new release build to the App Store"

  lane :appstore_package do

    k_env_prefix ="appstore_"

    k_export_method = "app-store"

    package(configuration: "Release")

  end

#打包函数 desc "打包到pgy"

  lane :package do |options|

    #自动增加build

    increment_build_number

    #获取version和build版本号

    k_version = get_info_plist_value(path: "./#{k_scheme_name}/Info.plist", key: "CFBundleShortVersionString")

    k_build = get_info_plist_value(path: "./#{k_scheme_name}/Info.plist", key: "CFBundleVersion")

    k_ipa_name = "#{k_env_prefix}" + "#{k_app_name}_"  +  "#{k_ipa_time}_" + "#{k_version}" +"_#{k_build}"+ ".ipa"

    gym(

      clean:true, #打包前clean项目

      workspace: "#{k_workspace}",

      scheme: "#{k_scheme_name}", #scheme

      configuration: options[:configuration],#环境 Debug,Release

      export_method: "#{k_export_method}", #导出方式:app-store,ad-hoc,enterprise,development

      output_directory: "#{k_output_directory}", #"./ipa",#ipa的存放目录

      output_name: "#{k_ipa_name}", #输出ipa的文件名为当前的build号

      silent: true, #隐藏没有必要的信息

      include_symbols: true,

      include_bitcode: true,

      export_xcargs: "-allowProvisioningUpdates" #Xcode9 默认不允许访问钥匙串的内容,必须要设置此项才可以,运行过程可能会提示是否允许访问钥匙串,需要输入电脑密码

    )

    xcclean(

      workspace: "#{k_workspace}",

      scheme: "#{k_scheme_name}"

    )

  end

  #执行lane成功后的回调

  after_all do |lane|

    slack(

      message: "Successfully deployed new App Update."

    )

  end

  # 如果流程发生异常会走这里并终止

  error do |lane, exception|

    slack(

      message: exception.message,

      success: false

    )

  end

end

四:Fastlane 插件安装(更多插件)

蒲公英插件安装

插件安装成功fastlane目录下会生成Pluginfile的一个文件。插件安装不成功,就是fastlane安装的有问题。

五:发布

执行fastlane release_package 成功后,如下图:

蒲公英插件发布的ad-hoc测试包

你可能感兴趣的:(iOS Fastlane使用实例)