iOS+Fastlane自动打包发布到TestFlight

iOS Fastlane 自动化打包发布到App Store,相对比我们测试时打包麻烦了一些,主要由于访问App Store需要调用相关的api进行权限验证;

自动打包发布Beta版到TestFlight

从打包到上传到TestFlight需要以下几个命令:

  • gym
  • app_store_connect_api_key
  • upload_to_testflight
  • notification 该命令可以及时通知我们当前操作状态;

完整配置如下

# update_fastlane
default_platform(:iOS)
platform :iOS do 
    #生产环境打包
    lane :hs_release do |options|
    desc "Release>>>>>>>App开始打包..."
    gym(
          clean: true,
          output_directory: './fastlane/release',
          output_name:"XX.ipa",
          scheme: 'LoanManager',
          configuration: 'Release',###########
          include_bitcode: true,
          include_symbols: true,
          codesigning_identity:"iPhone Distribution: XXXXial Information Service Co.,Ltd (83XXXXXXX)",
          export_options: {
            method: 'app-store',
            provisioningProfiles: {
                "com.xx.xx" => "描述文件名称"
            },
          } 
    )
    notification(app_icon:"./fastlane/icon.png",title:"LoanManager",subtitle: "打包成功,已导出安装包>>>>>>>>", message: "准备发布中....")
    api_key = app_store_connect_api_key(
        key_id: "2CT XXXXX- KM",
        issuer_id: "69a6de84-a3e5-XXXXX-c7c11a4d1",
        key_filepath: "./fastlane/2CTXXXXTKM.p8",
        duration: 1200, # optional (maximum 1200)
        in_house: false # optional but may be required if using match/sigh
      )
      
    upload_to_testflight(
      api_key: api_key,
      skip_waiting_for_build_processing: true,
      # username: "[email protected]",
      # app_identifier: "com.sxx.xxx",
      ipa: "./fastlane/release/XX.ipa",
      skip_submission:true
     )
     
    notification(app_icon:"icon.png",title:"LoanManager",subtitle: "IPA上传成功", message: "自动打包完成!")
    end
end

主要参数解释

  • lane: 在Fastlane中每个lane就相当于一个任务,每个任务都是独立的,也可以相互调用;

  • gym->codesigning_identity:在钥匙串中打包证书名;

  • gym->clean:每次会执行清空以前操作,重新build;

  • gym -> export_options 设置打包方法,及证书相关;

  • upload_to_testflight-> api_key:上传到testflight需要的key,有方法app_store_connect_api_key 生成; 设置了这个 不能再设置 username , app_identifier两个参数了,否则打包时报错;

  • upload_to_testflight-> ipa : 目标IPA路径,相对工程的根路径;

app_store_connect_api_key 访问App Store秘钥相关,需要在APP主页申请生成,App Store访问秘钥相关,需要在APP主页申请

  • app_store_connect_api_key -> key_id
  • app_store_connect_api_key -> issuer_id 生成的发布ID
  • app_store_connect_api_key -> key_filepath 下载的key_file在本地的路径;

APP主页申请秘钥相关信息

APP -> 用户和访问,选择秘钥

生成结果只能查看一次,注意保留所需数据


记录生成的key,下载秘钥文件然后放到项目指定目录下即可;

运行命令打包

fastlane hs_release

告诉fastlane 执行我们的任务hs_release, 大约10分钟后完成,最终结果如图,然后就可以在App Store后台我们上传的APP了;相比手动打包,构建上传是不是快了很多;

至此发布到testFlight完成!一行命令统统搞定!

你可能感兴趣的:(iOS+Fastlane自动打包发布到TestFlight)