当前位置: 首页 > 编程日记 > 正文

iOS App上架流程(2016详细版),真心很详细。


一、前言:

作为一名iOSer,把开发出来的App上传到App Store是必要的。下面就来详细讲解一下具体流程步骤。

二、准备:

  1. 一个已付费的开发者账号(账号类型分为个人(Individual)、公司(Company)、企业(Enterprise)、高校(University)四种类型,每年资费分别为$99、$99、$299、免费。)。
  2. 一个已经开发完成的项目。

三、检查:

  1. 你的Xcode必须是正式版的,beta版本的Xcode是不能上传项目的。
  2. 上传使用的 Mac 的 OS X系统必须也是正式版的,beta版本也不行。
  3. 请确认你安装的Xcode是从App Store或者是开发者网站下载的,而不是从其它渠道获取的安装包安装的,因为非官方途径下载的Xcode可能带有XcodeGhost 病毒。如何检查?

    检查方法

四、生成发布证书

  1. 打开苹果开发者中心:https://developer.apple.com
    打开后点击:Account


    苹果开发者中心


    下面输入已付款过的Apple账号和密码登录(如果你的电脑已经保存了密码,会直接进入)


    开发者登录账号
  2. 点击:Certificates, Identifiers & Profiles (专门生成证书,绑定Bundle Id,绑定device设备,生成描述文件的地方)


    Member Center
  3. 点击Certificates生成证书

    1. 选择iOS, tvOS, watchOS
    2. 选择All
    3. 点击右上角新添加证书

      添加新证书1
    4. 由于是做App上传,选择生产证书(选择App Store and Ad Hoc)


      选择App Store and Ad Hoc


      注意:一个开发者账号只能创建(1-2个开发(测试)证书,2-3个生产(发布)证书),如果你的App Store Ad Hoc 前面的按钮不能选择,则代表你的这个账号无法再创建新的生产证书了。
      解决方法:

      1. 从共同使用这个账号的人电脑上生成.p12文件,导入自己的电脑。(尽量不要执行下面第2步)
      2. 如果你想生成的话,把现有的删除一个(建议删除时间比较靠前的)。注意:如果删除一个证书,那么正在使用这个证书的人将不能再使用了,除非重新生成,然后利用.p12重新导入自己的电脑里!
        注意:如果你想删除证书,执行下面步骤,否则略过。

        删除证书

      然后接上上图,生产证书部分继续


      生成证书2

      生成证书3

      生成证书4
    5. 上传CSR文件去获取证书(CSR文件需要我们到本机钥匙串里去创建)

      1. 在Launchpad的其他里面,点击钥匙串访问弹出如下界面

        其他


        钥匙串访问
      2. 工具栏选择钥匙串访问->证书助理->从证书颁发机构请求证书...

        请求证书


        证书信息
      3. 将CSR文件保存到MAC磁盘的某个位置(这里我选择的是桌面,进行存储)

        存储证书


        点击完成


        CertificateSigningRequest.certSigningRequest 文件
    6. 然后回到浏览器,点击choose File..


      选择CSR文件
    7. 选择创建好的:CertificateSigningRequest.certSigningRequest 文件,点击选取


      选取CSR文件


      点击Generate上传证书


      上传CSR证书
    8. 跳转到如下界面,点击 DownLoad 下载生成的证书(cer后缀的文件),然后点击Done,你创建的发布证书就会存储在帐号中。


      下载生成的证书

cer后缀的文件

注意:这个证书只能下载一次。点击下载后,关闭页面后就不能再回到下载页面了。
如果不需要给别的电脑使用,则直接跳过下面附加项,跳转到第五步(绑定Bundle Identifier)

附加项:生成p12文件在其他电脑上使用这个发布证书

  1. 双击安装证书后,打开钥匙串访问,选择安装的证书右键单击

    安装的发布证书

    注意:如果没有导出,可以把这个证书删除,然后重新双击下载的证书文件安装。
    1. 导出证书

      导出证书
    2. 存储证书

      存储导出的证书

      注意:存储的文件格式一定要是.p12
    3. 设置密码
      可以为证书设置密码,也可以不设置密码;如果设置了密码,那么别人安装这个证书的时候就要输入密码,否则无法安装。这里就不设置密码了。

      设置密码
    4. 保存导出的证书

      p12发布证书

      如果需要在其它电脑上也能发布App,那么就必须要安装这个发布证书。

五、创建App IDs和绑定你的App的Bundle Identifier

回到刚才的页面:https://developer.apple.com/account/ios/identifiers/bundle/bundleList.action

  1. 点击App IDs,进入如下界面,点击右上角的 +


    点击App IDs
  2. 填写App IDs和Bundle Identifier


    填写App IDs和Bundle Identifier


    注意:

    1. 上传App使用的Bundle Identifier(不要有-,都是英文+数字)必须是固定的,不能使用占位符。
    2. 如果你的Bundle Identifier已经在网站上绑定了,如果你又修改了你工程里面这个Bundle Identifier的话,需要重新进入到开发者账号里面绑定。

      修改工程的Bundle Identifier

      下面选择App中包含的服务,默认有两项,其余的根据自己项目的需求进行选择

      App Services
  3. 点击continue


    点击continue
  4. 点击Register


    点击Register
  5. 点击Done


    点击Done

六、生成描述文件(描述文件的作用就是把证书和Bundle Identifier关联起来)

  1. 找到Provisioning Profiles ,点击All,然后点击右上角 + 号


    Provisioning Profiles
  2. 因为是发布,所以选择下面App Store这个描述文件,点击Continue


    选择App Store
  3. 在App ID 这个选项栏里面找到你刚刚创建的:App IDs(Bundle Identifier) 类型的套装,点击Continue


    选择发布项目的Bundle Identifier
  4. 选择你刚创建的发布证书(或者生成p12文件的那个发布证书),根据自己电脑上的发布证书日期来选择,点击Continue


    选择创建的发布证书
  5. 在Profile Name栏里输入一个名字(这个是PP文件的名字,可随便输入,在这里我用工程名字,便于分别),然后点击Generate


    给描述文件起个名字
  6. Download生成的PP文件,然后点击Done,双击安装(闪一下就完事了,没其它效果)


    Download生成的PP文件

    生成的描述文件

六、在App Store开辟空间

  1. 回到Member Center,点击iTunes Connect


    点击iTunes Connect
  2. 登录开发者账号(还是之前已付费的账号)


    Snip20160315_68.png
  3. 登录成功后,点击我的App


    点击我的App
  4. 点击左上角那个+号,点击新建(注意:我们是iOS App开发,不要选Mac App啦)


    新建 App
  5. 依次按提示填入对应信息(SKU是公司用于做统计数据之类的id,根据公司需求填写),然后点击创建


    填写App信息


    注意:如果都填好以后,可能会告诉你,你的App名称已经被占用,那么不好意思,你只能改名了!(而且建议大家起名不要往比较出名的App上靠,否则审核可能会被拒绝)

  6. 填写App其它信息


    App信息
  7. 填写价格和销售范围(由于我的开发者账号没有签订纳税合同,所以不能上线收费应用,所以只能暂时免费)


    填写价格和销售范围
  8. 依次把不同尺寸的App截图拉入到对应的里面
    需要填写不同尺寸的手机屏幕截图(也就是拿不同尺寸的模拟器运行后,挑出至少3页最多5页进行截图然后拖到响应的区里)(在模拟器Command+S 就可以保存屏幕截图到桌面了)(注意:如果提示拖进去的图片尺寸不对,则把模拟器弄成100%然后再Command 加 S) 尺寸参照表在下面


    设置不同尺寸的App截图


    尺寸参照图


    尺寸参照图
  9. 填写App简介


    填写App简介
  10. 按提示依次输入


    按提示依次输入


    错误提示:如果上传App 图标失败,提示Alpha错误的话,看下面。
    打开你的图标图片,勾掉这个


    勾掉这个
  11. 点击分级后面的编辑,如实填写后,点击完成


    分级信息
  12. 填写审核信息


    填写审核信息


    版本发布就是:(然后最下面选择自动发布的话就是如果审核通过,就自动上传到App Store供人下载)

  13. 此时这个构建版本还没有生成,我们先把基本信息填写完毕,然后再进入Xcode中把项目打包发送到过来。
    注意:填写完一定要点击右上角的保存。

七、在Xcode中打包工程

找到你刚刚下载的发布证书(后缀为.cer)或者p12文件,和PP文件,双击,看起来没反应,但是他们已经加入到你的钥匙串中。

  1. 在Xcode中选择iOS Device(这里不能选择模拟器),按照下图提示操作


    选择iOS Device
  2. 如果你的应用不支持横屏,把这两个勾去掉


    如果你的应用不支持横屏,把这两个勾去掉
  3. 查看版本号和构建版本号


    查看版本号和构建版本号
  4. 配置发布证书(ps:截图时选择的证书是错误的,大家注意一下,要选择发布证书)


    配置发布证书


    注意:如果这里没有黄色叹号,代表你的配置没问题,如果有,那就是证书和描述文件不匹配,或者描述文件里刚才选的Bundle和现在的工程的Bundle Identifier不一致,去develop.apple.com 上找到你的描述文件在确认下绑定的bundle Identifier和你工程是不是一样的?


    检查
  5. 断点全局断点僵尸模式等都要去掉。


    去掉断点、全局断点

Snip20160315_36.png

Snip20160315_37.png

去掉僵尸模式

6.设置Release模式(Debug是测试的,Release是发布用的)


Snip20160315_39.png

Snip20160315_40.png

Snip20160315_41.png

Snip20160315_42.png

7.选择 Xcode下 Product 下 Archive(专门用于传项目,或者打包项目)


选择Archive

Snip20160315_45.png

Snip20160315_46.png

8.出现下图说明你没有添加开发者账号,点击右下脚Add... 按钮就可以添加


没有添加开发者账号

9.输入付费的开发者账号


输入开发者账号


可能会弹出下面这个界面,如果不弹出,按Command加。


10.然后回到Archive(选择已付费的账号),然后点击Choose


选择已付费的账号


然后等待


等待

11.选择Upload提交


Upload提交

12.如下就代表上传成功,如果出错,请参照iOS App上传项目遇到的问题


上传成功

13.返回ItunesConnect网站上你自己的App信息中查看一下


在App信息中查看

14.在这个构建版本这里就可以添加代码


添加代码

点击+号之后选择代码版本


添加构建版本

15.提交以供审核


提交以供审核

16.App已经从准备提交,变成正在等待审核状态


正在等待审核状态

17.等待苹果的审核...

八、补充

1、构建版本的方法有两种,一种是使用 Xcode(上面已经介绍了),另一种就是使用一个叫 Application Loader 这个软件:


Application Loader
  • 使用Xcode构建版本:
    上面已经介绍(已经Archive的话,可以在Xcode: Window -> Organizer 进入)


    Upload to App Store…
  • 使用Application Loader 构建版本:

    • 如上图,点击“Export...”,导出一个ipa文件(ps:为了保险起见、让苹果审核顺利一点,这里可以先点击“Validate…”来验证一下,这里就懒得验证了)
    • Application Loader下载Xcode的时候就已经下载了(没有的请自行下载),Xcode 右键弹出下面界面

      Open Developer Tool

      打开Application Loader(如果没有登录,会提示你登录你的开发者账号)

      Application Loader

      选取你导出的ipa文件(或者双击“交付您的应用程序”选取ipa文件),之后按提示操作就行,上传完毕没有报错的话,过几分钟左右就可以在iTunes Connect 里面就可以看到你上传的这个版本了。

      构建版本

补充就这些吧,后面遇到再补充吧!个人建议构建版本使用Application Loader上传


相关文章:

飞机的“黑色十分钟”能被人工智能消灭吗?

【导读】近年来,“AI的应用和落地”逐渐成了具化的关键词,它和很多事物很多行业结合在一起,形成了奇妙的“化学反应”。例如,在日常生活中,AI可以推送我们喜欢的新闻或视频,可以在拍照的时候识别场景提升照…

Jenkins简介及在Windows上的简单使用示例

Jenkins是一款开源CI(Continuous Integration,持续集成)&CD(Continuous Delivery,持续交付)软件,用于自动化各种任务,包括构建、测试和部署软件,源码在https://github.com/jenkinsci/jenkins ,License为…

IOS开发之数据sqlite使用

一、引入工具包引入工具包libsqlite3.dylib,该工具包为C语言工具包。 二、代码操作数据库1、创建并且链接数据库 - (void) _connectDB{//1>获取沙盒路径作为数据库创建时候的初始化路径NSString * pathNSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDom…

通过Dockerfile构建Docker镜像

Dockerfile是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建. Dockerfile支持Shell类的行尾添加"\"的命令换行方式,以及行首"#"进行注释的格式. 使用Dockerfile构建Docker镜像时注…

华为腾讯百度众安微众360大咖齐聚,2019中国区块链开发者大会首批议程曝光!...

作者 | Aholiab出品 | 区块链大本营(blockchain_camp)随着区块链被定义为国家战略,区块链技术得到升温。据有关国际研究机构预测,三年后全球区块链市场规模将达到139.6亿美元(约合986.23亿元人民币)&#x…

iOS GCD使用

dispatch_queue_t queue dispatch_queue_create("testQueue", DISPATCH_QUEUE_CONCURRENT); dispatch_async(queue, ^{ // 追加任务1[self.hud show:YES];for (int i 0; i < 2; i) { [NSThread sleepForTimeInterval:2]; // 模拟耗时操作[self reqHopwork];} })…

01 http协议概念及工作流程

一&#xff1a;HTTP协议 重要性: 无论是以后用webserverice ,还是用rest做大型架构,都离不开对HTTP协议的认识. 甚至可以简化的说: webservice http协议XML Rest HTTP协议 json 各种API,也一般是用httpXML/json来实现的. 往小说:做采集,小偷站,也需要对HTTP协议有所了解, 以…

iOS原生与html交互 使用第三方WebViewJavascriptBridge

HTML页面代码 <!DOCTYPE html><html xmlns:http"http://www.w3.org/1999/xhtml"><head> <meta charset"utf-8"> <title>迎新好礼</title> <meta name"viewport" content"widthdevice-width,initial…

Docker容器中挂载NFS共享目录

之前在https://blog.csdn.net/fengbingchun/article/details/110561129 介绍过使用Dockerfile构建ubuntu 16.04镜像,并在容器中编译执行Messy_Test项目.这里介绍下如何在容器中挂载NFS服务器上的共享目录. Dockerfile内容如下&#xff1a; FROM ubuntu:16.04 LABEL maintaine…

倒计时1天 | 2019 中国大数据技术大会(BDTC)报名通道即将关闭(附参会提醒)...

2019年12月5-7日&#xff0c;由中国计算机学会主办&#xff0c;CCF 大数据专家委员会承办&#xff0c;CSDN、中科天玑数据科技股份有限公司协办的中国大数据技术大会&#xff08;BDTC 2019&#xff09;将于北京长城饭店隆重举行。届时&#xff0c;超过百位顶尖技术专家将齐聚于…

Android TextView的一些小知识

2019独角兽企业重金招聘Python工程师标准>>> 1.设置文字行距 android:lineSpacingExtra"8dp" 或者 android:lineSpacingMultiplier"1.5" 2.设置字间距 在API21里可以设置 API 21 android:letterSpacing"0.5f" //字间距 注意&#x…

iOS WKWebView带进度条封装(只用传入url,可改变进度条颜色)

1 NSTimeraddition.h #import <Foundation/Foundation.h> interface NSTimer (addition) /** 暂停时间 */ - (void)w_pauseTime; /** 获取内容所在当前时间 */ - (void)w_webPageTime; /** 当前时间 time 秒后的时间 */ - (void)w_webPageTimeWithTimeInterval:(NSTimeIn…

Ubuntu上配置VS Code调试C++

直接使用GDB在Ubuntu上调试C code&#xff0c;有时不是很方便&#xff0c;这里介绍下在Ubuntu上通过Visual Studio Code调试C code操作步骤&#xff0c;通过CMake编译。 安装所需依赖&#xff1a; (1).在Ubuntu上安装Visual Studio Code最新稳定版本1.51.1&#xff1b; (2).…

因果关系是通向强AI的阶梯or作用被夸大?

整理 | 夕颜出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;一直以来&#xff0c;机器学习和统计学之间的界限就比较模糊&#xff0c;比如诺奖得主托马斯萨金特就曾经说过人工智能其实就是统计学&#xff0c;只不过用了一个很华丽的辞藻。但同时也有人认为&#xff0…

Android中设置TextView的颜色setTextColor

tv.setTextColor(Color.parseColor("#FFFFFF")); tv.setTextColor(Color.WHITE); tv.setTextColor(Color.rgb(255, 255, 255)); //注意Color是大写C&#xff0c;不是color.holo_orange_dark,这样错误并没效果的 tv.setBackgroundResource(R.drawable.icon_bg_rectan…

iOS 跑马灯封装(带点击事件)

1.WAdvertScrollView.h#import <UIKit/UIKit.h>class WAdvertScrollView;typedef enum : NSUInteger {/// 一行文字滚动样式WAdvertScrollViewStyleNormal,/// 二行文字滚动样式WAdvertScrollViewStyleMore, } WAdvertScrollViewStyle;protocol WAdvertScrollViewDelegat…

日期与unix时间戳之间的转换C++实现

之前在https://blog.csdn.net/fengbingchun/article/details/107023645 中介绍过gmtime和localtime的区别&#xff0c;这里介绍下日期与Unix时间戳之间转换的实现&#xff0c;其中也会用到这两个函数。 Unix时间戳(Unix timestamp)&#xff1a;是一种时间表示方式&#xff0c;…

模型训练完才是业务的开始?说说模型监控 | CSDN博文精选

扫码参与CSDN“原力计划”作者 | A字头来源 | 数据札记倌(ID:Data_Groom)“模型训练结束后才是业务真正的开始”简述每次模型训练完成后&#xff0c;并不意味着项目的结束&#xff0c;在训练模型后&#xff0c;我们还需要将其稳定上线&#xff0c;然后部署一套相应的监控体系&a…

后端码农谈前端(CSS篇)第一课:CSS概述

一、从扮演浏览器开始 扮演浏览器是Head First图书中很有意义的一个环节。可作者忘记了告诉我们扮演浏览器的台本。我们从这里开始。 上图是webkit内核渲染html和css的流程图。从该图我们可以知道以下几个关键信息&#xff1a; HTML的解析过程和CSS的解析过程是独立完成的。HTM…

远场语音识别错误率降低30%,百度提基于复数CNN网络的新技术

【12月公开课预告】&#xff0c;入群直接获取报名地址12月11日晚8点直播主题&#xff1a;人工智能消化道病理辅助诊断平台——从方法到落地12月12日晚8点直播&#xff1a;利用容器技术打造AI公司技术中台12月17日晚8点直播主题&#xff1a;可重构计算&#xff1a;能效比、通用性…

深度神经网络中的局部响应归一化LRN简介及实现

Alex、Hinton等人在2012年的NIPS论文《ImageNet Classification with Deep Convolutional Neural Networks》中将LRN应用于深度神经网络中(AlexNet)。论文见&#xff1a;http://www.cs.toronto.edu/~hinton/absps/imagenet.pdf &#xff0c;截图如下&#xff1a; 公式解释&…

iOS 被拒解析

原因&#xff1a; Your app uses the "prefs:root" non-public URL scheme, which is a private entity. The use of non-public APIs is not permitted on the App Store because it can lead to a poor user experience should these APIs change.Continuing to us…

MSSQL数据库统计所有表的记录数

今天需要筛选出来库中行数不为零的表&#xff0c;于是动手写下了如下存储过程。 CREATE PROCEDURE TableCount AS BEGIN SET NOCOUNT ON DECLARE t1 AS TABLE(id INT IDENTITY,NAME NVARCHAR(50),RowsCount INT) DECLARE indexid AS INT DECLARE maxid AS INT DECLARE count A…

经典网络AlexNet介绍

AlexNet经典网络由Alex Krizhevsky、Hinton等人在2012年提出&#xff0c;发表在NIPS&#xff0c;论文名为《ImageNet Classification with Deep Convolutional Neural Networks》&#xff0c;论文见&#xff1a;http://www.cs.toronto.edu/~hinton/absps/imagenet.pdf &#xf…

微软张若非:搜索引擎和广告系统,那些你所不知的AI落地技术

【12月公开课预告】&#xff0c;入群直接获取报名地址12月11日晚8点直播主题&#xff1a;人工智能消化道病理辅助诊断平台——从方法到落地12月12日晚8点直播&#xff1a;利用容器技术打造AI公司技术中台12月17日晚8点直播主题&#xff1a;可重构计算&#xff1a;能效比、通用性…

iOS 之 IQKeyboardManager 解决使用UITableView 界面上移问题

- (void)viewWillAppear:(BOOL)animated {[IQKeyboardManager sharedManager].enable NO;}- (void)viewWillDisappear:(BOOL)animated{[super viewWillDisappear:animated];[IQKeyboardManager sharedManager].enable YES; }

excel增加上一列的数值(日期)

TEXT(D2-1,"m月d日") 有年的话就是 TEXT(D2-1,"yyyy年m月d日") D2就是参照日期转载于:https://www.cnblogs.com/hont/p/4352877.html

iOS 一些基础的方法

iOS button字体居中等的设置 self.replyBtn.contentHorizontalAlignment UIControlContentHorizontalAlignmentCenter; UIControlContentHorizontalAlignmentCenter 0, UIControlContentHorizontalAlignmentLeft 1, UIControlContentHorizontalAlignmentRight 2…

经典网络VGGNet介绍

经典网络VGGNet(其中VGG为Visual Geometry Group)由Karen Simonyan等于2014年提出&#xff0c;论文名为《Very Deep Convolutional Networks for Large-Scale Image Recognition》&#xff0c;论文见&#xff1a;https://arxiv.org/pdf/1409.1556.pdf&#xff0c;网络结构如下图…

​70行Go代码打败C

【12月公开课预告】&#xff0c;入群直接获取报名地址12月11日晚8点直播主题&#xff1a;人工智能消化道病理辅助诊断平台——从方法到落地12月12日晚8点直播&#xff1a;利用容器技术打造AI公司技术中台12月17日晚8点直播主题&#xff1a;可重构计算&#xff1a;能效比、通用性…