iOS真機測試中出現dyld`dyld_fatal_error錯誤


  最近進入一家新公司,接手了一個之前由外包公司承接的項目。首先吐槽一下項目質量,哎畢竟也憋了很久了。

  1.上手項目是打不開的,所有framework靜態庫全體飄紅,一編譯七八十錯誤。最終是偷懶還是什么就不得而知了。最終慢慢一個個的將靜態庫framework導入Building Phases中,其中又發生了很多意想不到的錯誤。若有人對此有興趣我們可以下次再聊這些問題。

  2.項目代碼分類封裝問題。項目是用Swift寫的,而我之前使用的較多的是Objective-C,Swift用的不多,對Swift的印象就是:一升級Xcode就滿屏紅點;各類三方庫都需要用橋來連接;等等等等諸如此類問題吧。當然這並不是主要槽點,畢竟Swift是個大趨勢,iOS開發人員向前看的話,Swift是必須要了解熟悉到精通的。但似乎目前直接全盤用Swift來寫的公司並不多,大多數都是OC慢慢向Swift轉換吧。直接用Swift寫項目,一定是大神。抱着這樣欣賞的眼光我開始看代碼。然后我恨不得為剛才自己的判斷抽自己兩巴掌。

  所有代碼都沒有分類,除了大的MVC框架,底下的各個小模塊的控制器都混在一個目錄下。然后類的命名上,首字母大小寫不分,直接漢語拼音這種kongtiaoController都出來了。我天對我個強迫症這簡直要親命好嗎。一周工作進度沒多少,全給分辨各式各樣莫名其妙的類名、方法名參數上去了。

  代碼的封裝問題。例子:項目是用Post請求數據,參數在上傳前需要MD5加密,大概30行代碼左右。一般這種哪個類里面都有可能用到的代碼,寫個工具類來執行就完事兒了,代碼看着省心,復用率高。可人偏不,每一頁都復制粘貼一下,就改一個參數,其他都不改原封不動復制粘貼。第一次看到有種砸電腦的沖動,我想大家都懂。

  大概就扯這么多吧。不管怎么樣,拿着老板的錢,就看代碼唄。昏天黑地改了一周代碼后,老板說,打包上傳吧。我說先做個真機測試吧,老板一揮手,去吧。我就回來准備用五分鍾真機測試下就打包,結果就出現了如下的問題:在Build Success,真機打開啟動頁后,程序崩潰,提示如下:

   因為是解決了辦法才來寫博文,之前也沒有截圖問題,現在也不敢亂改回去了。我的錯誤就是log中Pods.framework換成SwiftHTTP。看到之后真心內心是崩潰的。這什么鬼?SwiftHTTP本身就不是我多么熟悉的框架,再加上並不知道具體是什么原因導致的這個問題。得,Google吧。

  最終大概出現了這些解決辦法:

  1.clean&run,不行重啟手機clean&run

    目測某些大神人品擺平一切,我這兒什么都沒有發生。要多扶老奶奶了。

  2.Build Phases中重新導入SwiftHTTP

    什么都沒有發生。

  3.SwiftHTTP的Required換成Optional可選

    這是提及頻率最高的辦法了,也有好多人似乎用這個方法成功解決了問題。大概解釋是使用的框架不支持低的版本,所以設置成可選來配置是否可用。

    哎這是個想法,頓時我就去看了我的Deployment Target,是9.0。難道是這兒的問題?

    首先,9.0換成9.3,安裝,繼續崩潰。

    Required換成Optional,編譯報錯,具體問題忘了,大概就是link不到框架。

    9.3換成9.0,編譯繼續報錯。哎放棄了。

  4.在某個角落發現了這么不起眼的一句話:DFULibrary.framework靜態庫是添加在Embedded Binaries下面的

    當然那個答主是將Embedded Binaries里面的framework轉移到Build Phases中,而我當時除了SwiftHTTP其余的幾個靜態庫都在Embedded Binaries中存在。難道是這個問題?

    試着在Embedded Binaries中導入SwiftHTTP,運行,崩潰。哎我又去設置Required和Optional了,卻意外發現Build Phases中存在兩個SwiftHTTP。難道Embedded Binaries中會自動導入Build Phases?我試着刪除,成功運行。

  五分鍾的真機測試弄了一整天左右吧。哎碰到這種不知所雲的崩潰真是沒什么辦法。

  至今仍不知道為什么會這樣,這也只是解決辦法,原理求大神告知吧。

 


免責聲明!

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



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