iOS+Fastlane自动打包发布到TestFlight

5,331 阅读2分钟

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: "1xxxx@163.com",
	  # 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了;相比手动打包,构建上传是不是快了很多; 1859207-0f35229a1ae52ced.png

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