之前,公司的項(xiàng)目代碼一直遺留著兩個(gè)的第三方框架庫問題 ,因?yàn)橹坝泻芏嗳蝿?wù)壓身比較忙,就暫時(shí)把其拋到'重要但不緊急’的事項(xiàng)中, 這兩天升級到8.3,有些第三方庫因?yàn)榘姹緵]有升級,所以報(bào)警告比較煩,所以就抽了點(diǎn)時(shí)間研究了下這個(gè)問題.
一:
這個(gè)項(xiàng)目 pod install 之后我發(fā)現(xiàn)并沒有更新到最新版本的第三方庫 并且出現(xiàn)以下的警告 運(yùn)行代碼就會(huì)第三方庫全體報(bào)錯(cuò),無止境修改代碼就是無法運(yùn)行
所以,先從這些警告入手, 進(jìn)入工程項(xiàng)目文件夾 ->右鍵點(diǎn)擊 .xcodeproj 文件 顯示包內(nèi)容 -> 打開 .pbxproj 文件 -> 文本搜索提示警告的內(nèi)容 ‘OTHER_LDFLAGS’ 和’ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES’ -> 找到這些內(nèi)容刪除
然后輸入 pod update 進(jìn)行更新, 就可以看見CocoaPods 將第三方庫內(nèi)容 更新最新版本 , 再次運(yùn)行工程項(xiàng)目代碼, 就可以運(yùn)行了
二:
升級到Xcode 8.3 版本之后, iPad 版本 無法運(yùn)行, 第三方庫報(bào)錯(cuò) :
Module compiled with Swift 3.0.2 cannot be imported in Swift 3.1
首先我在 Stackoverflow 中搜索類似問題 ,得到的答案大部分都是在工程文件BulidSettings 將 Swift Language Version
這個(gè)屬性設(shè)置為 YES ,可是在我這里并不能解決問題.
最后經(jīng)過分析,是因?yàn)?第三方庫的編譯版本是3.0 而升級之后需要利用3.1進(jìn)行編譯 , 需要更新第三方動(dòng)態(tài)庫, 發(fā)現(xiàn)了是用 Carthage 來管理第三方庫的, 更新第三方庫在 SwiftyJSON 處報(bào)錯(cuò)無法更新完成, 提示操作超時(shí), 在 Google 搜索解決方案, 發(fā)現(xiàn)現(xiàn)在暫時(shí)無解,因?yàn)?SwiftyJSON 暫時(shí)沒有出 Carthage 的3.1版本, 沒有解決辦法,那是不行的,既然 Carthage 無法使用, 那沒辦法只能更換到 CocoaPods 了.
新建了個(gè)分支,將項(xiàng)目整體拖過來將有關(guān) Carthage 的文件全部刪除, 更換成 Pod 文件進(jìn)行更新,更新完成進(jìn)入項(xiàng)目中編譯,就會(huì)發(fā)現(xiàn)兩個(gè)錯(cuò)誤
看見報(bào)錯(cuò)不要慌.. 慢慢來 分析分析
看了報(bào)錯(cuò)會(huì)發(fā)現(xiàn),是之前的配置沒有刪除, 所以還在找之前的配置路徑, 知道為什么 就可以解決了.
在 Bulid Phases 中找到 Run Script 刪除方框內(nèi)的配置
刪除了之后還會(huì)出現(xiàn) 第一個(gè)警告 ,那肯定還是哪里有配置文件沒有刪干凈了, 下來怎么找呢.
利用全局搜索 , 找到了 這個(gè)地方還在用 ,那就對了, 刪除他
再次運(yùn)行項(xiàng)目, 完美運(yùn)行,沒有任何警告報(bào)錯(cuò). 美滋滋, 哎這就很舒服
完!