最新上架 App Store 全流程
共 6511字,需浏览 14分钟
·
2022-03-01 11:37
前言
过完年回来app上架到App Store,虽然之前上架过,还是遇到不少坑,特别是配置证书的时候,还好是上架是一次性通过,整理一份详细图文详解。项目是flutter项目上架到App Store,与原始的iOS上架还是有些差别。
环境
macOS 10.15.7
Flutter 2.0.6
Xcode Version 12.4
vscode
Apple Developer 配置
developer.apple.com[1] 点击“Account”栏目
如果该App需要多人协作开发,请进入People进入人员编辑。注意负责上架AppStore的人员需要有管理级别的权限
然后点击 Certificates, Identifiers & Profiles 图标
1. Certificates:证书
Certificates作用是为Mac电脑提供开发能力,具有Certificates的Mac电脑能够真机调试、打包、上架APP到app store。
Certificates有两种环境:开发(Development)环境和生产(Distribution)环境。Certificates还有两种类型:Software 和 Services。\
简单理解:
(1).开发环境(Development):直接用Xcode调试debug就属于开发环境,在模拟器上debug是不需要Certificates的。但是在真机上调试运行就需要Certificates开发证书,发布到APP Store 需要 Certificates 生产证书。
(2).生产环境(Distribution):上架app store,打包生成ipa包等都属于生产环境。只要是通过Archive生成都都是属于生产环境。
(3). Software: 使mac具有相应的开发和发布能力,一台Mac只需要建立一套即可。
(4). Services: Apple提供的额外服务,最常见的就是消息推送服务,会针对不同的App建立不同的Services Certificates,毕竟每个app需要的Services不同。
针对Software部分需要注意:
Certificates是对Mac电脑有效的,是根据Mac的CSR请求证书创建的,而不是对app,所以Certificates的开发(Development)证书和发布(Distribution)证书是有数量限制的。超过数量就不能再创建了,除非删除已有的证书。
只要你这个Mac电脑拥有了Certificates证书,就能用申请Certificates的账号在这个Mac上开发多个app而不需要再重新申请Certificates。所以正确操作是,对一个Mac电脑,只需要申请一套Certificates就好了,在创建第二个第三app时不需要再去创建一套Certificates。
Services的证书是需要另外创建的,而且没有数量限制,但是还是建议只用一台Mac创建就好,他人合作导出.p12文件给对方Mac安装即可。
Software和Services都是和Mac绑定的:
Certificates是和Mac绑定的,不能直接copy给其他Mac使用,但是Certificates可以导出.p12给其他Mac电脑用的,导出的.p12同样具有测试打包和发布的能力。如果多人协同开发,第二个Mac也是不需要再去申请一套Certificates的。用他人Mac电脑上Certificates导出的.p12文件安装上即可。
Certificates:证书
(1) 通过Mac钥匙串管理工具生成CSR请求文件,用于申请Certificates,与Certificates绑定
这里需要注意,不要选中证书列表中的某个证书,否则菜单就不是这个。
邮箱地址填一个,选择存储到磁盘,会正常一个.certSigningRequest文件,重命名一下,便于识别。
(2) 申请开发Development证书 先创建software部分,再创建推送证书部分。
选择iOS Development ,创建iOS Development 开发证书。Xcode11以上可以创建Apple Development 证书.
continue 下一步
选择刚刚的证书文件,
下载下来,名称是 development.cer, 如果是选择了iOS App Development 证书则名称是 ios_development.cer,最好改一下名称,方便识别。
然后双击按钮,打开钥匙串管理工具,在我的证书 就能看到安装了,需要注意的是现实的名称 不是文件名,是你开发者账号的个人team名称,里面的秘钥名称就是你刚刚填写的名称
(3) 申请iOS Distribution (App Store and Ad Hoc)生产证书
方法与上面一样,只是选择的时候选iOS Distribution (App Store and Ad Hoc)类型
然后上传CSR文件,Register,Download, 该名称。
(4) 推送证书申请
推送证书的申请与第二部分是一样的,只是中间会让选择证书绑定的App id。(这里需要先创建Identifiers,查看步骤2.Identifiers:App 身份证) 同样,需要申请Development和Distribution两种环境。
选择Mac钥匙串工具导出的.certSigningRequest文件,与这台Mac绑定。
2.Identifiers:App id
iOS每个APP都有自己唯一的身份证(Identifiers)。app的身份证就在这里申请,也就是app的唯一标识。
填写app描述,和Bundle ID
关于Bundle ID:十分重要的东西,可以理解为app的身份证号码。所有app都是唯一的。为了避免重复和辨识,一般都采用反域名的格式+app名称。
如图所示。这里一经申请变无法更改,在每个项目建立时就应该事先定义好app的Bundle ID。Bundle ID除了这里申请app需要用到以外,在申请第三方服务:如微信登陆、友盟推送、google服务等等都需要使用到Bundle ID与你的app绑定。所以,Bundle ID非常重要。
一般,我们会采用Explicit(明确的)Bundle ID标识,而不会采用Wildcard(通配符)来定义Bundle ID。如果采用了,会导致推送这部分是没用的。
然后Register,回到 identifiers列表页可以看到刚刚创建的。
3.Devices: 设备列表
app的每个设备都有唯一的udid。将udid加入到Devices列表后,这些设备具有debug测试和ad hoc安装能力。
反正,需要测试的iPhone,iPad都需要加入到这个列表里面。
Devices设备列表是针对开发者账号,所以也只需要添加一次。
如何查看设备的udid。有很多方法,
1.Xcode查看(开发者查看自己的)
2.用蒲公英 www.pgyer.com/tools/udid[2]
添加设备列表
4.Profiles: 描述文件
描述文件Profiles将team、Identifiers、Certificates、Devices等信息联系起来。
Profiles同样分为两种环境:开发(Development)环境和发布(Distribution)环境,不同的环境需建立不同的描述文件Profiles。
描述文件是这对app绑定的,所以每个APP都会建立相应的一套描述文件。但是描述文件可copy给其他Mac使用,但是对于的Mac需要安装相应的Certificates导出的.p12文件。
创建描述文件
将上面创建的所有信息联系起来,供xcode使用。同样分别创建Development和Distribution两种环境的描述文件
选择App ID
选择对应的 certificates证书,开发对应开发,生产对应生产,注意是当前项目的证书,不要选择其他项目的证书。
开发环境和Ad Hoc需要选择需要测试的Devices设备,选中的Devices才具有测试和安装能力。全选即可。
然后下载,重命名。描述文件不需要安装
至此所有准备的证书和描述文件都创建完毕。
5.Xcode配置
(1)登录Xcode开发者账号,这一步容易忘记,特别是新的苹果账号,当然也可以到里面选择证书再配置
(2) 配置证书及签名 首先需要取消Automatically manage signing。否则是XCode自动管理证书,会自动创建证书和bundle id等。这样会不利于证书管理。我这里就采坑了,导致自动安装了其他的证书,导致生产证书# Xcode Signing certificate is invalid when build on ext device[3] 只好到钥匙串中删除,刚刚自动按钮的证书,退出Xcode,重新打开就可以了。配置profile描述文件,需要为debug和release两种环境分别配置描述文件。选择3.6章节里创建的对应的描述文件,debug对应development, release对应Distribution。
provisonint Profile 文件选择,开发对应着开发,生产对应着生产。
此处可能会有个小坑,与钥匙串安装的cer 不对应,Buuld Settings 重新选择一下就可以了
调试 一个是模拟器调试 一个真机调试(数据线连上苹果手机)
6.App Connnect 注册APP
套装ID 就是申请的indentifiers,选择
填写App资料,需要注意几点:
APP图标时,图标中不能包含alpha通道或者透明度;LanchImage的图片格式只能是png格式,jpg格式Xcode无法加载成功;填写联系人的时候,需要加区号,比如中国 需要+86;App预览与截屏图片,需要6.5英寸和5.5英寸就行,UI设计图的时候:5.5英寸 1242 × 2208 ;6.5英寸 1242 × 2688
7.多人协作开发证书管理
(1)多台Mac运行相同iOS项目。
是与生成csr的mac电脑绑定的,其他的Mac 电脑无法安装,这样其他的Mac电脑就无法真机测试打包这个iOS项目了。但是,我们可以在钥匙串中导出.p12文件给其他的Mac安装,安装后这台Mac也具有同样打包测试发布能了。开发需要导入developer证书,发布需要导出Distribution证书。选择对应的证书,导出
最好重新命名方便识别。.p12文件其实就加密的.cer证书。可以copy给其他Mac安装。\
第二台Mac安装.p12后,进行第四章的XCode配置后即可具有开发、测试、发布iOS的能力
(2)多人多台Mac开发相同ios项目 如果不方便把开发者账号和密码给其他人用,需要把对应开发人员加入到 开发者成员中。
随后新用户会收到一封邀请邮件,同意后即会加入开发者计划中。新用户登陆苹果开发者中心,会看到自己加入的team
新用户用刚刚导出p12文件在Xcode上配置就可以协同开发ios项目。
8.APP打包上架
(1)打包并上传IPA包 首先确保证书正确、profile描述文件正确。
需要注意的是build构建号 每次都是唯一的,version为版本号,多个版本号可以属于同一个version,
flutter项目也可以直接 改pubspec.yaml文件 version字段 如:1.0.0+1
设备选择:
flutter项目需要注意:需要执行 flutter build ios --release --no-codesign,需要注意的是是在flutter外层目录路径下执行,而不是ios目录路径,(我习惯在vscode中跑命令)
Product -> Archive:
直接Distribute App (如果不放心可以先Validate App)
进入Select a method of distribution(打包方式选择)界面:
App Store:App Store上架包用
Ad hoc:发布测试包用,如蒲公英发布
Enterprise:企业包用
Development:开发包用
根据自己的证书和描述文件选择,在这里选择App Store,点击Next
Select a destination : 选择是直接上传还是导出,直接上传就可以
Select certificate and iOS App Store profile: 之前创建的描述文件
然后等待上传
上传成功之后,需要进入 App Store Connect, 看到
看到刚刚提交的版本,然后点击App Store ,如果第一次发版,直接在 “构建版本” 选择对应的版本文件,如果是已经上架成功,需要更新版本
填写完整的信息,提交审核。
上架之后App Store还搜索不到APP如何下载体验
如果已经上架,但是App Store还搜索不到APP,刚刚通过的需要等24小时,可以去「七麦数据」查看
参考文献:
flutter中文网-发布的IOS版APP[4]
iOS开发,从证书配置到上架发布[5]
iOS AppStore上架流程图文详解[6]
futter打包ios应用流程详解[7]
配置 Associated Domains[8]
参考资料
developer.apple.com: https://developer.apple.com
[2]www.pgyer.com/tools/udid: https://link.juejin.cn/?target=https%3A%2F%2Fwww.pgyer.com%2Ftools%2Fudid
[3]Xcode Signing certificate is invalid when build on ext device: https://stackoverflow.com/questions/45803131/xcode-signing-certificate-is-invalid-when-build-on-ext-devicehttps://link.juejin.cn/?target=https://stackoverflow.com/questions/45803131/xcode-signing-certificate-is-invalid-when-build-on-ext-device
[4]flutter中文网-发布的IOS版APP: https://flutterchina.club/ios-release/
[5]iOS开发,从证书配置到上架发布: https://www.jianshu.com/p/815cba9e7a61
[6]iOS AppStore上架流程图文详解: https://www.jianshu.com/p/b8d8d1d14107
[7]futter打包ios应用流程详解: https://www.jianshu.com/p/beeab8d3842a
[8]配置 Associated Domains: https://www.jianshu.com/p/bebca03dc62b
转自:掘金-杰森陈
链接:https://juejin.cn/post/7063065083408023565
-End-
最近有一些小伙伴,让我帮忙找一些 面试题 资料,于是我翻遍了收藏的 5T 资料后,汇总整理出来,可以说是程序员面试必备!所有资料都整理到网盘了,欢迎下载!
面试题
】即可获取