安装fastlane
确保安装了最新版的Xcode command line toolsxcode-select --install
安装fastlane[sudo] gem install fastlane -NV
或者也可以使用brew cask 来安装fastlane
初始化fastlane
打开terminal(终端),进入项目根目录下,初始化fastlanefastlane init
出现如下选项,选择4:

DB610C68-5EC2-4FBF-8E3D-FDF8261444A1.png
① 自动化截图
② 将测试版分发自动化到TestFlight
③ 自动上传、发布到App Store
④ 手动设置 - 手动设置您的项目以使您的任务自动化
然后,输入开发者账号密码

76080789-2B98-4218-9F67-EEEF0DD4F93F.png
如果开发者账号上没有对应的bundle id的App,会提示是否创建一个新的App,这里我们选择否(n),因为这样快速创建的App设置的信息有限,只能设置App名称等一些基本信息,我们可以通过produce工具创建一个可以设置更多信息的App

image.png
使用produce,在iTunes Connect或者Apple Developer Center上创建新的iOS应用程序
进入项目根目录,找到fastlane文件夹下的Fastfile文件, 编辑文件,内容如下:
platform :ios do desc "create new app" lane :produce_app do produce( username: "xxxx@gmail.com",# APPle ID app_name: "小鱼小鱼吃虾米",#App 名称 app_identifier: "com.test.www.FastlaneTest",#App bundle id app_version: "1.0",#App 版本 sku: "10023500",#App sku language: "Simplified Chinese",#App 语言,默认English ) endend

2F7D1732-1771-41E4-A2AA-F9F20EFA4C8C.png
备注:language这个选项不能直接写Chinese,语言选项如下["Brazilian Portuguese", "Danish", "Dutch", "English", "English_Australian", "English_CA", "English_UK", "Finnish", "French", "French_CA", "German", "Greek", "Indonesian", "Italian", "Japanese", "Korean", "Malay", "Norwegian", "Portuguese", "Russian", "Simplified Chinese", "Spanish", "Spanish_MX", "Swedish", "Thai", "Traditional Chinese", "Turkish", "Vietnamese"]
在terminal中执行fastlane produce_app命令,创建成功提示如下:

938F5AFA-738A-44A0-82D2-B3AD2CC30279.png

95F95FAC-7B1C-4297-8732-D49B74E9C543.png
使用cert创建签名证书(Certificates)
① 在Fastfile中添加以下内容,生成开发证书:
lane :create_certificates do cert( username: "xxxx@gmail.com",# APPle ID development: true,# 创建一个开发证书 force: "false",#即使存在现有证书,也要创建证书,默认为false output_path: "./certs/development",#存储所有证书和私钥的目录的路径 ) end
结果如下:

6D2519C1-D251-4028-BFD5-F315CE0F90AE.png
② 生成生产证书
lane :create_dcertificates do cert( username: "xxxx@gmail.com",# APPle ID development: false,# 创建一个开发证书 force: "false",#即使存在现有证书,也要创建证书,默认为false output_path: "./certs/distribution",#存储所有证书和私钥的目录的路径 ) end

A252E1CE-C95F-4E4E-83DD-136BB7CD1E4E.png
开发和生产证书,修改development的boolean值及output_path路径即可
使用sigh 生成描述文件(mobileprovision)
在Fastfile中
①生成开发mobileprovision
lane :get_dev_provisioningProfile do get_provisioning_profile( username: "xxxx@gmail.com",# APPle ID development: true,# 创建一个开发mobileprovision app_identifier: "com.test.www.FastlaneTest",#bundle identifier output_path: "./certs/development",#存储mobileprovision的目录的路径 filename: "fastlane_dev.mobileprovision",#用于生成的供应配置文件的文件名(必须包含.mobileprovision) )end

24FAC5E3-77CC-411F-8203-69EBCACF1A51.png
② 生成生产mobileprovision
lane :get_provisioningProfile do get_provisioning_profile( username: "xxxx@gmail.com",# APPle ID development: false,# 创建一个开发证书 app_identifier: "com.test.www.FastlaneTest",#bundle identifier output_path: "./certs/distribution",#存储mobileprovision的目录的路径 filename: "fastlane_distr.mobileprovision",#用于生成的供应配置文件的文件名(必须包含.mobileprovision) ) end

47590B9B-5772-4C5F-93BF-4B6C843BEDB7.png
找到certs/development&&distribution目录下的证书及.mobileprovision文件,并安装到电脑上

FC980321-CAF1-4DCA-81DF-8C246C449AF7.png
使用gym来打包ipa
插件(Plugins)
可以在fastlane1.3.0以及更高版本的添加插件,通过添加插件,可以增加一些扩展功能,以便更好的使用
查看所有可用插件fastlane search_plug
查找插件fastlane search_plugins [query]
添加插件fastlane add_plugin [name]
这里介绍两个将会用到插件:
① astlane-plugin-versioning => 用来修改build版本号和version版本号。
Fastlane内嵌的actionincrement_build_number使用的是苹果提供的agvtool,agvtool在更改Build的时候会改变所有target的版本号。这时如果你在一个工程里有多个产品的话,每次编译,所有的Build都要加1。
有了fastlane-plugin-versioning不仅可以指定target增加Build,而且可以按照「语义化版本」规范增加Version,当然也可以直接设定Version。
② fastlane-plugin-firim => 直接把AdHoc或者InHouse打包的ipa上传到fir.im,供测试下载。
安装以上两个插件
fastlane add_plugin versioning fastlane add_plugin firim
使用gym打包ipa
打包之前,先使用xcode的archive一下,保证项目可以运行起来
打包企业版
lane :inhouse do # 以下两个action来自fastlane-plugin-versioning, # 第一个递增 Build,第二个设定Version。 # 如果你有多个target,就必须指定target的值,否则它会直接找找到的第一个plist修改 increment_build_number_in_plist(target: 'FastlaneTest') increment_version_number_in_plist( target: 'FastlaneTest', version_number: '1.0' ) # gym用来编译ipa gym(scheme: 'FastlaneTest',#打包scheme export_method:"enterprise",#打包类型app-store, ad-hoc, enterprise, development output_directory: "./build",#ipa打包存放路径 output_name: 'inhouse.ipa'#ipa名称 ) end
上传到firimfirim(firim_api_token:'38536e6737457d269979734fdsfdsfa')
打包其他版本只需要把export_method方法改成对应的字段即可,这里就一一叙述了
通过deliver 上传截图、App的元数据、二进制(ipa)文件到iTunes Connect
①在Deliverfile中填写要上传的App元数据
# For more information, check out the docs# https://docs.fastlane.tools/actions/deliver/# bundle identifierapp_identifier "com.test.www.FastlaneTest"# Apple ID用户名username "xxxx@gmail.com"# 版权声明copyright "#{Time.now.year} xiaoyuchixiami"# 支持的语言supportedLanguages = { "cmn-Hans" => "zh-Hans"}# 副标题subtitle( 'zh-Hans' => "小鱼小鱼,虾米虾米")# App应用名称name( 'zh-Hans' => "小鱼小鱼吃虾米")# 关键字keywords( 'zh-Hans' => "小鱼小鱼吃虾米,小鱼,吃虾米")# 营销地址marketing_url({ 'zh-Hans' => "https:"})# 隐私地址privacy_url({ 'zh-Hans' => "https:"})# 支持网址support_url({ 'zh-Hans' => "https:"})# 发行说明release_notes({ 'zh-Hans' => "这是第一个版本哦"})# 应用说明description({ 'zh-Hans' => "小鱼小鱼吃虾米, 虾米被小鱼吃",
})# App价格price_tier 0# 应用程序图标的路径app_icon './fastlane/metadata/AppIcon.png'# 屏幕截图的文件夹的路径screenshots_path './fastlane/screenshots'# ipa路径ipa './build/release.ipa'# 自动发布 app: false,则需要手动发布automatic_release false# 提交审核信息:加密, idfa 等submission_information({
export_compliance_encryption_updated: false,
export_compliance_uses_encryption: false,
content_rights_contains_third_party_content: false,
add_id_info_uses_idfa: false})# 应用审核小组的联系信息 app 审核信息app_review_information(
first_name: "杨",
last_name: "过",
phone_number: "13522945883",
email_address: "10023500@gmial.com",
demo_user: "测试账号",
demo_password: "测试密码",
notes: "account needed")
② 在Fastfile中编写上传元数据action
lane :upload_message do deliver end
③ 在terminal中执行fastlane upload_message,会生成一份app元数据确认的htm,输入y上传

FEB6D95E-B214-41EF-83DF-861912D7CD90.png

925FDCDF-DB5D-4ADA-AA91-CE62D6DA539D.png
上传成功截图:

38C53584-7A71-4EE6-8E11-3BF6C08915AB.png

image.png

image.png

image.png
通过以上截图,可以看到,我们打包的ipa包和其他元数据都上传到了iTunes Connect
④ 发布应用
在Deliverfile文件中添加以下内容即可
# 上传完成后提交新版本进行审查submit_for_review: true# 跳过HTML报告文件验证force: true
截图文件需要区分语言,所以一个文件夹对应一种语言,以下是简体中文对应的截图,另外,同一个分辨率的图片排序顺序是根据字母顺序排列的。

image.png
2.Deliverfile文件元数据是区分语言的,所以app名称等信息需要加上语言标识,如下图:

image.png
作者:小胖QAQ
链接:https://www.jianshu.com/p/ecaca8ac86e3
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/1680/viewspace-2820970/ ,如需转载,请注明出处,否则将追究法律责任。