最近项目到了最后的阶段,测试完一切ok后,准备打包以及提交,不料看到网上众教程,好多都是老版本的,现在IDE实现方式改了,那些方法好多都找不到,绕了一大圈,才搞明白流程,现在记录下来,以便朋友们查阅。
开发环境:xcode4.4.1
iphonesdk:5.1.1
开发机器:macmini
真机部署测试:apple个人开发者ID
向导:
必备IDP证书和distribution证书(第一个证书是真机部署测试时用到的,后者证书是发布时需要用到的,缺一不可)。
我就说说接下来应该做的流程。在你保证拥有以上两个证书的前提下,距离app提交审核,已经剩下两大步了:1,ituneconnect创建app,填写项目详细信息。2,xcode打包验证通过,提交项目。好的,我就开始说重点了,童鞋们跟着我的流程走,保证不会迷糊和出错。
1.预先准备
在你开始将程序提交到App Store之前,你需要有一个App ID,一个有效的发布证书,以及一个有效的Provisioning profile。下面来看看它们各自的作用。
Step 1: App ID(应用ID)
App ID是识别不同应用程序的唯一标示符。每个app都需要一个App ID或者app标识。目前有两种类型的App标识:一个是精确的App ID(explicit App ID),一个是通配符App ID(wildcard App ID)。使用通配符的App ID可以用来构建和安装多个程序。尽管通配符App ID非常方便,但是一个精确的App ID也是需要的,尤其是当App使用iCloud 或者使用其他iOS功能的时候,比如Game Center、Push Notifications或者IAP。
如果你不确定什么样的App ID适合你的项目,我推荐你读下苹果关于这一主题的文档:Technical Note QA1713。
Step 2: Distribution Certificate(发布证书)
iOS应用都有一个安全证书用于验证开发者身份和签名。为了可以向App Store提交app,你需要创建一个iOS provisioning profile 。首先需要创建一个distribution certificate(发布证书),过程类似于创建一个development certificate(开发证书)。如果你已经在实体设备上测试你的App,那么你对创建development certificate就已经很熟悉了。
如果对此不熟悉,我建议你读下苹果关于signing certificates和provisioning profiles的详细指导。
Step 3: Provisioning Profile(配置文件)
一旦你创建了App ID和distribution certificate,你可以创建一个iOS provisioning profile以方便在App Store中销售你的App。不过,你不能使用和ad hoc distribution相同的provisioning profile。你需要为App Store分销创建一个单独的provisioning profile,如果你使用通配符App ID,那么你的多个app就可以使用相同的provisioning profile。
Step 4: Build Settings(生成设置)
配置App ID、distribution certificate 和provisioning profile已经完成,是时候配置Xcode中target的build settings了。在Xcode Project Navigator的targets列表中选择一个target,打开顶部的Build Settings选项,然后更新一下Code Signing来跟之前创建的distribution provisioning profile相匹配。最近添加的provisioning profiles有时候不会立马就在build settings的Code Signing中看到,重启一下Xcode就可以解决这个问题。
Step 5: Deployment Target(部署目标)
非常有必要说下deployment target,Xcode中每个target都有一个deployment target,它可以指出app可以运行的最小版本。不过,一旦应用在App Store中生效,再去修改deployment target,你要考虑到一定后果。如果你在更新app的时候提高了deployment target,但是已经购买应用的用户并没有遇到新的deployment target,那么应用就不能在用户的移动设备上运行。如果用户通过iTunes (不是设备)下载了一个更新过的app,然后替代了设备上原先的版本,最后却发现新版本不能在设备上运行,这确实是个问题。
(2) 对于一款新app,我经常会把deployment target设置为最近发布的系统版本。因为新iOS版本发布后,渗透率的增长速度是令人难以置信的。很多人认为提高deployment target会失去大部分市场,这个说法并不准确,比如iOS 6,iOS 6发布后一个月,超过60%的设备已经进行了更新。但对Android而言,就是另外一回事了,Android用户并不会像iOS用户那样热衷于更新操作系统版本。
【以上简而言之,最好从项目设计时,就决定是否考虑兼容低版本用户,支持的话,写代码时使用ios新特性时最好做一下判断,if是老版本if是新版本】
2. Assets(资源包)
Step 1: Icons(图标)
Icon是App中不可分割的一部分,你要确保icon尺寸不会出现差错。
iTunes Artwork: 1024px x 1024px (required)
iPad/iPad Mini: 72px x 72px and 114px x 114px (required)
iPhone/iPod Touch: 57px x 57px and 114px x 114px (required)
Search Icon: 29px x 29px and 58px x 58px (optional)
Settings Application: 50px x 50px and 100px x 100px (optional)
Step 2: 屏幕截图
屏幕截图的作用不言而喻,你可以为每个app上传5张截图,虽然至少需要上传一张,可能很少有人会只上传一张图片。另外,你还需要分别为iPhone/iPod Touch和iPad/iPad Mini准备不同的屏幕截图。这也是不小的工作量,但却能展示应用的另一面。Shiny Development开发的一款售价6.99美元的Mac软件Status Magic可以为你节省不少时间。Status Magic可以帮你把状态栏放在截图的正确位置。
屏幕截图和icon是应用给用户的第一感觉,直接关系到用户会不会购买。不过,你所上传的屏幕截图也不一定非得是实际的截图,看看Where’s My Water? 截图可以通过使用此策略,更具吸引力和说服力。
Step 3: 元数据
在提交应用之前,要管理好app的元数据,包括1应用名称、2版本号、3主要类别,4简洁的描述,5关键词,6.支持URL。如果你需要更新应用,你还要提供新增加的版本内容。
如果你的应用需要注册【打开APP需要登录,比如飞信】,你还得向苹果提供一个测试账户或者demo账户,这样审核人员就能很快进入app,而不用再注册账号。
3. 提交准备
Xcode 4以后,开发者提交应用的过程就简单多了,可以直接使用Xcode进行提交。首先在iTunes Connect中创建app,访问iTunes Connect,使用你的iOS开发者账号登陆,点击右边的“Manage Your Apps”,点击左上角的“Add New App”,选择“iOS App”,然后完成表格。
(注意,创建时填的APP就是你开发的项目,名称和ID一定要相同)。https://itunesconnect.apple.com
点击进入
左上角,添加一个APP,如果你的开发账号之前已经提交过app,下面就会列出来。
第一个页面,选择语言,应用名称,skunumber,bundleID(会让你选择自己创建项目的APPID)。
SKU Number是一个用来识别app的特殊字符串。我经常使用app的bundle identifier。最下边是app的Bundle ID,你可以从下来菜单中选择通配符App ID或者准确的App ID。
这个页面是选择app上线的日期(因为apple还需要审核,一般都是推迟几天),售价,以及是否支援教育机构之类的。
以上页面是写版本号,公司名称,软件首类别,次类别(注意两个类别不得重复,否则不会通过),以及评级划分。
以上是软件的内容描述,关键字,技术支持url,以及下面的技术负责人的名字,姓,email,手机号码,这些都很简单,你们都懂的。
----------------------------------------------------------------------------------------------------------------------------------------
接下来是选择APPicon 一张1024X1024的软件图标,让ui做吧,我也不晓得软件的图标为啥要做这么大;
继续上传5张软件的截图,要挑选最重要的图片展示,大小是640x960,xcode上集成了截图功能,则是打开window-organizer视图窗口,点击自己的手机标签页下的screenshot,就可以截图了,尺寸正好,很方便的噢亲。
有常规的iphone4,iphone5,以及ipad各个add的入口,有的话就上传,没有的话就空着
由于上传时我忘记截图了,所以次页面就不能展示给大家了,不过很简单的一看就懂。
完事后检查无误,点击提交。
----------------------------------------------------------------------------------------------------------------------------------------
好了,走到这一步,基本上算是完成了一个app的创建,这里列举了你的skunumber,bundleID,appleID,随处可见的edit点击进入可以修改刚才提交的信息,看到红色圈住的状态了:prepare for upload 千万不要认为此时工作完成了,还差一步,如果此时你关闭了页面,准备最后一步,你会发现到时会出错的。我就因为这个绕了半天。
点击坐下的view Details进入后的页面回会是此软件的一个详细列表展示了软件的名称,描述,软件截图,技术联系人信息,等。看完无误后,一定要点击右下角(或右上角)的按钮(Ready to Upload Binary),只有点了这个按钮,才会改变当前status的状态为:waiting for upload。
【注意:如果是Ready for upload 状态,在xcode下打包提交应用,会有:No suitable application records were found.
Please make sure that you have set up a record for this application on iTunes Connect.的错误提示。】
此时,如果你的首页status变成了:waiting for upload 那么恭喜你,此步顺利通过,剩下最后了。(注意如上截图,点击continue,完成了网页的所有工作)。
4.xcode上操作:设置证书,build打包,提交项目。
打开xcode,首先确保你配置好了distribution证书,看我如下截图。
确保debug和release都是选中我们申请好的distribution证书。到了次步骤,有的教程说创建一个新的codesigning identity 我也尝试创建了,不过这里不推荐新手创建,因为使用release照样可以打包,创新新的identity认为会让新手更晕菜。(如上截图)
5. 上传二进制文件
为了上传程序,需要为程序创建一个archive。你只能在一台真实设备上创建一个archive。如果你在active scheme中选择了iOS Simulator,那么在Xcode的Product菜单中Archive选项是灰色不可选的。连接一台iOS设备到Mac机器上,然后在active scheme中选择这台设备,然后选择Xcode中Product菜单里面的Archive。
选中项目名称,设备改为ios Device(我们不需要使用模拟器或真机来build打包),然后选择 edit Scheme(如上截图)
此界面顶部要确定选中的是你的项目名称和iosDivice设备;左边栏选中Archive,右边的内容为以上视图。点击ok。(如上截图)
此时大功告成,在xcode-Product菜单选中build一下(快捷键command+B),然后再点击Archive。(如上截图)两个都成功的话,就继续下一步,否则请检查两个证书的配置。
如果一切正常的话,现在你会获得一个archive,并且Xcode的Organizer会自动打开,并显示出刚刚生成的archive。在列表中选中archive,然后点击右边的“Distribute”按钮。在显示出来的画面中,选择“Submit to the iOS App Store”。然后输入你的iOS开发者账号进行认证。接着选择Application 和Code Signing Identity。
应用程序的二进制文件会上传到苹果的服务器中——在这个过程中,你的程序同样需要被验证。如果在验证过程中遇到了错误,程序的提交流程就会失败。验证处理非常有用,如果程序中有一些错误,苹果的 App Store评审团会告诉你具体原因。
Archive成功后,就会在Organizer界面生成我们的应用,进入后可以看到软件详细信息,这个identifier一定要和我们第三步网页上的一致。
1111》点击右边的第一步1,验证此项目。(如上截图);(点击进入后输入apple开发者账号和密码,下一步)
账号通过后,会让你选中application 和distribution证书,依次选择,next(如上截图)。
验证通过后,会有如上界面展示,ok,恭喜你。
2222》接下来,我们继续第二步,提交项目(Distribute)
如果你的项目是需要提交到AppStore,则选择第一个,next(如上截图)
如果是如上提示,那么恭喜你,我们终于完成了这shit的流程,点击finish!!我再也不想看到这些了,close Xcode。(如上截图)
----------------------------------------------------------------------------------------------------------------------------------------
我们再次打开itunesconnect,登录进入-会发现当前项目的status终于变了
Waiting for Review~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~这不就是我们最想要的结果麽!!!终于提交完成了,apple审核时间大约是1-2周,如果通过的话,就会按照我们写的时间上架,如果未通过,会发email~~注意查收噢。
好了,接下来说一下,如何在有IDP证书,开发者账号的情况下,通过正规途径,导出ipa,安装在任意iphone手机中(亲测越狱手机)
当我们在上几步,打包build的时候,观看你项目的Products文件夹下,已经生成了真实的app,不过这个还不是我们真正想要的.ipa文件。(如上截图)选中Product下的app,右键show in Finder,此时打开我们的itunes,拖动软件到itunes下。
此时,我们的软件就拖到了itunes中了,可是发现没有软件图标啊,不用怕,这是很正常的。右键软件,选择在Finder中显示(如上截图)
此时,眼前这个软件,就是我们想要的ipa啦。我亲测安装到越狱后的手机,一点问题都没有(不用担心证书的问题)【注意:越狱手机的版本一定要高于软件的版本要求】
目前还没有测试未越狱的手机,不过我想应该无法安装,因为apple的审查机制是很严格的,必须安装在有描述文件Provision的手机中内(这一点在真机部署测试时就已经体现出来了)
好了,谢谢各位看到这里,说的有些啰嗦,但是如果你按照此步骤,走完流程,就会悟出其原理。至少不是看到一教程,又看到另一教程,都不一样,干着急。
有什么问题可以给我留言,我看到后会尽量帮助大家解决,一起学习,成长。
赠送传送门一个:http://www.cocoachina.com/special/market.html
20121109
mryang
2013年1月14日最新更新 :新版本提交审核
当我们经过重重关卡,新项目终于在AppStore 上线之后,就会接踵而来遇到维护的问题,那么新版本提交,就没有这么复杂了,如果以上的教程你都理解了,新版本也就那么几个需要注意的地方,听我慢慢道来。
1,首先需要修改代码,就是说,你要有更新的内容,比如功能,比如bug(貌似是废话)
2,当确定一切都ok之后,需要设置项目的version和build号,新版本
Version是显示对外的版本号,(itunesconect和Appstore用户可以看到),而build别人看不到,只有开发者自己才能看到,相当于内部版本号。【更新版本的时候,也要高于之前的build号】
3,登录ituneconnect网站,在项目右侧,点击add new version ,弹出提示输入版本名称和更新内容,完事后点save。
4,在网站上详细审查一下新的版本名称和更新内容,还有是否有需要替换的截图,确定无误后点右上角的ready to binary ,到此网站的设置完毕。接下来就是xcode提交新项目了。【此设置有一个需要注意的提示,如下截图】
让你选择是审核通过后自动更新到应用商店,或是自己手动控制更新,很人性化。
5,Xcode设置 codesign identity 为发布的证书,Divice选则iosDevice ,然后build 然后archive,跟上边第一次发布时一样。
6,打开organizer界面的archive标签页,检查无误后,先验证Validate后Distribute。
等待完毕后,如果没有什么问题,刷新itunescnnet网站吧,你新提交的项目状态变成了:Waiting For Review
20120114
----------------打包上传时错误汇总《持续更新》-------------------------------------------------------------------------------------------------------------------------------------------------------------
上传时出错:Application failed codesign verification.
它是说,你的签名不对,打包发布APP时,一定要使用Release模式,并把证书选择为自己的Distribution发布证书。
关于Validate Built Product设置YES或NO
有时打包遇到错误,网上都说,在Target设置----->build------>Validate Built Product选项去掉或设置为NO就可以了。从网上搜了一下Validate Built Product的含义,大概意思是说开启内置验证,比如apple规定的一些icon大小是57X57,而你的icon尺寸不是这个,就会导致发布失败。
上传时出错:code signing is required for product type Application in SDK iOS 6.1.
这个是说,debug的证书选择错误了,解决办法:
TARGETS --> Build Settings --> Code Signing --> Code Signing Identity设置为 iPhone Developer
这样就ok啦。
上传时警告:cApplication failed codesign verification. The signature was invalid, or it was not signed with an Apple submission certificate. (-19011).
这个警告,网上遇到的人很多,但是众说纷纭,貌似没有一个权威的解决办法,
首先要养成一个查阅官方文档的习惯:https://developer.apple.com/ios/manage/distribution/index.action
要明白真机调试和发布应用的几个步骤,不能连APP还没创建,就直接想用Xcode打包发布啊!还有要明白debug和release的作用和区别。
这个警告,我的理解是:
前提确认Xcode是近期的版本,工程的SDK也至少要是常用的。APPID正确,真机调试证书和Distribution证书都对应于当前Xcode设置。
首先检查你的Project的info是否正确了,还有就是Target设置是否正确..
然后注意不要使用模拟器build,要选择Device,去Edit scheme里查看archive的时候,是不是使用的release!
如果都不行就删除钥匙串里的相关文件,重新去ADP里申请再下载!
20130510