Mac---fastlane安装使用说明

一、环境检测

点此处跳转到官网说明

因为fastlane是ruby书写的,所以需要检测当前ruby的版本, 需要保证ruby的版本在2.0以上,在终端输入以下命令:

$: ruby -v (# or  `ruby --version`)

如果ruby低于2.0.需要进行以下步骤:

$:rvm remove versionNumber (#versionNumber是通过上述命令得出的当前Mac的ruby版本号)
$:rvm list known  (#列出已知可用的ruby版本号)
$:rvm install  versionNumber (#versionNumber是需要安装的ruby版本号)

二、fastlane配置

  1. 需要安装Xcode,命令行安装需要执行终端输入:
xcode-select --install
  1. 继续安装fastlane,有两种方式,第一种通过RubyGems安装:
sudo gem install fastlane -NV

第二种通过HomeBrew:

brew cask install fastlane
  1. set up Environment variables(配置环境参数) , 此时显示mac系统的隐藏文件,同事点按cmd + shift + . 三个按钮,显示user级别下的隐藏文件,找到 .bash_profile进行编辑。

<1> 可以通过拖动此文件到快捷栏上的Xcode图标上会自己打开,也可以通过终端vi .bash_profile来进行编辑。编辑方式在此文件中添加以下配置(同事附上官网说明fastlane requires some environment variables set up to run correctly. In particular, having your locale not set to a UTF-8 locale will cause issues with building and uploading your build. In your shell profile add the following lines):

export LC_ALL=en_US.UTF-8

export LANG=en_US.UTF-8

引自官网原文:You can find your shell profile at ~/.bashrc, ~/.bash_profile, ~/.profile or ~/.zshrc depending on your system.

<2>: 新买的电脑是没有.bash_profile文件(本人电脑就是如此,惊了一瞬),这种情况需要手动创建bash_profile文件,终端cd到macUser(用户名)文件下(或者直接打开或者command+T另开一个终端界面),逐步输入以下命令:

$: touch .bash_profile
$:vi .bash_profile (#也可使用open .bash_profile)

打开bash_profile后,添加<1>中的命令。

4,使用Gemfile

其实这步不用,管网给出的文档说,Gemfile是通过需要手动终端输入命令生成的,但是fastlane init之后显示是直接连带生成,其中给出了两句代码如下:

source "[https://rubygems.org](https://rubygems.org/)"

gem "fastlane"

(禁不住吐槽了,官网也是坑啊,坑了大约估计1-2个小时左右,百度bing搜索有说,把source换成淘宝的镜像https://ruby.taobao.org/,在此还有一个可能就是代理原因导致的坑吧,也可能有其他未在认知内的坑吧,稍后说什么坑,若不是思维敏捷测试,脑壳痛到头发根)

三、项目中使用自动化打.ipa包

1,对于fastlane配置好之后,可以开始对工程目录进行使用。

cd到对应的项目工程下,继续终端输入:

fastlane init

会看到生成至少包含fastfile和Appfile的fastlane文件和Gemfile文件。其中会出现4个选项,1-2-3会涉及到需要登录账号和密码操作,本人是p12授权操作,因为作为team成员,不需要密码。p12文件含有打企业包所需要的描述文件。

Appfile: 用来存储一些公共信息,比如app_identifierapple_idteam_iditc_team_id等。

fastfile: 用来定义所有的lane任务。

Gemfile: 目前没有配置过,在出现不少error和issue后的搜索感觉是管理fastlane的工具。

2, 对fastlane进行任务定义coding。

默认是iOS平台,输入命令可以修改。

默认的生成的fastlane模板是:

default_platform(:ios)

platform :ios do

  desc "Description of what the lane does"

  lane :custom_lane do

    # add actions here: [https://docs.fastlane.tools/actions](https://docs.fastlane.tools/actions)

  end

end

custom_lane即如函数名一样,终端输入fastlane custom_lane即可执行此lane当前最小定义域内do{...}end中的行为。

<1>: 定义lane。

>>>get_certificates #获取证书

>>>get_provisioning_profile #获取描述文件

>>>sigh(adhoc:false)

>>>build_app(workspace: "Sakura.xcworkspace", scheme: "Sakura") //假如你使用了cocoapod

>>>upload_to_app_store(skip_metadata: true, skip_screenshots: true) //上传到appStore

>>>changelog = prompt(

             text: "Changelog: ",///提交change的日志信息

            multi_line_end_keyword: "END",///当想结束本次信息输入时,输入END点按Enter键即可

    )

>>>upload_to_testflight(changelog: changelog) //上传到testflight进行测试

eg:  upload_to_testflight(changelog: "Add rocket emoji")

eg: upload_to_testflight(skip_waiting_for_build_processing: true) 

      skip the "Waiting for processing" of the binary

      While this will speed up your build, it will not distribute

      the binary to your tests, nor set a changelog

通过以下命令,可以实现在p12授权的情况下,进行自动打.ipa包,这里以Sakura为例

>>>build_app(

        workspace: "Sakura.xcworkspace", #使用了cocoapod就需要有workspace了

        scheme: "Sakura",   #工程下要打包的项目,如果一个工程有多个项目则用[项目1,项目2]

        configuration: "Release",              # Debug or Release

        clean: true,                           #清空上次打包信息

        export_method:"enterprise",        # app-store, ad-hoc, package, enterprise, development, developer-id

        output_directory: './build',  #指定ipa最后输出的目录

        output_name: "Sakura.ipa",

//export_xcargs: "-allowProvisioningUpdates",  

        export_options: {

            provisioningProfiles: {

                "当前scheme对应的target工程的bundle id" => "当前scheme所对应的profile描述文件",

            }

        }

    )

>>>enable_automatic_code_signing(path: "Sakura.xcworkspace") //开启自动签名

四、fastlane添加插件

1,搜索插件,可以通过以下命令(默认是在当前工程目录下,以firim为例):

$:fastlane search_plugins fir

实际的要安装的插件是firim,因此搜索的结果会展示多个包含多个fir的插件名,当看到firim的时候,可以锚定即是它(fir.im)。

2,添加插件

$:fastlane add_plugin  firim

在这一步,会出现以下错误:

An error occurred while installing unf_ext (0.0.7.6), and Bundler cannot
continue.
Make sure that `gem install unf_ext -v '0.0.7.6'` succeeds before bundling.

把Gemfile文件的source注释即可。

3,在fastlane中添加插件命令

上传ipa到fir.im服务器,在fir.im获取firim_api_token

firim(firim_api_token: '123456fdedftyuioopa9988hnai9')

如果是上传到蒲公英,需要再蒲公英获取api_key和userKey(登录成功,点击Api信息)

pgyer(api_key: "2bd73d92030", user_key: "f0c61905ed")

五、查询更多参数

当已知的某个ruby命令中参数不能够功能时,可以使用

 fastlane action **** 
//such as 'upload_to_testflight', to get a list of all available options
fastlane action upload_to_testflight

"当前scheme所对应的profile描述文件名"指当前工程在打包的时候非自动配置时需要选择的此profile文件。

一个项目在发布时,bundleid对应的Provisioning Profiles会存在多个,有效即可。

当选择Automatically manage signing的时候,需要cd到~/Library/Mobile Device/profile文件夹中找对应有效的描述文件。

如果一个工程中存在多个target会有多个Provisioning Profiles同时存在。则需要在fastlane文件定义环境变量或手动切换进行选择Provisioning Profiles。

你可能感兴趣的:(Mac---fastlane安装使用说明)