iOS使用 fastlane 完成 xcode 自动打包上传(2019-01-09)

介绍

其实自动化打包工具有很多,用的比较多的有 Jenkins 、Python、fastlane。曾经一直使用的 Jenkins 来构建,但是 Jenkins 需要我们配置的东西比较多(仓库地址、git/svn 账号和密码、分支等)而 fastlane 是我目前遇到最简单快速的(iOS、Android都支持)github地址、文档地址

安装前准备工作

  • 首先确认是否安装了 ruby ( 默认 mac 都已经安装好了)
    ruby -v
检测 ruby 版本.png
  • 查镜像、修改镜像
    查看源: gem sources
    删除源: gem sources --remove https://gems.ruby-china.org/
    更换源: gem sources -a https://gems.ruby-china.com

开始安装

  • 安装 fastlane
    执行命令:sudo gem install fastlane -NV
    如果出现 错误 ERROR: While executing gem ... (Gem::FilePermissionError) You don't have write permissions for the /usr/bin directory. 表示没有权限,需要把安装路径也加进去。
    重新执行:sudo gem install fastlane -NV -n /usr/local/bin 等待安装成功如下图
    安装成功.png

使用

  • 打开终端 cd 到你的项目下
  • 执行 fastlane 命令 fastlane init 如图:
    执行命令.png

    下面会有四个选项供你选择
  1. 自动截屏。帮我们自动截取APP中的截图.
  2. 自动发布beta版本用于TestFlight.
  3. 自动发布到AppStore.
  4. 手动设置.
    这里我们选择 4 、一直按 enter 就ok了

配置

上一步执行成功 我们项目会多出这两个文件


FB95F6D8-FA51-44E1-8AD0-2C0696828770.png
  • Appfile 文件
# app_identifier("[[APP_IDENTIFIER]]") # The bundle identifier of your app
# apple_id("[[APPLE_ID]]") # Your Apple email address

# For more information about the Appfile, see:
#     https://docs.fastlane.tools/advanced/#appfile

APP_IDENTIFIER 就是我们工程的 boundle_id
APPLE_ID 就是你的AppleID

  • 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 "Description of what the lane does"
  lane :custom_lane do
    # add actions here: https://docs.fastlane.tools/actions
  end
end

lane :custom_lane do 中的 custom_lane 是函数的名称,可以随意修改,打包执行命令的时候使用。
# add actions here: https://docs.fastlane.tools/actions 这块就是让我们加具体执行的插件、命令等操作用于打包。

下面是我项目的配置

# 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 "Description of what the lane does"
  lane :Demo do  #函数名称,执行打包的时候使用 (冒号后面不能有空格)
    # add actions here: https://docs.fastlane.tools/actions

    time = Time.new.strftime("%Y%m%d") #获取时间格式
    version = get_version_number#获取版本号
    ipaName = "Debug_#{time}.ipa"
    gym(
       scheme:"Demo", #项目名称
       export_method:"development",#打包的类型
       configuration:"Debug",#模式,默认Release,还有Debug
       output_name:"#{ipaName}",#输出的包名
       output_directory:"./build/#{version}"#输出的位置
     )
  end
end

重新 cd 到项目目录,执行命令 fastlane Demo. 成功截图如下:


image.png

上传蒲公英

  • cd到项目下、安装 pgyer 插件
  • 执行命令 fastlane add_plugin pgyer
  • 重新修改 Fastlane 文件,如下:
# 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 "Description of what the lane does"
  lane :Demo do  #函数名称,执行打包的时候使用 (冒号后面不能有空格)
    # add actions here: https://docs.fastlane.tools/actions

    time = Time.new.strftime("%Y%m%d") #获取时间格式
    version = get_version_number#获取版本号
    ipaName = "Debug_#{time}.ipa"
    gym(
       scheme:"Demo", #项目名称
       export_method:"development",#打包的类型
       configuration:"Debug",#模式,默认Release,还有Debug
       output_name:"#{ipaName}",#输出的包名
       output_directory:"./build/#{version}"#输出的位置
     )
    pgyer(api_key: "#{api_key}", user_key: "#{user_key}")
  end
end

重新执行 fastlane Demo

上传成功.png

参考文章:
gym 插件更多用法
cocoachina文章

你可能感兴趣的:(iOS使用 fastlane 完成 xcode 自动打包上传(2019-01-09))