描述
這幾天準(zhǔn)備更新打包上線,遇到一個(gè)很奇葩的問題。打包構(gòu)建成功了,也上傳成功了!奇怪的現(xiàn)象就發(fā)生了!在 iTunes Connect -> TestFlight ->構(gòu)建版本 那一欄顯示狀態(tài) “正在處理” ,就去忙別的了,過了一個(gè)小時(shí)發(fā)現(xiàn)構(gòu)建上傳的版本不見了??? 反復(fù)試了好幾次發(fā)現(xiàn),結(jié)果都是“正在處理”后就莫名的消失了!接下來就談一談上線遇到的坑。
15627DB6-FD33-4DE2-998D-4D910BDEAD98.png
APP打包上傳后在構(gòu)建版本中不顯示
構(gòu)建版本出現(xiàn)的那些坑:
聲明一下我現(xiàn)在用的是Xcode9.1 別的版本沒時(shí)間測(cè)試,就談?wù)?xcode9.1 的原因吧 !
1.緩存:蘋果的ituness connect 有個(gè)緩存機(jī)制,或許有些人不了解,在上傳app成功后,明明已經(jīng)審核通過卻沒有發(fā)現(xiàn)app上架,這個(gè)其實(shí)是apple的緩存機(jī)制,只要把地區(qū)和app價(jià)格修改一下隨便,然后保存,在修改過來,等一下時(shí)間,就會(huì)上架并且可以搜索到了,單個(gè)人推測(cè)原因不是,僅列出可能性。
2.構(gòu)建版本無效:這個(gè)例子說實(shí)話我碰見的很少,構(gòu)建版本這個(gè)東西在第一次上架以后,基本上只需要改動(dòng)版本號(hào)和更新信息就好了,特別的意外吧
3.權(quán)限請(qǐng)求沒到位:這個(gè)原因是我認(rèn)為最可能的。并且跟同事測(cè)試過,上傳了兩個(gè)版本,一個(gè)帶請(qǐng)求權(quán)限,一個(gè)不帶的,事實(shí)是帶權(quán)限的可以通過,不帶的就會(huì)消失
【解決辦法:在項(xiàng)目中,對(duì)相冊(cè),相機(jī)之類的權(quán)限請(qǐng)求是,在info.plist文件里面添加key權(quán)限。特別注意的一點(diǎn),key值對(duì)應(yīng)的string字段,一定一定要寫,為什么呢,不寫也會(huì)版本消失的】
<key>NSAppleMusicUsageDescription</key>
<string>音樂權(quán)限</string>
<key>NSBluetoothPeripheralUsageDescription</key>
<string>藍(lán)牙權(quán)限</string>
<key>NSCalendarsUsageDescription</key>
<string>日歷權(quán)限</string>
<key>NSCameraUsageDescription</key>
<string>攝像頭權(quán)限</string>
<key>NSContactsUsageDescription</key>
<string>通訊錄權(quán)限</string>
<key>NSHealthShareUsageDescription</key>
<string>健康權(quán)限</string>
<key>NSHealthUpdateUsageDescription</key>
<string>健康權(quán)限</string>
<key>NSHomeKitUsageDescription</key>
<string></string>
<key>NSLocationAlwaysUsageDescription</key>
<string>地理位置權(quán)限</string>
<key>NSLocationUsageDescription</key>
<string>地理位置權(quán)限</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>地理位置權(quán)限</string>
<key>NSMicrophoneUsageDescription</key>
<string>麥克風(fēng)權(quán)限</string>
<key>NSMotionUsageDescription</key>
<string>運(yùn)動(dòng)權(quán)限</string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>添加圖片權(quán)限</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>相冊(cè)權(quán)限</string>
<key>NSRemindersUsageDescription</key>
<string></string>
<key>NSSiriUsageDescription</key>
<string>Siri權(quán)限</string>
<key>NSSpeechRecognitionUsageDescription</key>
<string>語(yǔ)音識(shí)別權(quán)限</string>
<key>NSVideoSubscriberAccountUsageDescription</key>
<string></string>
4.私有API:其實(shí)這個(gè)可能不大,一般是在版本構(gòu)建以后,并且提交以供審核后用郵件提示的,只是提出這種可能,以我的經(jīng)驗(yàn),對(duì)于分享和第三方登錄時(shí),在新浪的sdk里面,絕逼百分之780含有廣告字符和私有api,還有g(shù)oogle的分享的登錄,這個(gè)基本上可定會(huì)含有的,建議不用,實(shí)在用的話,請(qǐng)搜索用終端命令去掉廣告字符和API的復(fù)雜方法
提醒:注意查看蘋果郵件反饋信息
5.BitCode:可以為目標(biāo)安裝App的設(shè)備進(jìn)行優(yōu)化二進(jìn)制,減小安裝包的下載大小,當(dāng)然iOS開發(fā)者也可以上傳多個(gè)版本而不是打包到單個(gè)包里,但是這樣會(huì)占用更多的存儲(chǔ)空間. 最重要的是允許蘋果可以在后臺(tái)服務(wù)器對(duì)應(yīng)用程序進(jìn)行簽名,而不用導(dǎo)出任何密鑰到終端開發(fā)者那.
(看起來沒什么作用,經(jīng)過我的幾個(gè)打包上傳測(cè)試發(fā)現(xiàn)如果不設(shè)置為Yes同樣也會(huì)消失)
注:Enable Bitcode -> YES
4CBD8F25-4031-47CB-9136-0AD82842DD3A.png
蘋果發(fā)來的郵件:
While processing your iOS app, XXX版本 1.0.3(1.0.3), errors occurred in the app thinning process, and your app couldn’t be thinned. If your app contains bitcode, bitcode processing may have failed. Because of these errors, this build of your app will not be able to be submitted for review or placed on the App Store. For information that may help resolve this issue, see Tech Note 2432.
譯:拒絕的理由好像是bitcode壓縮失敗,但是我的工程由于第三方不支持,已經(jīng)關(guān)閉了bitcode.難道現(xiàn)在蘋果強(qiáng)制要求開發(fā)者必須支持bitcode功能嗎?
Bitcode是什么?
點(diǎn)擊試試看Bitcode
iOS 打包上線 bitcode問題
6.在iTunes Connect的應(yīng)用上傳詳情頁(yè),點(diǎn)擊“活動(dòng)”,查看已上傳的二進(jìn)制文件狀態(tài)。
如果上傳后顯示正在處理,刷新后沒有任何版本顯示,這時(shí)候此二進(jìn)制文件很有可能已經(jīng)被判定為無效的二進(jìn)制文件了。請(qǐng)到開發(fā)者的郵箱中查看郵件,Apple會(huì)發(fā)郵件說明詳情:
596CF218-D60F-42C4-9A6D-EDDB46AFE09B.png


