標籤:
在開發中,不免需要引入第三方庫,但是因為庫的問題,會發生很多錯誤。如:
1.因為一些第三方庫不包含bitcode就會報錯:
一次使用xcode7.1時,發現編譯失敗,報錯資訊:
umeng message.sdk does not contain bitcode. You must rebuild it with bitcode enabled (Xcodesetting ENABLE_BITCODE), obtain an updated library from the vendor, or disablebitcode for this target. for architecture arm64
說我匯入的友盟推送sdk沒包含bitcode.
查了很多資料:
bitcode是被編譯器的一種中間形式的代碼。包含bitcode配置的程式將會在App store上被編譯和連結。bitcode允許蘋果在後期重新最佳化程式的二進位檔案,而不需要重新提交一個新的版本到App store上。當提交程式到App store上時,Xcode會將程式編譯為一個中間表現形式(bitcode)。然後App store會再將這個botcode編譯為可執行檔64位或32位程式。
其英文:
Bitcode is an intermediate representationof a compiled program. Apps you upload to iTunes Connect that contain bitcodewill be compiled and linked on the App Store. Including bitcode will allowApple to re-optimize your app binary in the future without the need to submit anew version of your app to the store.
Bitcode. When you archive for submission tothe App Store, Xcode will compile your app into an intermediate representation.The App Store will then compile the bitcode down into the 64 or 32 bitexecutables as necessary
You must rebuild it with bitcode enabled(Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, ordisable bitcode for this target. for architecture arm64
要麼讓第三方庫支援,要麼關閉bitcode選項。
實際上,在Xcode 7中,我們建立一個iOS程式時,bitcode選項預設是設定為YES的。我們可以在”Build Settings”->”Enable Bitcode”選項中看到這個設定。不過,我們現在需要考慮的是三個平台:iOS,Mac OS,watchOS。
對於iOS,bitcode是可選的;對於watchOS,bitcode是必須的;而Mac OS是不支援bitcode。
如果我們開啟了bitcode,在提交包時,下面這個介面也會有個bitcode選項:
通過以上方法可以通過編譯,但是這樣就無法archive了,如果想要提交APP store可以通過iTunes擷取ipa包,通過xcode內建的提交工具上傳即可。
2.使用cocoapods匯入開發包真的很方便,但是有很多詭異的地方,在使用pod install開始匯入時,會發生一些警告:
如
說實話這個警告一開始我並沒管,而是在項目裡修改錯誤,但是修改了好久,還是這樣的錯誤,真的越改越錯,方法也無所不用極其。
一開始出現的錯誤大致是:not found find _liPOds
最終在網上發現了:
(1)開啟工程所在檔案夾,找到.xcodeproj的檔案,然後顯示包內容,找到project.pbxproj檔案,如下:
(2)用文字編輯器開啟,然後尋找`OTHER_LDFLAGS`這個東西,把有關這個東西的地方都刪掉(應該有四處),如:
(3)刪除完以後,在終端重新update一下,如下(就沒有下面兩個黃歎號了,解決完畢)
(4)在編譯運行我們的工程,編譯通過~
iOS開發:bitcode介紹和使用cocoapods出現“target overrides the `OTHER_LDFLAGS`……”的解決方案