問題情景:
我們有個(gè)老項(xiàng)目,云信的推送不管用了。經(jīng)過測(cè)試,是云信的SDK版本太老了導(dǎo)致的?,F(xiàn)在需要更新這個(gè)SDK。
但當(dāng)時(shí)Podfile中存在問題,我不能直接依靠cocoapods更新。(這情況有點(diǎn)繞)
當(dāng)初集成的時(shí)候,pod的代碼片段是這樣的
pod 'NIMSDK','5.6.0'
pod 'M80AttributedLabel'
pod 'CocoaLumberjack'
pod 'FMDB'
pod 'SSZipArchive'
對(duì)應(yīng)的NIMSDK內(nèi)容

其他的UI代碼都是直接拖入項(xiàng)目中的。
所以我遇到了幾個(gè)坎。
1、官方文檔受挫(我沒get到關(guān)鍵點(diǎn))。
我首先去找了官方文檔,里面介紹了 'NIMSDK_LITE' 和 ' NIMKit '
SDK開發(fā)集成
而未正確的找到該地址,這里面才是完整的'NIMSDK'
SDK開發(fā)集成
下面我介紹下
'NIMSDK_LITE' 、' NIMKit ' 、 ' NIMKit /Lite' 、'NIMSDK' 、'NIMKit/Full'
這幾個(gè)庫(kù)的區(qū)別和關(guān)系
'NIMSDK_LITE' 是' NIMKit ' 對(duì)應(yīng)的SDK包,' NIMKit ' = 'NIMSDK_LITE' + UI界面+其他第三方依賴庫(kù)。特性是只包含NIMSDK、沒有音視頻模塊。
' NIMKit /Lite' 就是' NIMKit ',兩者沒差別
'NIMSDK' 是' NIMKit ' 對(duì)應(yīng)的SDK包,' NIMKit ' = 'NIMSDK' + UI界面+其他第三方依賴庫(kù)。特性是包含了NIMSDK和NIMAVChat,包含了即時(shí)通訊模塊和音視頻模塊,是完整版本的網(wǎng)易云信。
2、framework文件關(guān)聯(lián)變化
項(xiàng)目舊的NIMAVChat文件夾中內(nèi)容為

而新的NIMAVChat文件夾中內(nèi)容為

直接替換的話會(huì)因?yàn)槿鄙貼MC、NMCBasicModuleFramework而發(fā)生報(bào)錯(cuò)
所以要把這個(gè)Framework加入項(xiàng)目中。
Targets->Build Phases->Copy Files,把需要的framework加入其中,編譯。
如果報(bào) was built for iOS + iOS Simulator. 這種錯(cuò)誤,就去Build Settings中找Validate Workspace,改為YES
如果編譯時(shí)代碼出現(xiàn)錯(cuò)誤,那么就去對(duì)應(yīng)類中進(jìn)行調(diào)整。常見的的應(yīng)為SDK更新某些接口參數(shù)等發(fā)生了變化。
3、提交App Store時(shí)發(fā)生 unsupported architectures '[x86_64]'. 錯(cuò)誤
原因是SDK中有x86_64架構(gòu)。
還是以NMC.framework為例
拷貝一份,放到桌面
cd 到 NMC.framework 目錄
查看包含什么架構(gòu) lipo -info NMC
(這里我偷懶用了NIMSDK的圖)

移除 x86_64架構(gòu)
lipo -remove x86_64 NMC -o NMC
再檢查一下,是否還存在x86_64 架構(gòu)
lipo -info NMC
如果沒有x86_64架構(gòu)了,就把新的framework拖入項(xiàng)目中,使用,重新提交App Store
另外還可以使用Run Script對(duì) i386 和 x86_64 架構(gòu)剝離二進(jìn)制的
unsupported architectures '[x86_64]解決方法
至此,所有問題解決