解決方法
使用Xcode 9重新打包,安裝包下載地址语稠。xip格式Xcode 9.4 安裝包下載地址
問題描述
Xcode10 更新后纺荧,使用它發(fā)布新版。但是線上崩潰率劇增颅筋,且集中在iOS9.0、iOS9.1输枯、iOS9.2這三個系統(tǒng)上议泵。奔潰堆棧看桃熄,多數(shù)崩潰與UIImage相關先口,但是除了奔潰集中在這三個系統(tǒng)以外,并無規(guī)律可循瞳收。
艱辛歷程
1碉京、根據(jù)奔潰堆棧,搜索相關解決方案螟深,恭喜你入坑了谐宙。
大部分崩潰中都包含了下面的調(diào)用
[CUIStructuredThemeStore renditionWithKey:usingKeySignature:]
所以初期導向了類似以下的解決方法:這里列舉簡書上的(http://www.reibang.com/p/7f736a86a065),其他方法類似界弧。
但是實際測試發(fā)現(xiàn)凡蜻,和圖片格式?jīng)]有關系,修改之后問題依然存在垢箕。
這里補充一下划栓,這個問題Debug模式未必能出現(xiàn),但是release卻可以穩(wěn)定復現(xiàn)条获,有內(nèi)測環(huán)境的可以比較方便出包驗證忠荞,沒有條件的建議可以使用TestFlight做beta測試(再補充一下,發(fā)現(xiàn)TestFlight在iOS9.2上奔潰率也非常高帅掘,所以這個問題驗證起來很痛苦)委煤。
2、開始排查變量锄开,懷疑編譯器的問題素标。
一番緊張折騰之后,問題沒有解決萍悴,冷靜下來分析头遭,最大的變量和隱患就是編譯器的問題寓免,畢竟剛升級的Xcode 10,且搜索發(fā)現(xiàn)Xcode8.0發(fā)布時就發(fā)生過類似問題计维,難道蘋果又犯了同樣的錯誤袜香?抱著試一試的態(tài)度,尋找Xcode10相關的Bug帖子鲫惶,結(jié)果在stackoverflow中還找到了答案蜈首。果然還是Xcode 10 的坑。
3欠母、讀完帖子大體有兩種方法解決:
- 提高DeploymentTarget到iOS9.3或更高
- 重新使用Xcode 9重新打包(如果調(diào)用了iOS12才有的API,使用Xcode9只能用iOS11的SDK編譯欢策,調(diào)用最新API的地方只能通過 NSInvocation 來解決。NSInvocation只了解過赏淌,沒啥實際使用經(jīng)驗踩寇,附上兩個入門介紹:介紹1、介紹2
對比之后六水,如果沒有調(diào)用iOS12的新增API俺孙,可以直接使用Xcode9重新編譯上傳。由于多數(shù)開發(fā)者升級Xcode10之后掷贾,沒有保留舊版睛榄,蘋果官網(wǎng)也沒有找到舊版的下載地址,這里附上xip格式Xcode 9.4 安裝包下載地址
Apple也意識到了這個bug想帅,并發(fā)布了Xcode 10.1 beta 2修復了這個bug场靴,但是這個beta版本無法上傳AppStore,所以在Xcode 10.1正式版沒有發(fā)布之前港准,最好還是使用Xcode 9重新打包修復這個問題憎乙。
請注意
Xcode 10.1 Release版依然沒有修復這個問題!在其release Note 的Known Issues 中醒目得寫著
- Apps that contain asset catalogs built using Xcode 10 or later with a deployment target set to iOS 9.0, 9.1 or 9.2 produce content incompatible with the runtimes of those iOS versions. (44535967, 45723580, 45723189)
想當然的以為這個Release會修復這個問題叉趣,但是從線上崩潰率看泞边,應該是部分修復了,崩潰率已經(jīng)減少了疗杉,但依然存在(這里不排除前期問題的影響阵谚,對iOS9.0-9.2的用戶進行了一輪血洗,造成這個系統(tǒng)的用戶數(shù)量較少烟具,進而崩潰率降低)梢什。提醒各位,線上發(fā)版還是要謹慎朝聋,編譯器的嚴重bug嗡午,必須確認真切后再更新使用,避免二次入坑冀痕。