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了;相比手动打包,构建上传是不是快了很多;