说实话,公司要上架一个自己做的一个小项目。为了完成这个任务,菜鸟的我一遍找资料一遍跟着做,一遍修改错误一遍查找解决方案。网上的资料大部分都是2015年以前的资料,资料有点不够过时,而且步骤配图也不是很详细,导致我花费了整整4天的工作日只为实现appstore上架。哎呀,也是够蛋疼的,appstore上架的每个流程都要确认无误,每一步的错误都会导致最终的失败。这个shit的操作,再也对你无爱了。
推荐一篇比较详细有用文章:
appStore上传苹果应用程序软件发布流程_iOS开发群雄_新浪博客
常见问题解决方案:
解决Invalid Code Signing Entitlements 问题 - lady-奕奕的个人空间 - 开源中国社区
好了,吐槽和发泄的话就少说,下面就正式进入Appstore上架流程了。
1.首先你的准备一个个人开发者账号、公司开发者账号。---我这里是公司开发者账号,是什么账号不要紧,因为只要有开发者(appstore发布应用)权限就可以了。
2.准备好Xcode以及要上架的项目。(Xcode最好是Xcode7.1以上的版本)--楼楼的Xcode版本就是7.1的。
3.进入苹果开发者官网:
点击account,如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/36188e7d21222d308620745481e00b59.webp?x-image-process=image/format,png)
进入登录界面,登录
![](https://i-blog.csdnimg.cn/blog_migrate/60a9ca292f77db3d70fc8764ce074d70.webp?x-image-process=image/format,png)
4. 登录之后,点击Certificates, Identifiers & Profiles,为项目创建Bundle ID 、发布证书、以及权限文件(Profiles)
![](https://i-blog.csdnimg.cn/blog_migrate/195797613c3a8aa7ec976622e51c569d.webp?x-image-process=image/format,png)
进入Certificates, Identifiers & Profiles之后,点击App IDs-->"+"添加按钮, 为项目添加Bundle ID
![](https://i-blog.csdnimg.cn/blog_migrate/5db91c7ec48f12e4dd4a7bffe29b30ca.webp?x-image-process=image/format,png)
进入创建APP IDs 的界面。
App ID Description 的name 可以随意填。
![](https://i-blog.csdnimg.cn/blog_migrate/c581a48e3fcd9fc11b1a5007b3dd1fcd.webp?x-image-process=image/format,png)
Bundle ID 最好的格式是:(如:com.cpmpany.yayade)。
这里Bundle ID是要和Xcode项目中的Bundle Id 一致的。(最好将项目中的Bundle Id复制过来)
![](https://i-blog.csdnimg.cn/blog_migrate/7135cb9f9540ca10b6a297fefa8c79e8.webp?x-image-process=image/format,png)
如果有推送功能,要把“Push Notifications”勾选,反正就是项目用到什么功能或服务就把相应的选项勾选。
![](https://i-blog.csdnimg.cn/blog_migrate/5416599e5cafd01aa6bcaf544fa27d5f.webp?x-image-process=image/format,png)
之后就是 continue -->register 完成注册bundle ID的工作
5.接下来就要请求证书。
找到mac 自带的“钥匙串访问”软件,钥匙串访问-->证书助理-->从证书颁发机构请求证书
![](https://i-blog.csdnimg.cn/blog_migrate/cd27b75f653802111bff4064045d3cc0.webp?x-image-process=image/format,png)
之后在证书助理界面填写相关内容,并将保存到本地桌面。
![](https://i-blog.csdnimg.cn/blog_migrate/11853ee7cddb34a5db77877058c25e73.webp?x-image-process=image/format,png)
如下图桌面上生成的.certSigningRequest证书
![](https://i-blog.csdnimg.cn/blog_migrate/d34b2ef41edd126a9671a593911ce130.webp?x-image-process=image/format,png)
6.返回到之前的开发者网站:
Sign in with your Apple ID - Apple Developer
去生成发布证书。
![](https://i-blog.csdnimg.cn/blog_migrate/3cd706df49b1e4b6ece98c8ce1c4181c.webp?x-image-process=image/format,png)
点击 “+”按钮之后,出现以下内容界面,只需要选择“App Store and Ad Hoc” 即可,然后continue。
![](https://i-blog.csdnimg.cn/blog_migrate/dbda418678f187c049241c35fcafe597.webp?x-image-process=image/format,png)
、、、、、、、、、、、、、、、、、、、、、、、
如果你发现Production 下面的 “App Store and Ad Hoc”不可选!!!
原因及解决方案:因为一个用户名下只能同时有一个发布证书,你之前建立了某个证书并且没有使用的话就无法再创建了,先把它撤销或者使用后才可以继续创建新的
、、、、、、、、、、、、、、、、、、、、、、、
两次continue之后,进入以下界面(如下图)
选择 “Choose File...”按钮 ,将我们刚刚生成的.certSigningRequest证书导入。--->continue--> downLoad-->Done
![](https://i-blog.csdnimg.cn/blog_migrate/48e7b819637c723c8a4925424a7cd886.webp?x-image-process=image/format,png)
生成发布证书之后,下载(downLoad)-->找到下载的文件双击自动安装。
之后我们可以在“钥匙串访问”软件看到我们刚刚安装好的发布证书。
![](https://i-blog.csdnimg.cn/blog_migrate/410a210375a89950997571edd332ec8f.webp?x-image-process=image/format,png)
如果看到开发者证书无效。解决方案详见:http://my.oschina.net/sfandy/blog/617139?fromerr=OT2Ptq54
如果解决完“开发者证书无效”的问题就要将第6步操作重新做一遍,生成有效的证书。
7.生成profiles 证书
![](https://i-blog.csdnimg.cn/blog_migrate/1c45addf88074ebfbe8f30bd7de8928d.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/085e97f7d22104180dadced7f07ab38a.webp?x-image-process=image/format,png)
点击“+”之后
![](https://i-blog.csdnimg.cn/blog_migrate/2a33a0dae366a9a17520f75313469711.webp?x-image-process=image/format,png)
App ID : 选择含有对应Bundle Id 的app Id。
![](https://i-blog.csdnimg.cn/blog_migrate/13339aec2c11b6cc7906ea44c6047612.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/4ba9c3a443157744437f74d8ed4e218a.webp?x-image-process=image/format,png)
之后就是下载文件:downLoad-->找到下载的文件双击自动安装。
8. 进入ITunes Connect
![](https://i-blog.csdnimg.cn/blog_migrate/eacf51bcb1da5804925bf242cb2bb72d.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/53ab94d2836561e1e9f51d87b458646f.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/3ff8072e9a857cc60870063fcf6a6bd2.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/20e19145eb1290356a41b5ca6b13bef4.webp?x-image-process=image/format,png)
创建成功之后会进入:
![](https://i-blog.csdnimg.cn/blog_migrate/e53d21b7aca637aa3e6c89bfe5e9f371.webp?x-image-process=image/format,png)
9.用Xcode打开你要上架的项目。
![](https://i-blog.csdnimg.cn/blog_migrate/1ed1d8b0868f23b16df62097595a8a9d.webp?x-image-process=image/format,png)
将 Release copy 改为 distribution,如下图。
![](https://i-blog.csdnimg.cn/blog_migrate/0b99095d77e9d9faddce7d3e50647a6e.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/86c108e48a548e76a237fa2181dacb6e.webp?x-image-process=image/format,png)
选择我们刚刚的distribution
![](https://i-blog.csdnimg.cn/blog_migrate/f71942dadc2ee73840afdd5511c9cb4e.webp?x-image-process=image/format,png)
配置(1.)TARGETS里面的General的Bundle Identifier,
![](https://i-blog.csdnimg.cn/blog_migrate/d285e9d3a406409c17ebe8c25b2fd3a6.webp?x-image-process=image/format,png)
(2.)TARGETS里面的Build Settings的Code Signing Identity
这里的Provisioning Profiles 选择我们生成的Profiles证书。
![](https://i-blog.csdnimg.cn/blog_migrate/32ac8b7c8ce40cd119deb9b36cb80d89.webp?x-image-process=image/format,png)
(3.)PROJECT里面的Build Settings的Code Signing Identity
![](https://i-blog.csdnimg.cn/blog_migrate/b4e624a9be5fde8a94a2b18f058e6c02.webp?x-image-process=image/format,png)
10. Archive
![](https://i-blog.csdnimg.cn/blog_migrate/d1099eab819446a35faedfb8c6fb0f39.webp?x-image-process=image/format,png)
archive时会遇到各种失败的情况:
(1.)
![](https://i-blog.csdnimg.cn/blog_migrate/f5e243a17ad34b90a97f111ba8d872c7.webp?x-image-process=image/format,png)
解决方案 :将三方框架重新导入一遍:即在终端执行:pod update 命令
![](https://i-blog.csdnimg.cn/blog_migrate/daedf1317d64d794ccd9ac20957c1448.webp?x-image-process=image/format,png)
(2.)ERROR ITMS-90096
解决方案:ios app 上传时 ERROR ITMS-90096
(3.)Invalid Code Signing Entitlements
解决方案:方案A.
解决Invalid Code Signing Entitlements 问题 - lady-奕奕的个人空间 - 开源中国社区
方案B.Target或者是Project的Build Settings-->Code Signing Identity-->Provisioning Profiles 没有选择对应正确的Profiles证书
(4.)出现No matching provisioning profile found: Your build settings specify a provisioning profile with the UUID “7738acfb-4d92-4525-adbe-fb66e9957009”, however, no such provisioning profile was found错误提示
解决方案:
试一下这个吧。
Your build settings specify a provisioning profile with the UUID
如果archive成功了,就会出现:
![](https://i-blog.csdnimg.cn/blog_migrate/e5480d7c8e0b1e3ae9079e7bafd5c23f.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/069755b45849071a0dcd0c7606f1397a.webp?x-image-process=image/format,png)
如果UpLoad to App Store 出现以下错误:
(1.)
![](https://i-blog.csdnimg.cn/blog_migrate/f76ff533858348bb484e83cffe2ee7be.webp?x-image-process=image/format,png)
解决方案:重新upload to App Store.
11.UpLoad to App Store成功之后,回到ITunes Connect
完善app一些具体信息
![](https://i-blog.csdnimg.cn/blog_migrate/70e1e1b8802bb7d042ac618cd330f588.webp?x-image-process=image/format,png)
注意:
构建版本会在你UpLoad to App Store成功之后的半个小时内,显示构建的版本。
![](https://i-blog.csdnimg.cn/blog_migrate/8c7339928d90e14526a953d5631acac0.webp?x-image-process=image/format,png)
半个小时之后就会出现如下(记得刷新该页面):
![](https://i-blog.csdnimg.cn/blog_migrate/69f1b96f8cb1ddd1e04813dca9f2853f.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/04236a6f108a3622f3e4fc32056afae6.webp?x-image-process=image/format,png)
在构建版本处,出现上面内容之后,直接提交审核。
![](https://i-blog.csdnimg.cn/blog_migrate/239c3c96963cccf6fd028e0137235ba4.webp?x-image-process=image/format,png)
如果提交不成功出现一下错误:
![](https://i-blog.csdnimg.cn/blog_migrate/6722ab2bfb2c0891d4a70fee1ae22961.webp?x-image-process=image/format,png)
解决方案:技术支持网站没有填写,把它填上就可以喽。