fastlane 持续集成第二篇

1,707 阅读1分钟
  • 最近在研究如何一键打多个ipa包,网上查了很多资料,没有查到,就自己试了试,首先打一个ipa,上篇文章已经讲过,如果需要可以看上一篇,打多个ipa需要用到fastlane的match证书管理功能。
  • 这里简单介绍一下match,match是用代码创建苹果的证书、描述性文件,可以指定git仓库,然后团队成员只要去更新git仓库的证书就可以了,不用像以前一样,还要倒入创建者的p12文件,方便多人维护证书
  • 项目需要是多target,在一个工程内,可以一键打多个包,例如下图这种工程
    先写好一个公共的打包方法,allTargets是方法名,options是参数,可以传需要打包的target名字,provisioningProfiles里边需要设置每个target对应的描述性文件名字
lane :allTargets do |options|
  scheme_name = options[:scheme]
  increment_version_number_in_plist(
    version_number: '1.0.0',
    scheme: scheme_name
  )
  increment_build_number_in_plist(
    build_number: 1
  )
  version = get_version_number(xcodeproj: ENV['XCODEPROJ_NAME'], target: scheme_name)
  output_name = "#{scheme_name}-V#{version}.ipa"
  build_ios_app(
    scheme: scheme_name,
    export_method: 'ad-hoc',
    output_directory: "./build",
    output_name: output_name,
    export_options: {
      provisioningProfiles: { 
              "target的bundleid" => "provisioning profile",
              "target的bundleid" => "provisioning profile",
              "target的bundleid" => "provisioning profile",
            }
        }
    )
end

下边写好每个target的调用

lane :Target1 do
  allTargets(scheme: 'Target1')
end

lane :Target2 do
  allTargets(scheme: 'Target2')
end

lane :Target3 do
  allTargets(scheme: 'Target3')
end

下边是正式调用的方法

lane :allTargets do
  allTargets(scheme: 'Target1')
  allTargets(scheme: 'Target2')
  allTargets(scheme: 'Target3')
end

在命令行中执行fastlane allTargets,后边就是命令行里一直在执行打包的命令

大约过了50分钟,所有包打完了,共30个ipa,平均一个ipa耗时2.5分钟,如果是手动打包......我想没有人愿意用xcode去一次一次的点击archive