跟着我左手右手一个慢动作,轻松提交AppStore(AppStore提交App流程最新超详细攻略)(交货篇)

老板,我要打包!花式的那种!

没有错!折腾了这么久,我们却还有件最重要的事情没做,那就是给我们的宝贝儿App打个LV,哦,不对,IPA包包。

设置修改

构建版本

上一篇里填写提交信息的时候,这一块我们自己尝试的时候肯定都看到了,其实就是现在要用到的地方。上面的Apple Watch点开就会发现跟App的相关信息一样,如果你有开发对应的Watch App,就需要在那里填写和上传相关信息及文件,这里不多说了。我们要看的是下面的构建版本,这里的构建版本就是我们刚刚说的需要上传的.ipa包。IPA是Apple程序应用文件iPhoneApplication的缩写,作为文件名后缀的.ipa就表示了这是一个苹果手机程序安装文件,可以安装到iPhone和iPad上。那我们要怎么样把我们开发的App打包成一个ipa文件呢?先不急,在打包之前我们必须对工程文件做一些必须的设置修改。

首先打开我们的工程文件,看到Project里的info选项页,这里有个iOS Deployment Target需要注意下,这是你的App所支持的最低iOS系统版本,你如果调到9.3,那只有iOS9.3的系统才能安装你的App,所以这里其实开发的时候就应该根据实际支持情况设置好,打包前最好再来核实一下,当然这个不是你想支持多低版本就可以随便设置的,牵涉到你接入的各种SDK支持版本,以及你工程中实际调用到的API所支持的最低版本等等。

Project-info

再看到Build Settings,往下滚动找到Build Options,这里有个Bitcode的开关,如果你引入了第三方库,编译后发现报错bitcode,可以在这里来关掉,或者你不想苹果二次编译你上传的App来优化,也可以关掉。最重要的是下面的Code Signing,也就是我们之前讲到的代码签名,检查你的证件的时候到了。先在下面的Provisioning Profile里改成你之前申请安装好的对应的App的描述文件,再在Code Signing Identity下,把所有的选项都改成你之前已经申请并安装好的发布证书即可。

Build Settings

接下来转到Targets下你的目标文件,选择第一个General。图中这三块区域需要仔细核对一下。

Targets-General

Identity下,Bundle Identifier不必多说,当你的各类证书文件都申请好后,这里就不要再轻易改动了,而且很多第三方的SDK需要绑定Bundle ID,随意的改动会导致SDK运行错误,也会让你之前申请的描述文件失效,无法进行必要的操作。Version是版本号,和你之前网页上填的一致即可。Build是你编译的版本号,相对Version可以更细化一点,每一次最终提交的版本可能在开发阶段还经历了几个小版本的迭代开发,最后综合成一个大版本提交,所以在这里可以做一个迭代记录。

Deployment Info下,第一个和刚才Project下的最低支持版本一致即可。第二个是你的App支持的设备平台,如果你只支持其中一种就选择对应的选项,如果iPhone和iPad都支持,就选择Universal。第三个Main Interface是你如果用了StoryBoard(故事版)开发的话,这里需要选定一个主故事版,如果没用到就清空。第四个Deviece Orientation是你的App支持的设备旋转方向,像有的App不仅支持竖屏,也支持横屏,如果你只支持竖屏就勾选Portrait即可。最后一个是状态栏的显示,就是你手机屏幕顶上那个有信号和电量的条,默认Default是黑色的,选择Light是白色。Hide status bar是问你是否隐藏状态栏。最后一个Requires full screen,我上网搜了下,应该是跟iOS9后加入的多任务功能特性有关,如果不需要就勾上,具体的可以点进入链接了解下(iOS项目更新之升级Xcode7 & iOS9)。另外记住这里的选项的对应App全局的,如果你只是在一两个页面更改状态栏的显示,还需要根据情况调用相关API进行设置。

最后的App Icons and Launch Images,是关于App图标和启动屏显示的。App Icons Source是你的图标资源集,Launch Image Source是你的启动屏资源集,它们都在你的.xcassets文件夹下。在你的左侧工程目录里找到这个文件夹,可以看到下面的页面。一般新建工程默认只有个AppIcon,可以看到右侧会有很多尺寸的图标需要上传,我这里因为只支持iPhone,所以只显示了iPhone所需要的图标资源,如果你还支持iPad,需要上传的图标会更多,具体的尺寸要求其实挺简单的,可以看到每一大项最下面都有一个pt数,比如图中第一个是29pt,每一个图标框下有一个倍数,1x就是29x29,2x就是58x58,然后以此类推即可,如果传PNG记得关掉Alpha通道。

AppIcon

再来看一下LaunchImage。新建工程默认是没有LaunchImage的,所以我们得手动建一个新的,在目录空白处右键弹出菜单,如图选择即可。新建后会让你传不同屏幕的启动图,尺寸要求跟上一篇版本信息那里一样,可以参考下那里的表格,这里不再重复。

LaunchImage

将所有需要的图片资源都上传好后,回到之前General设置页面,将这两个Source选为你刚刚传了图片的两个资源集即可。第三个Launch Screen File是如果你有用到默认建立的LaunchScreen.xib或者你自行建立的一个IB页面来做启动页,就需要在这里选上,没用到就清空。

App Icons and Launch Images

把这些弄完后,别忘了检查下是否打了断点忘记去掉。

BreakPoints

再到Edit Scheme中检查一下。

Edit Scheme

先看看Run-Info里的Build Configuration是不是改成了Release,再看看Run-Diagnostics中的僵尸模式有没有关。

Build Configuration
Zombie Objects

然后再瞅瞅Archive下,Build Configuration是不是选的Release,下面的Archive Name又是不是正确的App名字。

Archive

都设置完成后,将模拟器切换到Generic iOS Device,然后Command+B进行一次编译,当然你选择真机编译也可以。

编译

打包

这以上的一切都没问题了,就可以最后的打包上传了。打包的方法有多种,我们一个个来看看。

方法一(常规方法):

首先确认下你的版本是Xcode6及以上,我们在xcode顶部工具栏里选择Product-Archive,工程会再次编译,然后弹窗。

Archive

查看一下相关信息无误后,选中你需要上传的App,然后点击右侧的Export,弹出弹窗。

Archives

如图我们选择第一个Save for iOS App Store Deployment,点Next下一步。然后会让你选择开发者账号,这个不用我多说了,用哪个账号发布就选哪个。

Export

选好账号下一步,核对一下包的信息,看看签名证书有没有错,描述文件有没有错,然后Export,保存到你找得到的位置即可。

Summary

打开生成的文件夹,里面的.ipa文件就是我们需要的包。

ipa包
ipa包

方法二:

我们在之前的编译成功过后,工程目录最底下Products索引里的.app文件就会从红色变成黑色,表示该文件已经存在。右键点选弹出菜单,选择Show in Finder,找到文件所在。

.app

找到后,先打开你的iTunes,切换到应用,把你刚才找到的.app文件直接拖进去。

iTunes

此时空白处就会出现你的App,此时右键点选弹出菜单,再选择在Finder中显示,就能找到你需要ipa包了。

iTunes

方法三:

还是找到你刚才的.app文件,现在桌面建一个空文件夹,取名“Payload”,不要写错哦。然后把你的.app文件扔进去,右键点击文件夹压缩得到一个.zip的压缩包。把压缩包的后缀名.zip改成.ipa就行了。

Payload

方法四:

上面这些打包的方式是不是有些麻烦?别着急,有捷径。现在有一款叫做AMAppExportToIPA的Xcode插件,可以一键打包。

先看看怎么安装这个插件,我们可以使用Xcode的插件管理工具--Alcatraz来安装插件,怎么安装这个管理工具可以看看这篇文章(使用Alcatraz来管理Xcode插件),在工具的搜索栏里搜索刚刚的插件名称找到插件安装即可。另一种方式就是直接下载去github上下载AMAppExportToIPA,打开其中的工程文件直接Command+B编译一次,然后重启Xcode即安装成功。

插件安装成功后,右键.app文件弹出菜单,选择最下面的Export IPA即可输出我们需要的包文件。是不是很简单粗暴?

Export IPA

方法五:

用插件打包是简单了,但前面繁琐的设置还是很麻烦呀?有没有全自动一条龙包干服务呢?劳动人民是智慧无穷的,而懒也是人类前进路上的催动力之一。打包,我们也可以偷偷懒,用脚本来自动打。不过这里我就不多说了,大家感兴趣的可以看看这篇文章(详解Shell脚本实现iOS自动化编译打包提交)。

上传

包打好了,我们还得上传呀。上传构建版本有两种方法,第一种是通过Xcode上传,仅支持Xocde6以上版本,另一种是通过Application Loader来上传。

Xcode上传

回到打包方法一的Archive,我们在点Export输出前,可以看到上面的蓝色按钮Upload to App Store,其实这里不用输出IPA,直接点这个就会自动打包并上传构建版本了,当提示成功时即上传成功,可以去网页端找你的构建版本了。。。。。。

画外音:“那你前面啰里啰嗦讲辣么多打包干啥子?调戏我们老实人?”

当然不是,因为这种上传方式,偶尔是会出现些不可描述的问题的,很可能传一次就成功,也可能怎么传都传不上去,哪怕你次次提示上传成功,网页端的构建版本也仍然找不到你的宝贝儿App。那怎么办呢?当然先得按之前的设置流程好好检查下有没有什么设置错误,没有的话,再试几遍,还不行那就用第二种方法来上传了。

Xcode上传

Application Loader上传

Application Loader

在构建版本那里点击Application Loader,下载最新版本并安装到你的Mac上。然后打开后如下图,先检查下左上角的Apple ID是不是你的开发者账号,然后点选“交付您的应用程序”,在点右下角选取。

Application Loader

然后找到你之前打好的ipa包,这时会有弹窗让你核对相关信息是否正确,核对无误后点下一步就可以了,等待上传成功提示,然后去构建版本处就能看到你刚刚上传的包了。

Application Loader上传
构建版本

最后一切就绪,就点右上角的提交审核吧,如果点了不成功,会有提示你哪里填错或者少填了,会用红色标注出来,根据提示修改后即可。提交审核时还会让你选择App中是否用到了IDFA,即广告标识符,有就选是,没有就否。具体相关可以看看这篇文章(iOS提交审核:您的 App 正在使用广告标识符

关于审核

AppStore的审核是非常严格的,App的上线被拒是家常便饭的事情,所以大家心里要有所准备,也应该合理安排提交的时间,以免耽误了正常的发布。以往审核的时间还比较长,大约需要1周左右的时间甚至更长,今年中旬起苹果增加了审核人力,审核速度明显加快了不少,但不代表审核的标准就下降了,这里贴几篇审核注意事项,大家可以好好参考下,看看自己上传的App有没有这些问题。

另外万一时间非常紧迫,还能申请加急审核,可以看看这几篇文章了解下。

结语

到这基本整个流程都仔仔细细了梳理了一遍了,没想到居然弄出四篇来了,我也是醉醉的,不过总算可以收工交差了。这既算我自己的一些工作记录,也希望能分享给大家少走点弯路吧,非常感谢能看到这的每一位朋友!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,948评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,371评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,490评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,521评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,627评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,842评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,997评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,741评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,203评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,534评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,673评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,339评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,955评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,770评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,000评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,394评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,562评论 2 349

推荐阅读更多精彩内容