iOS自动化打包发布之fastlane 实现

fastlane官方文档
前提插件配置
首先要安装xcode-select
然后安装fastlane
sudo gem install fastlane -NV

1、打开项目设置scheme为shared状态,选择你的项目,勾选shared,否则fastlane init容易失败

2、打开终端 先cd 到你的项目目录 fastlane init

在这里我们这边需要打包企业版、AppStore这两个是主要的,所以输入4去手动配置!

输入完之后很肯能会卡着这里很久

bundle update很慢的解决方案
打开项目文件夹,找到fastlane init过程中生成的Gemfile文件,并打开

#将https://rubygems.org,换成https://ruby.taobao.org或者https://gems.ruby-china.com/
#source "https://rubygems.org"
source "https://ruby.taobao.org"gem "fastlane"    //gem 'cocoapods'(如果项目中使用了cocoapods需要添加)

之后在终端当前项目,输入bundle update
faselane init 成功
图中圈起来的是所生成的文件

3、faselane安装蒲公英插件 fastlane add_plugin pgyer

4、编辑Appfile文件

# For more information about the Appfile, see:
#     https://docs.fastlane.tools/advanced/#appfile
app_identifier "xxxxBundleIDxxxxxx"
team_id "xxx开发者团队IDxxxx"
apple_id "xxxxx开发者账号IDxxxxxxx"
for_lane :inhouse do  //企业账号的设置app_identifier "xxxxxxxx"apple_id "xxxxxxxxxxxxx"
end

5、 编辑Fasefile文件

default_platform(:ios)
platform :ios dolane :development do //调用方法gym( //配置信息workspace:"XXXXXXXX.xcworkspace", # 自己项目名称xcworkspace(使用cocoapods才会生成)scheme:"XXXXXXXX",# 自己项目名称export_method:"development",#app-store,ad-hoc,enterprise,developmentoutput_directory:"./fastlane/ipadFile", # 打包后的 ipa 文件存放的目录configuration:"Debug")#使用的项目的配置pgyer(api_key: "XXXXXXXXXXXXXXXXX", user_key: "XXXXXXXXXXXXXXXXX")end
end

6、终端项目目录下运行 fastlane development 上传至蒲公英

***注意***打包企业版类似 export_method:“enterprise”

7、上传AppStore配置
需要安装deliver插件 它的工作上传screenshots, metadata 和 apps 到 App Store
在项目目录下fastlane deliver init

输入Apple Id
Login successful 之后 会让你输入 The Bundle Identifier of your App

注意
这个时候fastlane会让你输入开发者账号和APP的Bundle Identifier,如果Bundle Identifier和iTunes Store中任意一个不存在,deliver会初始化失败.
请在初始化之前创建对应的APP ID 和iTunes Store中创建对应APP.
初始化完成之后会,fastlane会下载iTunes Store中APP的配置信息(如果之前配置了)

之后就安装好了

faselane文件夹下会出现 图片圈中的文件

8、编辑Deliverfile文件
利用Deliverfile文件配置iTunes Store需要填写配置相关的信息(不明白的信息和iTunes Store中对照下就知道了)

# The Deliverfile allows you to store various iTunes Connect metadata
# For more information, check out the docs
# https://docs.fastlane.tools/actions/deliver/
# 根据iTunes Store 信息设置
username "12345678@qq.com"  # Apple ID email addressapp_identifier("com.my.MyFastLaneDemo") # bundle identifier#ipa("./fastlane/release_ipa/My.ipa") #  如果没有这个选项,只有metadata会被上传 ipa路径copyright("版权信息 2018") #版权信息#submit_for_review(false) #是否提交审核,true表示立马提交审核screenshots_path("./fastlane/screenshots") # 截屏图片展示price_tier 0 #app 出售价格trade_representative_contact_information(  #iTunes store 综合信息处信息first_name: "jie", #名last_name: "wang", #姓address_line1: "软件园", #地址address_line2: "",address_line3: "",city_name: "Chengdu", # 城市state: "SICHUAN", # 省country: "China", #国家postal_code: "610000", # 邮编phone_number: "+86 18283606699", # 手机email_address: "2186682180@qq.com", #邮箱
)app_review_information( # app审核信息first_name: "jie", # 名last_name: "wang", #姓phone_number: "+86 18283606699", #联系信息电话号码email_address: "2186682180@qq.com", #联系信息邮箱demo_user: "12345678",  #审核测试账号demo_password: "1234", # 审核测试密码notes: "备注信息" # iTunes Store 审核信息备注
)
#提交审核信息:加密, idfa 等
submission_information({    # 参数参考地址  https://github.com/fastlane/fastlane/blob/master/spaceship/lib/spaceship/tunes/app_submission.rbexport_compliance_encryption_updated: false,export_compliance_uses_encryption: false,content_rights_contains_third_party_content: false,add_id_info_uses_idfa: false
})# 模板参考地址 https://github.com/fastlane/fastlane/blob/master/deliver/assets/example_rating_config.json
app_rating_config_path "./fastlane/metadata/itunes_rating_config.json" #年龄分级配置name({
'zh-Hans' => "MyFastLaneDemoTest"  # app名称
})description({ #iTunes Store 中描述信息'zh-Hans' => "APP的描述信息,用于APP功能的描述和介绍不能少于10个字符"
})release_notes({'zh-Hans' => "第一个版本测试" #这个新版本信息,iTunes Store 新增内容处该填的内容
})keywords( # 收缩关键词"zh-Hans" => "FastLane, 美女"
)promotional_text( # 本地化宣传文本信息介绍"zh-Hans" => "本地化宣传文本信息介绍",
)support_url({ # 技术支持网址(URL)'zh-Hans' => "http://www.baidu.com"
})marketing_url({ #营销网址'zh-Hans' => "http://www.baidu.com"
})privacy_url({'zh-Hans' => "http://www.baidu.com"
})app_icon('./fastlane/metadata/AppIcon.png') #应用图标1024 * 1024primary_category("Utilities") #类别设置  参考网站https://docs.fastlane.tools/actions/upload_to_app_store/#reference
# primary_first_sub_category "Card"
# primary_second_sub_category "Casino"
# 要设置的次要类别 无
# secondary_category
# 设置的次要第一个子类别 无
# secondary_first_sub_category
# 设置的次要第二个子类别 无
# secondary_second_sub_categoryautomatic_release true #审核过之后自动发布

9、./fastlane/metadata/下创建名为itunes_rating_config.json的json文件,让iTunes Connect 知道rating criteria-评级标准
内容为

{"CARTOON_FANTASY_VIOLENCE": 0,#卡通或幻想暴力"REALISTIC_VIOLENCE": 0,#现实暴力"PROLONGED_GRAPHIC_SADISTIC_REALISTIC_VIOLENCE": 0,#大量露骨或残暴的现实暴力"PROFANITY_CRUDE_HUMOR": 0,#低俗笑话"MATURE_SUGGESTIVE": 0,#成人/性暗示题材"HORROR": 0,#恐怖/惊悚题材"MEDICAL_TREATMENT_INFO": 0,#医学/医疗信息"ALCOHOL_TOBACCO_DRUGS": 0,#使用或提及烟、酒或毒品"GAMBLING": 2,#模拟赌博"SEXUAL_CONTENT_NUDITY": 0,#色情或裸露内容"GRAPHIC_SEXUAL_CONTENT_NUDITY": 0,#色情及裸体画面"UNRESTRICTED_WEB_ACCESS": 0,#无限制的网站访问"GAMBLING_CONTESTS": 0#赌博和竞赛
}

10、编辑Fastfile

default_platform(:ios)
platform :ios dolane :development dogym(workspace:"XXXXXXXX.xcworkspace", # 自己项目名称xcworkspace(使用cocoapods才会生成)scheme:"XXXXXXXX",# 自己项目名称export_method:"development",#app-store,ad-hoc,enterprise,developmentoutput_directory:"./fastlane/ipadFile", # 打包后的 ipa 文件存放的目录configuration:"Debug")#使用的项目的配置pgyer(api_key: "XXXXXXXXXXXXXXXXX", user_key: "XXXXXXXXXXXXXXXXX")endlane :appstore_dabao dogym(clean:true,workspace:"XXXXXXXX.xcworkspace",scheme:"XXXXXXXX",export_method:"app-store",output_directory:"./fastlane/ipadFile",output_name: "appstore.ipa",configuration:"Release",silent:true,#隐藏没有必要的信息include_bitcode: false,export_options: { #就是正常打包导出后的ExportOptions.plist配置uploadBitcode: false,provisioningProfiles: {"xxxxBundleIDxxxxxx" => "对应的发布的描述文件Name"}})deliver(#提交App Store审核ipa: "./fastlane/ipadFile/appstore.ipa",submit_for_review: true ,#上传成功后立马提交审核ignore_language_directory_validation: true ,force : true, #是否跳过网页审查,上传过程中会形成一个预览界面skip_screenshots: true#跳过上传截图)end
end

11、 终端项目目录下执行命令fastlane appstore_dabao 既可以开始打包上传了,期间遇到的问题:
a、 FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD

关于开启两步验证如何全自动化问题,开启两步验证后,提交testfilght或者appstore会出现如下提示,要求手动确认并 输入6位code
fastlane提供的两步验证解决方案:

1.访问 https://appleid.apple.com/account/manage
2.生成一个 APP-SPECIFIC PASSWORDS,保留生成的特殊密码
3.使用环境变量提供这个密码给fastlane:  FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD
4.执行fastlane spaceauth -u user@email.com,生成session cookie。
5.通过环境变量FASTLANE_SESSION 提供session cookies。配置地方:打包机:~/.bash_profile 中,配置 FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD 和 FASTLANE_SESSION例如:
export FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD=特殊密码
export FASTLANE_SESSION=session cookie

b、 Cannot proceed with delivery: an existing transporter instance is currently uploading this package
原因
上传的动作被记录在 UploadToken 中了。解决方法:
(1)找到个人目录下的 .itmstransporter 目录,是个隐藏文件,用 ls -a 可以看到
(2)到目录中的 UploadTokens 文件夹
(3)找到 localhost_xxxxxxxx_itmsp.tokenn文件
(4)将 localhost_xxxxxxxx_itmsp.tokenn 文件内容清空,可以用 submit 打开,直接清。
(5)然后重新打包上传即可。

最后的成功界面:


图中有些关于个别的App信息的不正确的问题(可以单独去修改),并不影响提交。
帮到你的话,赏个赞?吧!!

iOS自动化打包发布之fastlane 实现 发布AppStore 蒲公英相关推荐

  1. iOS自动化打包 Jenkins+Gitlab+Fastlane+蒲公英+钉钉

  2. xcode 选择configuraftions 打包_分利宝IOS自动化打包

    前言 在iOS开发中,我们常用的打包上传方式就是用Xcode的archive方式打包.到了测试阶段,需要频繁的打包提交到测试平台,整个流程包括:编译-打包-上传,整个过程需要我们去坚守每一步操作,提交 ...

  3. iOS自动化打包之重签名导出不同证书ipa探索

    在完成基础的自动包打包流程过后, 随即也出现了日常中常见的问题, 比如我们每次需要打出不同网络环境和不同证书的ipa, 由于开发者可以添加的设备只有100个, 而公司的几个项目都是用的一个账号, 各项 ...

  4. ios自动化打包 替换icon 启动图 bid appname 额外资源

    ios自动化打包脚本 下载地址https://github.com/gwh111/package 打开后自行替换 icon 启动图 bid appname 额外资源 原理:最新的脚本还是一个个替换后再 ...

  5. iOS自动化部署方案Jenkins Fastlane code.aliyun 蒲公英 appStore

    使用初衷 公司产品版本比较多,很多版本都需要独立化部署.导致产生了每个地址需要打包,每次打包就是一件麻烦的事情,常常一下午的时间过去了却都浪费在打包这件事情上了.So-.研究了下Fastlane.爬了 ...

  6. IOS自动化打包介绍

    摘要 随着苹果手持设备用户的不断增加,ios应用也增长迅速,同时随着iphone被越狱越来越多的app 的渠道也不断增多,为各个渠道打包成了一件费时费力的工作,本文提供一种比较智能的打包方式来减少其带 ...

  7. python项目打包部署到ios_Python的iOS自动化打包实例代码

    前言 这段时间刚刚学习了一段时间的Python,加上自己是做iOS开发的,就想着用Python来做一个自动化打包,可以自动完成打包,上传到蒲公英,并且发送邮箱给测试人员. 一是可以减少打包功夫,二来可 ...

  8. iOS自动化打包发布(fastlane)

    一.FastLane介绍 1.1 FastLane是什么? FastLane是一种配置iOS和Android自动化Beta部署和发布的最简单的方法之一.它可以简化一些乏味.单调.重复的工作,像截图.代 ...

  9. (0082)iOS开发之搭建iOS自动化打包平台(利用Jenkins持续集成iOS项目)

    关键词:iOS jenkins自动化部署 参考: http://blog.csdn.net/u013602835/article/details/54632843 http://www.cocoach ...

最新文章

  1. PyTorch 笔记(15)— 分别使用 tensor、autograd、torch.nn 搭建简易神经网络
  2. 逆天改命,机械飞升:渐冻症科学家拒绝等死,将自己改造成了「半机械人」...
  3. 11g 64位部分安装过程
  4. 元宇宙大比拼:英伟达Nvidia,Facebook,iwemeta
  5. Active MQ的安装
  6. redux异步action_redux-thunk 和 redux-saga 的区别?
  7. vb.net2019- 机器学习ml.net情绪分析(1)
  8. [洛谷P3550][POI2013]TAK-Taxis
  9. ASP.NET Core轻松入门之Middleware管道模型
  10. linux c自写时钟,关于internal_add_timer函数(linux/kernel/timer.c中定义的)的一个问题
  11. 汉王考勤 连接mysql_汉王考勤管理软件打开时出现:连接数据错误,请确认数据库服务器信息是否有误。这样该怎样解决?...
  12. 嵌入式cc2530单片机ZigBee-题2控制led交替闪烁
  13. I didn't write blog yesterday night for some ineffable reasons
  14. sqli-labs(50-53)
  15. 时间序列python复杂网络实例_机器学习案例二:缺失时间序列数据填补与ESN(回声状态网络)...
  16. 如何用Python网络爬虫爬取网易云音乐歌词
  17. 西铁城s621c打印机调试说明,西铁城CL-S621CII驱动
  18. 苹果台式机怎么设置我的电脑计算机,苹果电脑一体机怎么开机_苹果台式一体机开机在哪-win7之家...
  19. NISP二级换CISP的时候需要再花钱吗?【NISP】管理中心
  20. python基于PHP+MySQL的健身房管理系统

热门文章

  1. android 打开和关闭输入法
  2. esp笔记(4)esp8266 连接路由器
  3. Kettle5.2 Carte.bat 页面中文乱码
  4. 利用Python进行数据分析——数据导入导出
  5. 互联网平台如何快速搭建内容安全审核系统?
  6. MATLAB 暖通,MATLAB在暖通空调课程教学中的应用
  7. 人工智能电话机器人的功能
  8. SNMPWALK 命令
  9. 09:整型与布尔型的转换
  10. joc杂志影响因子2019_有机化学高档次杂志投稿之我见——JACS,Angew,OL等