虽然 Xcode8 已经出来很久,但是为了保证App的稳定性,避免打包上传过程中出现不必要的麻烦,一直使用 Xcode7.2 来打包。昨晚提交新版本的时候我尝试使用 Xcode8 来打包,发现还真有问题。
使用 Xcode8.1 打包后导出 ipa,打开 Application Loader 3.1 选择ipa开始上传(以前一直都是用这个版本上传),开始上传到上传成功一搬用时10来分钟左右,可这次就不一样了,校验ipa包用时超过了半个多小时,而且还有错误,提示内容如下
ERROR ITMS-90596: "Invalid Bundle. The asset catalog at
'Payload/xxx.app/Assets.car' can't be read. Try rebuilding the app with a
non-beta version of Xcode and submit it again."
如图一:
意思是说无法读取包里面的信息,建议使用非beta版的Xcode进行打包再次上传。实际上是因为我打包的Xcode版本太高,造成低版本的 Application Loader 无法读取数据,我猜就是这个问题,然后换最新版本的 Application Loader 上传,但是新问题又出现了,错误提示如下
ERROR ITMS-4238: "Redundant Binary Upload. There already exists a binary upload with build version '3.2.6' for train '3.2.6'" at SoftwareAssets/PreReleaseSoftwareAsset
如图二:
提示我们提交的版本已经存在,好吧,我只能更改内建版本号(build)重新打了包。打包后使用了最新版本的 Application Loader 上传,这次终于把包顺利的上传完成。
此处经过3个多小时的等待。。。。。。。。。。。。。。。
平时ipa包上传成功后,在 iTunes Connect 的构建版本处出现一个加号,点击加号就可看到上传成功的包,一般这个时间是10分钟到3小时不等,但是我已等了3个多小时,我再次在Xcode中更改了项目的内建版本号,打包上传,又上传成功了,不过最后有个警告,因为平时提交的时候也有警告,所以我也没太注意,无非说ipa包太大或一些其他警告,所以我直接点击完成。
由于当时已很晚,上传成功后我就休息去了,想着明天起来后在提交。
新的一天开始了,上班后第一件事就是打开 iTunes connect ,昨晚上传的两个包,确实已经显示提交成功,但是为何过了这么久构建版本中还未出现上传的包,以前确实没出现过这种情况。这个时候我们公司的同事提醒我去看一下邮件(由于苹果账号的邮箱不是我保管,邮箱领导使用)。
邮件内容如图三:
邮件里面反馈了两个问题,第一个问题是 Info.plist 缺少 NSAppleMusicUsageDescription 这个 Key,原因是这样的 iOS 10 开始对隐私权限更加严格,如果你不设置就会直接崩溃,我们项目中用到了相机、相片、定位等功能,相应的Key也已经添加到了 Info.plist 当中,测试和使用也并未发现崩溃的情况,甚至上传包的时候也未报警告,初步判断根本原因不是这个原因,但是我还是把 NSAppleMusicUsageDescription 这个 Key 添加到了Info.plist 中。我查了一下关于获取用户隐私权限的几个 Key,如果你不确定你该填哪些Key,直接把所有的都添加进去即可如图四。
第二个警告
ERROR ITMS-90176:"Unrecognized Locale - The directory located at ( 'Payload/NFPlus.app/xxx.bundle/cn.lproj' ) has an unrecognized locale name. Refer to the Language and Locale Designations guide for more information on naming your language-specific directories."
如图五:
原因是我们项目中有个很老的框架做了本地化功能,文件cn.lproj文件无法识别,我去查看了苹果的开发文档后发现中文简体的本地化文件名应该命名为 zh-Hans.lproj 而不是 cn.lproj 。
好了,经过一番折腾之后,把这俩个问题解决了,接下来就是见证奇迹的时刻,重新打包上传,上传成功如图,说明上传是真的没有问题了。
等待10分钟左右刷新 iTunes Connect 页面,构建版本那里终于出现了久违的加号,如图七
点击加号选择刚上传的 ipa 包,点击保存再点击提交审核,至此,所有的问题已解决,接下来就是等待苹果审核了。