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