Telegram學習解析系列(三) : Build Telegram報錯分析總結


        正好通過這次 Telegram 的運行,很想把常見的項目運行的錯誤好好的總結一下,在前面的博客中,又星星散散的總結過錯誤和一些警告的消除方法,這次把錯誤處理一下,還有Telegram項目中有999+的警告,我這種有潔癖的人,哈哈~准備把警告也消除一下,到時候再整理一篇警告消除的方法,還有以前的那些警告和錯誤消除的方法,都總結出來,希望可以幫到有需要的同學。

        當然我們所要說的這些,都是圍繞着Telegram展開的,先看看你下載了Telegram的源碼的時候,會最先看到的問題,看下圖:

     

 

      這個是最簡單的問題,就是文件丟失的問題:這個問題是挺簡單,但在目前最新的3.18版本的Telegram的項目中,你需要一下幾點:

        1、目前這個版本的Telegram里面是沒有適配最新版本的 MtProtokit 的,你要是把最新的 MtProtokit 加進去的話是要修改3.18項目的源碼的。

     2、上面所缺的文件的原本的位置不是在圖上所示的地方的,最好你Show in finder 一下它們上層的文件,因為你要是改了這里文件的文件的位置的話,你是需要修改 Build Settings 里面相對應的文件路徑的,就比較的麻煩。

總結項目運行中你會可能遇到的問題:

 一:找不到頭文件

         下面就是在Telegram中,頭文件找不到的問題:

         找不到頭文件無非也就這兩種種情況:

         1、相對應的文件或者庫沒有導入

         2、頭文件的路徑不對

         就像我們在使用Cocopods的時候,你Pod完三方之后,可能發現會有些頭文件提示 '.....' file not found,我們就會在Build Settings 菜單,找到\”User Header Search Paths\”設置項新增一個值"${SRCROOT}",並且選擇\”Recursive\”,這個"${SRCROOT}"表示當前工程的根路徑,$(PROJECT_DIR)表示的其實和"${SRCROOT}"相差不是很大,你要是上網搜一下很多都是"$(SRCROOT)"代表的是項目根目錄下,"$(PROJECT_DIR)"代表的是整個項目,你理解了沒?哈哈哈。。好了,這里是在Stackoverflow找到的What the different between SRCROOT and PROJECT_DIR?,希望能幫助到你理解它們。

Telegram里面還有下面這個文件:

          這個文件的在我們最下面展示出來的群文件里面有,需要的可以去下載后拉到你的項目中。

二: Undefined symbols for architecture XXX

         先說說后面這個XXX,這個XXX可能會是armv7、armv7s、arm64、i386、x86_64等,大概會是這幾類,遇到的錯誤就像下面的這張圖一樣的,這張圖首先不是我在Telegram截圖的,這是我在晚上照的,在這里做一個參考吧。 

       要是說這個錯誤的話,說實話很多問題都會導致上面這個錯誤的出現,但記住大部分的情況,或者主要的一點---還是缺framework或.tbd。

        這里我就不在一一的重復說明能出現的情況了,這里有一片博客,正對這個問題總結的更多一點,鏈接給大家:

        Xcode編譯Undefined symbols for architecture xxx 錯誤總結 (感謝作者!)

        當然我們這個錯誤我們上面說的是在缺framework或.tbd的情況下,這個問題大部分出在你導入的第三方的東西之后,這個時候除了你要檢查是不是缺了framework或.tbd,當然還有一種情況是想特別說一下的就是真的就是這個Architectures出的問題,先說說上面我們提過的像armv7、7s的意義都理解還是不知道,這里也補充總結一下,方便自己以后回顧。

 

     先把鏈接拋出來。,這篇說的大概也都OK了,能夠幫助你了解這個arm是什么:armv6, armv7, armv7s, arm64 的區別 (感謝作者!)

      熟悉了上面的armv,再來看看要是你的金泰庫真的不支持相應的架構,你怎么檢查怎么處理?

      1、終端檢查 lipo - info 你的靜態庫路徑 

      2、看終端的信息,你就可以看到這個靜態庫是不是真的不支持那個架構,不支持的話就兩個辦法,要么設備不在支持,要么找支持改框架的靜態庫。

      比如下面友盟加入的時候,可能會出現下面的問題:

 

       還有一種情況我就簡單的說一下,就是在下面的地方,缺相應的文件,比方說"AAAA", referenced from:BBBB.o,這是就可能是缺相應的BBBB,要么.m要么.h。那就在相應的下面的地方添加相應的文件:

 

         這個錯誤大概就說這么多吧,肯定還有其他的原因造成這個問題出現的,當然解決的辦法我相信也很多很多,出現這種問題的時候,給大家點建議,不要因為出錯擋住了就感覺沒辦法了,全世界的找人找群去問,當然不是說問了有錯,只是希望你一定要親自多試試,多試試肯定會有結果的,而且還要多總結,這種東西你要一總結了以后遇到可以翻以前自己寫的東西,不總結,每次遇到都是一頭霧水。畢竟錯誤不是常常有,一年能遇到多少次,以前遇到的,過個三個月估計就成新的了,尤其我這種人,好咯,接着往下面寫。

三:這個就是順便提一下

        還有一個問題就是在弄這個Telegram錯誤分析的時候,一個朋友順便問我的,就是這個 Reason: image not found,上面我們提過的這兩點,其實是很幾點,就幾乎包括了Telegram會出現的所有的運行的錯誤了,這個只是順便提一下,這個問題其實也簡單,網上很大部分都是將后面的Required改成 Optional 。

        這個辦法能解決上面的問題,但其實這不是徹底的解決辦法,這個   Reason: image not found  的問題正確的徹底的解決辦法是:把它添加到General 的 Embedded Binaries 中!

 

 

   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM