最新上架 App Store 全流程

iOS开发

共 6511字,需浏览 14分钟

 · 2022-03-01

👇👇关注后回复 “进群” ,拉你进程序员交流群👇👇

前言

过完年回来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还有两种类型:SoftwareServices。\

简单理解:

(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小时,可以去「七麦数据」查看

参考文献:

  1. flutter中文网-发布的IOS版APP[4]

  2. iOS开发,从证书配置到上架发布[5]

  3. iOS AppStore上架流程图文详解[6]

  4. futter打包ios应用流程详解[7]

  5. 配置 Associated Domains[8]

参考资料

[1]

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 资料后,汇总整理出来,可以说是程序员面试必备!所有资料都整理到网盘了,欢迎下载!

点击👆卡片,关注后回复【面试题】即可获取

在看点这里好文分享给更多人↓↓

浏览 72
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报