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

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 do
	lane :development do //调用方法
    	gym( //配置信息
			workspace:"XXXXXXXX.xcworkspace", # 自己项目名称xcworkspace(使用cocoapods才会生成)
			scheme:"XXXXXXXX",# 自己项目名称
			export_method:"development",#app-store,ad-hoc,enterprise,development
			output_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 address

app_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.rb
    export_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 * 1024

primary_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_category

automatic_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 do
  lane :development do
      gym(
		workspace:"XXXXXXXX.xcworkspace", # 自己项目名称xcworkspace(使用cocoapods才会生成)
		scheme:"XXXXXXXX",# 自己项目名称
		export_method:"development",#app-store,ad-hoc,enterprise,development
		output_directory:"./fastlane/ipadFile", # 打包后的 ipa 文件存放的目录
		configuration:"Debug")#使用的项目的配置
		pgyer(api_key: "XXXXXXXXXXXXXXXXX", user_key: "XXXXXXXXXXXXXXXXX")
    end
     lane :appstore_dabao do
    gym(
        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信息的不正确的问题(可以单独去修改),并不影响提交。
帮到你的话,赏个赞?吧!!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值