1,实验环境:MacOS Heigh Sierra 10.13.5,Xcode9.4.1
2,参考文献:
①https://www.jianshu.com/p/860fdd8860cc
②https://www.jianshu.com/p/a391c1aad96b
③https://blog.csdn.net/buildsetting/article/details/50685272
④https://blog.csdn.net/shihuboke/article/details/78809692
⑤https://www.jianshu.com/p/0d40830eea72
⑥https://blog.csdn.net/whjay520/article/details/71158757
⑦https://www.cnblogs.com/lixipeng/p/6249802.html
受朋友之托,帮朋友更新一个IOS App到AppStore,因为之前没有往AppStore发布过App,所以这么一折腾2天时间过去了,其中各种漫长等待,各种更新,各种证书。。。。最后总算上传上去了,特此文章,记录一下,望后来者能有所启发。
由于我是帮朋友上传app更新,所以生成证书,在AppStrore添加App信息等流程已经走过了,注意:是用别人的AppId上传的,而且有一点需要注意,就是苹果的各种账号登录界面第一次登录一般都会提示手机短信验证!!!!
主要的核心流程请参考参考文献⑦,本文所讲诉的发布方式主要流程如下:
一、https://appstoreconnect.apple.com/login 登陆appstoreconnect,点击如下蓝色的“+”号。
添加新版本,添加完成之后剩下的工作就是使用Xcode将ipa包上传appstoreconnect了,上传之后就可以在appstoreconnect页面的build标签下看到上传的新版本,然后选择该版本发布审核即可。
二、配置开发环境,构建新版本的release版本以供上传。
1、这一步比较复杂,主要是IOS各种证书,容易搞晕,具体来讲,app构建上传一般涉及到几个证书相关文件。
①发布者证书 Certificates(有Development表示测试版本)
证书是对电脑开发资格的认证,每个开发者帐号有一套,分为两种:
1) Developer Certification(开发证书)
安装在电脑上提供权限:开发人员通过设备进行真机测试。
可以生成副本供多台电脑安装;
2) Distribution Certification(发布证书)
安装在电脑上提供发布iOS程序的权限:开发人员可以制做测试版和发布版的程序。
不可生成副本,仅有配置该证书的电脑才可使用;(副本制做介绍在下面Keychain中介绍)
②Provisioning Profiles(授权文件,有Development表示测试版本)
授权文件是对设备如iPod Touch、iPad、iPhone的授权,文件内记录的是设备的UDID和程序的App Id,即使被授权的设备可以安装或调试Bundle identifier与授权文件中记录的App Id对应的程序。
开发者帐号在创建授权文件时候会选择App Id,(开发者帐号下App Id中添加,单选)和UDID(开发者帐号下Devices中添加最多100个,多选)。
授权文件分为两种,对应相应的证书使用:
1) Developer Provisioning Profile(开发授权文件)
在装有开发证书或副本的电脑上使用,开发人员选择该授权文件通过电脑将程序安装到授权文件记录的设备中,即可进行真机测试。
注意:确保电脑有权限真机调试,即安装了开发证书或副本;在开发工具中程序的Bundle identifier和选中使用的授权文件的App Id要一致;连接调试的设备的UDID在选中的授权文件中有记录。
2) Distribution Provisioning Profile(发布授权文件)
在装有发布证书的电脑上(即配置证书的电脑,只有一台)制做测试版和发布版的程序。
发布版就是发布到App Store上的程序文件,开发者帐号创建授权文件时选择store选项,选择App Id,无需选择UDID;
测试版就是在发布之前交给测试人员可同步到设备上的程序文件,开发者帐号创建授权文件时选择AdHoc,选择App Id和UDID;只有选中的UDID对应的设备才可能安装上通过该授权文件制做的程序。
2、以上的证书可以在https://developer.apple.com/account/ios/profile/里面看到,下载到Mac上,双击下载来的Certificates(。cer后缀)就会把证书安装到key chain中,双击下载下来的Provisioning Profiles文件(mobileprovision后缀文件),双击之后没有任何界面响应,但是Xcode里面的General->Signing会有相关选项。
3、还有一点需要注意的,就是Xcode需要先登录AppId的账号,具体操作为:Xcode->Preference->Account,登录之后显示如下:
这表明登录成功!!!
4、然后就是项目的相关配置,界面如下:
这里需要注意以下几点:
①Project和Target的区别
project就是一个项目,或者说工程,一个project可以对应多个target(你看看上面的图)
targets之间完全没有关系。但target和project有关系,target的setting会从project settings中继承一部分(看图2)
我们选择target的General下面的信息,首先Version版本号要增加,然后Signing下面的Automatially...选项取消选择(自动签名选项,不取消的话可能会有问题,这里我是取消了,然后手动选择签名即可),然后选择Team,选择发布证书即可。然后在target的Build Setting里面也改一下Signing相关选项(好像是修改了Gerenal 之后这里会自动更新???)。
5、下一步选择编译版本,Product->Scheme->Edit Scheme ->Build Configuration 选择Release即可。
6、这时候就可以编译打包了,具体过程如下:
Product->Clean
Product->Build
Product->Archive
最后来到这个界面:
方式一:选择Upload to App Store上传即可(这一步上传可以使用另外一种方式上传,就是在上图的界面选择Export导出ipa文件,然后选择Xcode->Open Develop Tool->Application Loader这个工具上传,不过我没有上传成功,原因未知)。
注意,这一步可能会出现各种问题!!!最可能的是一直显示Authenticating with the App Store..好几个小时一直不动,也不报错,这时候按照参考文献https://blog.csdn.net/whjay520/article/details/71158757,进行如下操作:
cd ~
mv .itmstransporter/ .old_itmstransporter/
"/Applications/Xcode.app/Contents/Applications/Application Loader.app/Contents/itms/bin/iTMSTransporter"
执行半个小时以上即可。然后全部退出上传工具和xcode,重新上传,大概传了10多分钟,就可以看到以下成功的界面:
如果执行了上述命令还是卡在Authenticating with the App Store,参考文献:https://www.jianshu.com/p/ed6f035aceef,
可能是网络原因,手机4G网,开热点,10分钟立马上传成功!!!亲测有效!!!
方式二:
xcode 》Open Developer Tool 》Application Loader登陆
Please sign in with an app-specific password. You can create one at appleid.apple.com
登陆之后添加密码即可用该密码登陆
https://appleid.apple.com/#!&page=signin(手机验证),登录之后生产登录密码Application Loader即可用该密码登录appid,然后choose ipa文件上传即可
3、上传成功,登录Appstore connect,我们第一步的时候已经添加了版本信息,这时候,我们打开界面
点击build的“+”号
选择刚刚上传的版本即可(上传之后可能得等一段时间大概十分钟才能选,系统需要处理一下,这里得吐槽一下苹果的效率了。。。。。),选择完提交后面按要求来就行~~~~~
这里之前有个小问题,就是Xcode版本编译的ipa好像上传有问题,具体参考:
https://help.apple.com/xcode/mac/current/#/devf16aefe3b
解决方案:升级xcode8到xcode9,这里我在appstore 升级到了9.4.1 大概5G,花了超过9 hours,而且升级该版本的xcode还需要先升级MacOs到Heigh Sierra 10.13.5以上。。。。。