iOS自动化打包
前言
通常打包步骤:
- 修改环境变量(
main.cfg
,qlconfig.js
),不同环境还要切换bundle id
,切换证书等。 - Archive
- 修改名称,上传svn
使用自动化打包之后,这些操作只需要一步就能完成。后续搭建好了Jenkins
自动化部署后,从打包到上传svn到发布邮件都只需要一步。
环境配置
1.新建Build Configuration
Configuration
系统默认是2个,一个Debug
,一个Release
。
我们在这儿新建一个
Production
用于生产。
2. 新建Scheme
我们每一个券商对应一个scheme,每一个券商都新建两个scheme来对应正式和生产。
将run和archive模式也改为对应的
configuration
3. build setting 修改
bundle id
和 证书 都在build setting
中根据configuration
修改成对应的内容。
4. 配置和获取环境变量
使用GCC预编译头参数GCC_PREPROCESSOR_DEFINITIONS
之前区分正式测试用的
main.cfg
文件中的isProduct
字段,现在区分正式通过代码中判断DEBUG
,RELEASE
和PRODUCTION
来区分正式测试。
之前qlconfig每次都需要根据券商修改。
自动化打包
基本原理,使用xcode-build
命令
fastlane
- 找到fastfile 看有哪些命令
- 民生为例,cd 到目录,fastlane minsheng_t
platform :ios do
# ----------------------- 打包内测.ipa文件 -----------------------
lane :minsheng_t do|options|
branch = options[:branch]
puts "*************| 开始打包.ipa文件... |*************"
# 更新项目build号
# updateProjectBuildNumber
# 开始打包
gym(
# 指定输出的ipa名称
output_name:"#{project_ad_scheme}_#{get_build_number()}",
# 指定项目的scheme
scheme:"#{project_ad_scheme}",
# 是否清空以前的编译信息 true:是
clean:true,
# 指定打包方式,Release 或者 Debug
configuration:"Debug",
# 指定打包方式,目前支持app-store, package, ad-hoc, enterprise, development
# 注:由于使用手动配置证书,在export_options指定打包方式
#export_method:"#{ipa_exportMethod}",
# 指定输出文件夹
output_directory:"#{ipa_outputDirectory}",
# Xcode9将不会允许你访问钥匙串里的内容,除非设置allowProvisioningUpdates
export_xcargs:"-allowProvisioningUpdates",
# 隐藏没有必要的信息
silent:true,
# 手动配置证书,注意打包方式需在export_options内使用method设置,不可使用export_method
export_options: {
method:"#{ipa_exportMethod}",
provisioningProfiles: {
"#{project_identifier}":"#{project_test_provisioningProfiles}"
},
}
)
# puts "*************| 开始上传蒲公英... |*************"
# # 开始上传蒲公英
# pgyer(api_key: "#{pgyer_apiKey}", user_key: "#{pgyer_userkey}")
# puts "*************| 上传蒲公英成功🎉 |*************"
end
end
Jenkins + Git/Svn + fastlane
配置构建条件,可以一键完成:上传svn -> 打包 -> 邮件发布 -> 上架Appstore