雖然 Xcode8 已經(jīng)出來很久,但是為了保證App的穩(wěn)定性,避免打包上傳過程中出現(xiàn)不必要的麻煩,一直使用 Xcode7.2 來打包。昨晚提交新版本的時(shí)候我嘗試使用 Xcode8 來打包,發(fā)現(xiàn)還真有問題。
使用 Xcode8.1 打包后導(dǎo)出 ipa,打開 Application Loader 3.1 選擇ipa開始上傳(以前一直都是用這個(gè)版本上傳),開始上傳到上傳成功一搬用時(shí)10來分鐘左右,可這次就不一樣了,校驗(yàn)ipa包用時(shí)超過了半個(gè)多小時(shí),而且還有錯(cuò)誤,提示內(nèi)容如下
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進(jìn)行打包再次上傳。實(shí)際上是因?yàn)槲掖虬腦code版本太高,造成低版本的 Application Loader 無法讀取數(shù)據(jù),我猜就是這個(gè)問題,然后換最新版本的 Application Loader 上傳,但是新問題又出現(xiàn)了,錯(cuò)誤提示如下
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
如圖二:

提示我們提交的版本已經(jīng)存在,好吧,我只能更改內(nèi)建版本號(build)重新打了包。打包后使用了最新版本的 Application Loader 上傳,這次終于把包順利的上傳完成。
此處經(jīng)過3個(gè)多小時(shí)的等待。。。。。。。。。。。。。。。
平時(shí)ipa包上傳成功后,在 iTunes Connect 的構(gòu)建版本處出現(xiàn)一個(gè)加號,點(diǎn)擊加號就可看到上傳成功的包,一般這個(gè)時(shí)間是10分鐘到3小時(shí)不等,但是我已等了3個(gè)多小時(shí),我再次在Xcode中更改了項(xiàng)目的內(nèi)建版本號,打包上傳,又上傳成功了,不過最后有個(gè)警告,因?yàn)槠綍r(shí)提交的時(shí)候也有警告,所以我也沒太注意,無非說ipa包太大或一些其他警告,所以我直接點(diǎn)擊完成。
由于當(dāng)時(shí)已很晚,上傳成功后我就休息去了,想著明天起來后在提交。
新的一天開始了,上班后第一件事就是打開 iTunes connect ,昨晚上傳的兩個(gè)包,確實(shí)已經(jīng)顯示提交成功,但是為何過了這么久構(gòu)建版本中還未出現(xiàn)上傳的包,以前確實(shí)沒出現(xiàn)過這種情況。這個(gè)時(shí)候我們公司的同事提醒我去看一下郵件(由于蘋果賬號的郵箱不是我保管,郵箱領(lǐng)導(dǎo)使用)。
郵件內(nèi)容如圖三:

郵件里面反饋了兩個(gè)問題,第一個(gè)問題是 Info.plist 缺少 NSAppleMusicUsageDescription 這個(gè) Key,原因是這樣的 iOS 10 開始對隱私權(quán)限更加嚴(yán)格,如果你不設(shè)置就會(huì)直接崩潰,我們項(xiàng)目中用到了相機(jī)、相片、定位等功能,相應(yīng)的Key也已經(jīng)添加到了 Info.plist 當(dāng)中,測試和使用也并未發(fā)現(xiàn)崩潰的情況,甚至上傳包的時(shí)候也未報(bào)警告,初步判斷根本原因不是這個(gè)原因,但是我還是把 NSAppleMusicUsageDescription 這個(gè) Key 添加到了Info.plist 中。我查了一下關(guān)于獲取用戶隱私權(quán)限的幾個(gè) Key,如果你不確定你該填哪些Key,直接把所有的都添加進(jìn)去即可如圖四。

第二個(gè)警告
?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."
如圖五:

原因是我們項(xiàng)目中有個(gè)很老的框架做了本地化功能,文件cn.lproj文件無法識(shí)別,我去查看了蘋果的開發(fā)文檔后發(fā)現(xiàn)中文簡體的本地化文件名應(yīng)該命名為 zh-Hans.lproj 而不是 cn.lproj 。
好了,經(jīng)過一番折騰之后,把這倆個(gè)問題解決了,接下來就是見證奇跡的時(shí)刻,重新打包上傳,上傳成功如圖,說明上傳是真的沒有問題了。

等待10分鐘左右刷新 iTunes Connect 頁面,構(gòu)建版本那里終于出現(xiàn)了久違的加號,如圖七

點(diǎn)擊加號選擇剛上傳的 ipa 包,點(diǎn)擊保存再點(diǎn)擊提交審核,至此,所有的問題已解決,接下來就是等待蘋果審核了。