fastlane安装及自动化打包在之前的文档中已经详述——fastlane 安装

一、这里是说明打包不同的target,例如两个target,TestOne和TestTwo,ipa的大小分别是10M和20M。

主要是修改fastlane相关的Fastfile配置:两个lane对应两个target。

fasfile文件:

# 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
#

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

# 定义打包平台
default_platform :ios

#指定项目的scheme名称
output_name=“TestOne”
output_name_Two=“TestTwo”

platform :ios do
  desc "企业版"
  lane :TestOne do |op|

    #根据输入参version获取app版本号

    increment_version_number(version_number: op[:version]) 

  puts “开始打enterprise ipa”

  # 开始打包
  gym(
    scheme: "TestOne",
    #输出的ipa名称
    output_name:”#{output_name}”,
    # 是否清空以前的编译信息 true:是
    clean:true,
    # 指定打包方式,Release 或者 Debug
    configuration:"Release",
    # 指定打包所使用的输出方式,目前支持app-store, package, ad-hoc, enterprise, development
    export_method:"enterprise",
    # 指定输出文件夹
    output_directory:"./fastlane/build",
  )
  end
    lane :TestTwo do

    puts “开始打enterprise ipa,SEMF标准版”

    # 开始打包
    gym(
    scheme: "TestTwo",
    #输出的ipa名称
    output_name:”#{output_name_Two}”,
    # 是否清空以前的编译信息 true:是
    clean:true,
    # 指定打包方式,Release 或者 Debug
    configuration:"Release",
    # 指定打包所使用的输出方式,目前支持app-store, package, ad-hoc, enterprise, development
    export_method:"enterprise",
    # 指定输出文件夹
    output_directory:"./fastlane/build",
    )
    end

end

在终端输入fastlane ios TestOne 打包的第一个target的ipa 大小10M

在终端输入fastlane ios TestTwo 打包的第一个target的ipa 大小20M

这里有一个问题,就是在打包第二个target的时候有失败,打包出来的还是第一个target只有10M的ipa或者直接失败。

错误提示会出现

 Couldn’t find specified scheme ‘TestTwo’.xxxxxx.

如下图:

fastlane 自动化打包不同的target,以及手动传版本号参数-风君雪科技博客

解决方法:

xcode打开项目,选中scheme,点击Manage scheme,在相应的target后面点击shared。如下图所示:

fastlane 自动化打包不同的target,以及手动传版本号参数-风君雪科技博客

fastlane 自动化打包不同的target,以及手动传版本号参数-风君雪科技博客

勾选之后,点击close。

在终端输入命令:fastlane ios TestTwo 打包成功ipa大小20M。

二、版本号问题

lane : TestOne do |op|

#根据输入入参version获取app版本号

   increment_version_number(version_number: op[:version]) 

   具体如下图:

  fastlane 自动化打包不同的target,以及手动传版本号参数-风君雪科技博客

  打包命令 eg:fastlane TestOne version:1.0.0