Fastlane安装和使用和注意事项

Fastlane安装和使用参考博客://www.greatytc.com/p/840943eff17b
http://www.cocoachina.com/ios/20170519/19317.html

xcode-select --install

ruby -v查看ruby版本,要求2.0及以上版本

ruby的镜像文件路径改为https://gems.ruby-china.org/

gem sources --remove https://ruby.taobao.org/

gem sources --add https://rubygems.org

gem sources -l

安装:
sudo gem install fastlane -NV

配置fastlane:切换目录到包含xxx.xcodeproj的项目目录下输入
fastlane init
输出:

[15:21:56]: What would you like to use fastlane for?
1. 📸  Automate screenshots
2. 👩‍✈️  Automate beta distribution to TestFlight
3. 🚀  Automate App Store distribution
4. 🛠  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;

此时不关终端,过一会儿提示回车,看提示回车几次之后结束;

[15:37:00]: Continue by pressing Enter ⏎

[15:37:05]: ------------------------------
[15:37:05]: --- Where to go from here? ---
[15:37:05]: ------------------------------
[15:37:05]: 📸  Learn more about how to automatically generate localized App Store screenshots:
[15:37:05]:         https://docs.fastlane.tools/getting-started/ios/screenshots/
[15:37:05]: 👩‍✈️  Learn more about distribution to beta testing services:
[15:37:05]:         https://docs.fastlane.tools/getting-started/ios/beta-deployment/
[15:37:05]: 🚀  Learn more about how to automate the App Store release process:
[15:37:05]:         https://docs.fastlane.tools/getting-started/ios/appstore-deployment/
[15:37:05]: 👩‍⚕️  Lern more about how to setup code signing with fastlane
[15:37:05]:         https://docs.fastlane.tools/codesigning/getting-started/
[15:37:05]: 
[15:37:05]: To try your new fastlane setup, just enter and run
[15:37:05]: $ fastlane custom_lane
LYPC:dingdingbao 4 LYPC$ 

然后(二选一,可以使用命令bundle exec fastlane custom_lane代替fastlane custom_lane,这样会执行的更快):fastlane custom_lane
bundle exec fastlane custom_lane
输出:

[15:40:15]: ------------------------------
[15:40:15]: --- Step: default_platform ---
[15:40:15]: ------------------------------
[15:40:15]: Driving the lane 'ios custom_lane' 🚀

+------+------------------+-------------+
|           fastlane summary            |
+------+------------------+-------------+
| Step | Action           | Time (in s) |
+------+------------------+-------------+
| 1    | default_platform | 0           |
+------+------------------+-------------+

[15:40:15]: fastlane.tools finished successfully 🎉  这句表示执行成功
LYPC:dingdingbao 4 LYPC$ 

打开Fastfile文件:打包是最主要的一步fastlane中有专门用于编译、打包的命令gym,我们加到lane :custom_lane do后看看会不会有问题
export_method:可选的值有:app-store、ad-hoc、development、enterprise

根据提示来输入Apple ID(开发者账号 、密码也会让输入)及app_identifier(就是项目的bundle id)等信息
这期间我使用的是企业版(299$)的账号 登录不成功 不知道原因 难道企业版不能使用fastlane吗 换了一个99$账号 可以了.

出现下面的提示 没有问题你就输入 y:

Please confirm the above values (y/n)

然后去看路径下多出来的fastlane文件:

Appfile用来存放app_identifier,apple_id和team_id:
有多个的时候 可以for_lane这样添加多个;

app_identifier "com.aaa.aaa"
apple_id "aaa@aaa.com"
team_id "AAAAAAAAAA"
 
for_lane :inhouse do
  app_identifier "com.bbb.bbb"
  apple_id "bbb@bbb.com"
  team_id "AAAAAAAAAA"
end

Fastfile管理你所创建的 lane

* scan 自动化测试工具,很好的封装了 Unit Test
* sigh 针对于 iOS 项目开发证书和 Provision file 的下载工具
* match 同步团队每个人的证书和 Provision file 的超赞工具
* gym 针对于 iOS 编译打包生成 ipa 文件
* deliver 用于上传应用的二进制代码,应用截屏和元数据到 App Store
* snapshot 可以自动化iOS应用在每个设备上的本地化截屏过程

这个是查到的比较全的带解释的:

# 指定 fastlane 最小版本
fastlane_version "2.20.0"

# 指定当前平台,可以设置为 ios 、android、mac
default_platform :ios

platform :ios do

# 在执行每一个 lane 之前都先执行这个代码
  before_all do
  end

# 定义一个创建测试包的 lane
# 我们调用的命令就是调用 fastlane 的 lane
  lane :buildDebugApp do |op|
      # 根据输入的版本设置项目 version number (我们初始化 fastlane 的时候是在 .xcworkspace 目录下, 而我们的项目中 ,.xcworkspace 和 .xcodeproj 不在同一级目录,这里的“increment_version_number”需要检测 .xcodeproj 项目文件,所以需要指定该文件的目录)
    increment_version_number({xcodeproj: './HomeMate2_Trunk/HomeMate.xcodeproj', version_number: op[:version]})

    # 根据输入的版本设置项目 build number (同上,也是需要指定 .xcodeproj 的目录)
    increment_build_number({xcodeproj: './HomeMate2_Trunk/HomeMate.xcodeproj', build_number: op[:version]})

    # 最重要的打包命令
    gym(
              export_method: 'ad-hoc',        # 打包的方式,可设置为 appstore(默认),enterprise
                     scheme: "HomeMate",    # 指定需要打那个 scheme 的包
                  workspace: "HMWorkSpac.xcworkspace",    # 指定打包的项目文件
                output_name: "HomeMate.ipa",      # 打包输出名称
                     silent: true,    # 隐藏不必要信息
                      clean: true,    # 打包前是否 clean 项目
              configuration: "Debug",    # 配置为 debug 版本
              buildlog_path: "./fastlanelog",    # 日志输出目录
       codesigning_identity: "iPhone Developer: Hailiang He (xxxxxxxxxx)",       # 代码签名证书
           output_directory: "/Users/xxx/Desktop"     # ipa输出目录
     )
  end

  # 在执行每一个 lane 之后执行该功能
  after_all do |lane|
  end

  # 在执行每一个 lane 出错的时候执行该功能
  error do |lane, exception|
  end

end

————————分割线———————————
这个是我自己编辑好打包也成功的,贴出参考:

#需要的fastlane的最小版本,在每次执行之后会检查是否有新版本,如果有会在最后末尾追加新版本提醒
fastlane_version "2.30.1"
default_platform :ios
platform :ios do
  before_all do
  end
  lane :beta do |options|
  cocoapods
  build_app(export_method: "ad-hoc")
  pgyer(api_key: "3335fc51738d0e016e876f877dab041a", user_key: "69b1831d78c147766e643e8d4a006bb3")
  end

  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 buildDebugApp version:2.2.0
或者fastlane buildDebugApp
这个过程会需要一些时间, 如果是直接传到iTunes connect上 这个也会把版本号校验出来,提示你确定版本号的正确否。

执行结束后我们在当前目录下将会看到[ProductName].ipa文件。

报错:
[!] Add 'gem "cocoapods"' to your Gemfile and restart fastlane
修改Gemfild文件 里面的 gem 'fastlane' 为 gem "cocoapods"

报错: method `to_plist' not defined in Array
分别执行以下命令:rvm @global do gem uninstall fastlane
rvm all do gem uninstall fastlane
gem uninstall fastlane
gem install fastlane

然后在执行打包(成功则万事大吉)依旧报错的话:[08:50:55]: RubyGems is not listed as your Gem source
[08:50:55]: You can run gem sources to see all your sources
[08:50:55]: Please run the following command to fix this:
[08:50:55]: $ gem sources --add https://rubygems.org
更改gem源:gem sources查看当前是啥
修改:gem sources --add https://rubygems.org然后gem sources查看确认一下是否修改成功

重新执行打包:fastlane  buildDebugApp
成功后输出:
[09:07:26]: Upload success. Visit this URL to see: https://www.pgyer.com/6DFV

+------+---------------------+-------------+
|             fastlane summary             |
+------+---------------------+-------------+
| Step | Action              | Time (in s) |
+------+---------------------+-------------+
| 1    | Verifying fastlane  | 0           |
|      | version             |             |
| 2    | default_platform    | 0           |
| 3    | cocoapods           | 6           |
| 4    | build_app           | 187         |
| 5    | pgyer               | 17          |
+------+---------------------+-------------+

[09:07:26]: fastlane.tools finished successfully 🎉

#######################################################################
# fastlane 2.86.2 is available. You are on 2.86.1.
# You should use the latest version.
# Please update using `sudo gem install fastlane`.
#######################################################################

2.86.2 Fixes get_version_number to auto-select target when there is only one
* Fixes get_version_number to auto-select target when there is only one (#12121) via Josh Holtz

Please update using `sudo gem install fastlane`
LYPC:StarCar LYPC$ 
  • 企业版的fastlane打包,还未找到原因 总是Apple ID登录不成功!!!!如果有做成功的秋跪求指导。
    这中间历经磨难才调整好,现在回想起来也没那么坎坷,很容易就集成好了,各位看官有什么自己的想法和优秀建议 多多交流。
附上一个友情链接:
中间会遇到的情况 升级配置:
使用RVM也就是Ruby Version Manager,Ruby版本管理器来升级ruby,RVM包含了Ruby的版本管理和Gem库管理(gemset)
安装RVM: curl -L get.rvm.io | bash -s stable

source ~/.bashrc

source ~/.bash_profile

rvm -v

使用RVM升级Ruby
ruby -v

列出已知ruby的版本,会出现很多平台不同的ruby的版本, 找到自己需要的版本
rvm list known

rvm install 2.1.10

查询:rvm list
卸载:rvm remove 2.0.0


设置默认版本: rvm use 2.1.10 --default

ruby -v   看看版本有没有变化PS:首先说明一下,在这一步,需要按回车键,连续按几次,当然如果你没装xcode,需要先去装xcode,不然会报错,接下来愉快的使用ruby吧
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 198,932评论 5 466
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,554评论 2 375
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 145,894评论 0 328
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,442评论 1 268
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,347评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,899评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,325评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,980评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,196评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,163评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,085评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,826评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,389评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,501评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,753评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,171评论 2 344
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,616评论 2 339

推荐阅读更多精彩内容