fastlane自动化打包-iOS

  • 终端判断是否安装了ruby(参考文章讲版本要大于2.0.0)

$ ruby -v
Snip20190702_1.png
  • 检查ruby源

    gem sources
    
    Snip20190702_2.png
    • 如果需要更换ruby源
      • 先移除当前ruby源
      gem sources --remove https://gems.ruby-china.org/
      
      • 添加新的ruby源
      gem sources -a https://rubygems.org/
      
      • 再次查看ruby源 就更换为最新的了
      gem sources
      
      Snip20190702_3.png
    • 如果ruby版本过低 可以升级
gem update --system
  • 确认是否安装了Xcode命令行工具

    xcode-select --install
    
    • 如果出现以下情况 则代表已经安装
      Snip20190702_4.png
    • 若出现以下情况 点击【安装】就可
      Snip20190702_5.png
  • 安装fastlane

    gem install fastlane -NV
    
    • 使用[gem install fastlane -NV]命令 若出现如下报错:
    You don't have write permissions for the /Library/Ruby/Gems/2.3.0 directory.
    
    更换以下命令
    sudo gem install fastlane -NV -n /usr/local/bin
    
    • 根据网络状况,等待命令全部执行完毕后 看到如下提示安装成功
      Snip20190702_6.png
  • 配置fastlane

    cd 项目目录
    fastlane init
    
    • 终端框中会出现4种选项 这里我选择的是4
    • 参考说出现以下表明成功
      屏幕快照 2019-07-02 21.01.50.png
      但是我等了好久 终端框没见动静 关闭了终端框 然后重新打开终端框后仍输入
    fastlane init
    
    终端框出现了如上所示图片中内容。
    这时查看你的iOS工程可看到比原先多出了一些文件
屏幕快照 2019-07-02 21.06.16.png
  • 打包上传到蒲公英

    • 安装蒲公英插件
    fastlane add_plugin pgyer
    
    WechatIMG9.png
    等待几分钟后 输入了两次开机密码后 提示成功
    WechatIMG10.png
    • 修改Fastfile 内容
      • 打开自动生成的Fastfile文件
    vim ./fastlane/Fastfile
    
    然后可以看到
    WechatIMG6.png
    用文本编辑方式打开 并修改相应内容
# This file contains the fastlane.tools configuration
# You can find the documentation at https://docs.fastlane.tools
#
# For a list of all available actions, check out
#
#     https://docs.fastlane.tools/actions
#
# For a list of all available plugins, check out
#
#     https://docs.fastlane.tools/plugins/available-plugins
#

# Uncomment the line if you want fastlane to automatically update itself
# update_fastlane

default_platform(:ios)

platform :ios do
  desc "上传蒲公英"
  lane :TestPgyer do #TestPgyer 为lane 名称,只要和后面的lane保持一致即可,我们执行时就是执行这个方法
  scheme_name = "xxx"
  #导出路径  我们可以桌面创建IPA_Info(没有的话会自动创建,名字可自定义) 文件夹来集中管理生成的ipa等文件
  output_directory = "/Users/luckycodercai/Desktop/IPA_Info"
    # add actions here: https://docs.fastlane.tools/actions
  #导出名称 
  output_name = "#{scheme_name}_#{Time.now.strftime('Pgyer%Y%m%d%H%M%S')}.ipa"
  gym(
    export_method: "development", #这里填写导出方式 ad-hoc、enterprise、app-store  
    #Xcode 9 默认不允许访问钥匙串的内容,必须要设置此项才可以
    export_xcargs: "-allowProvisioningUpdates", 
    scheme: scheme_name,# target的名字
    clean: true, # 在构建前先clean
    output_directory: output_directory, #ipa输出目录
    output_name: scheme_name #ipa名字
) 
  # 上传蒲公英,update_description为版本更新描述。
  pgyer(api_key: "5d7f7f8f23cc9b636d19a2a7ab165xxx", user_key: "39b4763cb82f856c7d67af5b262e9xxx", update_description: "hello")
  end
end
  • 打包并自动上传 App 到蒲公英

//在项目目录下执行
fastlane TestPgyer #和前面lane后面的名称保持一致
WechatIMG17.png
  • 执行结束后 桌面会生成output_directory定义的文件夹,里面包含一个压缩包和ipa包并且会自动上传到蒲公英
WechatIMG19.png
WechatIMG8.png

多target打包

target -> Edit Scheme -> 勾选Shared
可以点击Manage Schemes 然后列表中查看或勾选相应的scheme.
WechatIMG13.png
WechatIMG15.png
WechatIMG16.png

比如两个target: 分别为xxx和xxxDev 则若要打包xxx,Fastfile中的scheme_name = "xxx"若要打包 xxxDev 则Fastfile中的scheme_name修改为scheme_name = "xxxDev"


  • 蒲公英有提供多种自动化打包方式,其中使用 Fastlane 上传 App 到蒲公英是种超级简单的方式:
    • 若工程中仅存在一个target,则生成的ipa包等直接存放于工程根目录下,ipa也会自动上传到你设置的蒲公英账号上。
    • 若工程中存在多个target,需要按照上述对需要打包的target勾选Shared选项,打包时,终端会询问你想打包哪个target,生成的ipa包等直接存放于工程根目录下,ipa包会自动上传到设置的蒲公英账号上。

打包并上传到fir.im

与蒲公英操作基本一致:
  • 安装fir插件
    fastlane add_plugin firim
    
WechatIMG28.png
中间输入一次y和两次开机密码
提示Successfully installer plugins表示插件安装成功
WechatIMG29.png
  • 安装官方工具fir-cli
gem install fir-cli

如果报如下图权限错误,则更换命令:

sudo gem install -n /usr/local/bin fir-cli --no-ri --no-rdoc
WechatIMG30.png
提示如下图 Successfully install xxx gems installed时表明安装成功
WechatIMG31.png
  • 修改Fastfile内容
# This file contains the fastlane.tools configuration
# You can find the documentation at https://docs.fastlane.tools
#
# For a list of all available actions, check out
#
#     https://docs.fastlane.tools/actions
#
# For a list of all available plugins, check out
#
#     https://docs.fastlane.tools/plugins/available-plugins
#

# Uncomment the line if you want fastlane to automatically update itself
# update_fastlane

default_platform(:ios)

platform :ios do
desc "上传fir"
lane :TestFir do #TestFir 为lane 名称,只要和后面的lane保持一致即可,我们执行时就是执行这个方法
scheme_name = "xxxDev"
#导出路径  我们可以桌面创建xxxIPA(没有的话会自动创建) 文件夹来集中管理生成的ipa等文件
output_directory = "/Users/luckycodercai/Desktop/xxxIPA"
  # add actions here: https://docs.fastlane.tools/actions
#导出名称 
output_name = "#{scheme_name}_#{Time.now.strftime('fir_im%Y%m%d%H%M%S')}.ipa"
gym(
  export_method: "development", #这里填写导出方式 ad-hoc、enterprise、app-store  
  #Xcode 9 默认不允许访问钥匙串的内容,必须要设置此项才可以
  export_xcargs: "-allowProvisioningUpdates", 
  scheme: scheme_name,# target的名字
  clean: true, # 在构建前先clean
  output_directory: output_directory, #ipa输出目录
  output_name: scheme_name #ipa名字
) 
# 上传fir
firim(firim_api_token: "7844e5febf265cc35b5d47dfae43bxxx")
end
end
  • cd到工程目录
打开到工程目录
fastlane TestFir
WechatIMG32.png
WechatIMG33.png
WechatIMG34.png
  • 执行fastlane TestFir

遇到报错:

Could not find action, lane or variable 'firim'. Check out the documentation for more details: https://docs.fastlane.tools/actions

使用命令:

sudo fastlane add_plugin firim

重新安装fir插件

WechatIMG35.png
WechatIMG36.png

参考:
fastlane docs
iOS实现fastlane自动化打包
官方工具 fir-cli 使用说明

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

推荐阅读更多精彩内容