老板,我要打包!花式的那种!
没有错!折腾了这么久,我们却还有件最重要的事情没做,那就是给我们的宝贝儿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所支持的最低版本等等。
再看到Build Settings,往下滚动找到Build Options,这里有个Bitcode的开关,如果你引入了第三方库,编译后发现报错bitcode,可以在这里来关掉,或者你不想苹果二次编译你上传的App来优化,也可以关掉。最重要的是下面的Code Signing,也就是我们之前讲到的代码签名,检查你的证件的时候到了。先在下面的Provisioning Profile里改成你之前申请安装好的对应的App的描述文件,再在Code Signing Identity下,把所有的选项都改成你之前已经申请并安装好的发布证书即可。
接下来转到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通道。
再来看一下LaunchImage。新建工程默认是没有LaunchImage的,所以我们得手动建一个新的,在目录空白处右键弹出菜单,如图选择即可。新建后会让你传不同屏幕的启动图,尺寸要求跟上一篇版本信息那里一样,可以参考下那里的表格,这里不再重复。
将所有需要的图片资源都上传好后,回到之前General设置页面,将这两个Source选为你刚刚传了图片的两个资源集即可。第三个Launch Screen File是如果你有用到默认建立的LaunchScreen.xib或者你自行建立的一个IB页面来做启动页,就需要在这里选上,没用到就清空。
把这些弄完后,别忘了检查下是否打了断点忘记去掉。
再到Edit Scheme中检查一下。
先看看Run-Info里的Build Configuration是不是改成了Release,再看看Run-Diagnostics中的僵尸模式有没有关。
然后再瞅瞅Archive下,Build Configuration是不是选的Release,下面的Archive Name又是不是正确的App名字。
都设置完成后,将模拟器切换到Generic iOS Device,然后Command+B进行一次编译,当然你选择真机编译也可以。
打包
这以上的一切都没问题了,就可以最后的打包上传了。打包的方法有多种,我们一个个来看看。
方法一(常规方法):
首先确认下你的版本是Xcode6及以上,我们在xcode顶部工具栏里选择Product-Archive,工程会再次编译,然后弹窗。
查看一下相关信息无误后,选中你需要上传的App,然后点击右侧的Export,弹出弹窗。
如图我们选择第一个Save for iOS App Store Deployment,点Next下一步。然后会让你选择开发者账号,这个不用我多说了,用哪个账号发布就选哪个。
选好账号下一步,核对一下包的信息,看看签名证书有没有错,描述文件有没有错,然后Export,保存到你找得到的位置即可。
打开生成的文件夹,里面的.ipa文件就是我们需要的包。
方法二:
我们在之前的编译成功过后,工程目录最底下Products索引里的.app文件就会从红色变成黑色,表示该文件已经存在。右键点选弹出菜单,选择Show in Finder,找到文件所在。
找到后,先打开你的iTunes,切换到应用,把你刚才找到的.app文件直接拖进去。
此时空白处就会出现你的App,此时右键点选弹出菜单,再选择在Finder中显示,就能找到你需要ipa包了。
方法三:
还是找到你刚才的.app文件,现在桌面建一个空文件夹,取名“Payload”,不要写错哦。然后把你的.app文件扔进去,右键点击文件夹压缩得到一个.zip的压缩包。把压缩包的后缀名.zip改成.ipa就行了。
方法四:
上面这些打包的方式是不是有些麻烦?别着急,有捷径。现在有一款叫做AMAppExportToIPA的Xcode插件,可以一键打包。
先看看怎么安装这个插件,我们可以使用Xcode的插件管理工具--Alcatraz来安装插件,怎么安装这个管理工具可以看看这篇文章(使用Alcatraz来管理Xcode插件),在工具的搜索栏里搜索刚刚的插件名称找到插件安装即可。另一种方式就是直接下载去github上下载AMAppExportToIPA,打开其中的工程文件直接Command+B编译一次,然后重启Xcode即安装成功。
插件安装成功后,右键.app文件弹出菜单,选择最下面的Export IPA即可输出我们需要的包文件。是不是很简单粗暴?
方法五:
用插件打包是简单了,但前面繁琐的设置还是很麻烦呀?有没有全自动一条龙包干服务呢?劳动人民是智慧无穷的,而懒也是人类前进路上的催动力之一。打包,我们也可以偷偷懒,用脚本来自动打。不过这里我就不多说了,大家感兴趣的可以看看这篇文章(详解Shell脚本实现iOS自动化编译打包提交)。
上传
包打好了,我们还得上传呀。上传构建版本有两种方法,第一种是通过Xcode上传,仅支持Xocde6以上版本,另一种是通过Application Loader来上传。
Xcode上传
回到打包方法一的Archive,我们在点Export输出前,可以看到上面的蓝色按钮Upload to App Store,其实这里不用输出IPA,直接点这个就会自动打包并上传构建版本了,当提示成功时即上传成功,可以去网页端找你的构建版本了。。。。。。
画外音:“那你前面啰里啰嗦讲辣么多打包干啥子?调戏我们老实人?”
当然不是,因为这种上传方式,偶尔是会出现些不可描述的问题的,很可能传一次就成功,也可能怎么传都传不上去,哪怕你次次提示上传成功,网页端的构建版本也仍然找不到你的宝贝儿App。那怎么办呢?当然先得按之前的设置流程好好检查下有没有什么设置错误,没有的话,再试几遍,还不行那就用第二种方法来上传了。
Application Loader上传
在构建版本那里点击Application Loader,下载最新版本并安装到你的Mac上。然后打开后如下图,先检查下左上角的Apple ID是不是你的开发者账号,然后点选“交付您的应用程序”,在点右下角选取。
然后找到你之前打好的ipa包,这时会有弹窗让你核对相关信息是否正确,核对无误后点下一步就可以了,等待上传成功提示,然后去构建版本处就能看到你刚刚上传的包了。
最后一切就绪,就点右上角的提交审核吧,如果点了不成功,会有提示你哪里填错或者少填了,会用红色标注出来,根据提示修改后即可。提交审核时还会让你选择App中是否用到了IDFA,即广告标识符,有就选是,没有就否。具体相关可以看看这篇文章(iOS提交审核:您的 App 正在使用广告标识符)
关于审核
AppStore的审核是非常严格的,App的上线被拒是家常便饭的事情,所以大家心里要有所准备,也应该合理安排提交的时间,以免耽误了正常的发布。以往审核的时间还比较长,大约需要1周左右的时间甚至更长,今年中旬起苹果增加了审核人力,审核速度明显加快了不少,但不代表审核的标准就下降了,这里贴几篇审核注意事项,大家可以好好参考下,看看自己上传的App有没有这些问题。
另外万一时间非常紧迫,还能申请加急审核,可以看看这几篇文章了解下。
结语
到这基本整个流程都仔仔细细了梳理了一遍了,没想到居然弄出四篇来了,我也是醉醉的,不过总算可以收工交差了。这既算我自己的一些工作记录,也希望能分享给大家少走点弯路吧,非常感谢能看到这的每一位朋友!