為什麼Enable BitCode(Xcode7)真機測試要修改為 NO
隨著 Xcode7的面世,我們都清楚的知道,他可以不通過https://developer.apple.com中的測試證書就可以真機測試了,對於我們開發者來說這是一個很好地事情,但是也會出現一些問題。
我們在做專案的時候,或多或少的會用的到第三方類庫,那麼問題來了,當你用 xcode在真機(iOS 8.3)上執行一下工程,結果發現工程編譯不過。看了下問題,報的是以下錯誤:
ld:‘/Users/**/Framework/SDKs/PolymerPay/Library/mobStat/lib**SDK.a(**ForSDK.o)’doesnot contain bitcode. You must rebuild it with bitcode enabled (XcodesettingENABLE_BITCODE), obtain an updated library from the vendor, or disablebitcodefor this target. for architecture arm64
看警告可以得到的資訊是"引入的一個第三方庫不包含bitcode"。嗯? bitcode是神馬東西呢?
好吧我們去查詢一下API吧,終於找到了
在Distribution Guide–App Thinning (iOS, watchOS)一節中,找到了:
Bitcode is an intermediate representationof a compiledprogram. Apps you upload to iTunes Connect that contain bitcodewill be compiledand linked on the App Store. Including bitcode will allowApple to re-optimizeyour app binary in the future without the need to submit anew version of yourapp to the store.
說的是bitcode是被編譯程式的一種中間形式的程式碼。包含bitcode配置的程式將會在App store上被編譯和連結。bitcode允許蘋果在後期重新優化程式的二進位制檔案,而不需要重新提交一個新的版本到App store上。
還有在What’sNew in Xcode-New Features in Xcode 7中,還有一段如下的描述:
Bitcode. When you archive for submission tothe App Store,Xcode will compile your app into an intermediate representation.The App Storewill then compile the bitcode down into the 64 or 32 bitexecutables asnecessary.
當提交程式到App store上時,Xcode會將程式編譯為一箇中間表現形式(bitcode)。然後App store會再將這個botcode編譯為可執行的64位或32位程式。
可到這裡,我還是不太明白是神馬意思,通過查閱相關資料,得出的結論是這個東西應該和包得優化有關。
出現問題,我們要想辦法解決它
在上面的錯誤提示中,提到了如何處理我們遇到的問題:
You must rebuild it with bitcode enabled(Xcode settingENABLE_BITCODE), obtain an updated library from the vendor, ordisable bitcodefor this target. for architecture arm64
意思就是說:要不你第三方類庫支援 bitcode要不你就關掉它
好吧,我們只能選擇後者了
我們來看看他在那裡?
新建一個工程,我們可以在”Build Settings”->”EnableBitcode”選項中看到這個設定。當然我這裡是改過的,其實新建的 xcode 工程 bitcode是預設開啟的!
好了改成 NO就可以真機測試了!要是打包沒有改為 NO的話.再上傳包的時候是可以看到這個選項的,截圖我就不發了。
相關文章
- Xcode7 真機測試設定XCode
- 為什麼要虛擬化,為什麼要容器,為什麼要Docker,為什麼要K8S?DockerK8S
- 單元測試效率優化:為什麼要對程式進行測試?測試有什麼好處?優化
- 測試人員為什麼必須要會 LinuxLinux
- Twitter的A/B測試實踐(一):為什麼要測試以及測試的意義
- 介面測試要測試什麼?
- 軟體測評中心簡要分析:為什麼要進行軟體效能測試?
- 為什麼要removeREM
- 為什麼要敏捷?敏捷
- 測試人員為什麼要深入到專案實現中去?
- 為什麼要做介面測試?怎麼做?
- 為什麼要參加軟體測試培訓?有哪些優勢?
- 為什麼軟體測試外包更好?
- 為什麼要code reviewView
- 介面測試的價值(為什麼要做介面測試)
- 既然測試地位不高,為什麼你還要做測試?
- 軟體為什麼要進行安全測試?可做安全測試的軟體檢測公司安利
- 為什麼要選擇電話機器人?機器人
- 為什麼軟體測試需要變革?
- 為什麼要學習 RustRust
- 為什麼要學習 Julia
- 為什麼要指令重排序?排序
- 為什麼要學習 Vim?
- 為什麼要選擇SQL?SQL
- MySQL為什麼要set namesMySql
- 我就想學介面測試,為什麼還要學 Fiddler 抓包,抓包是什麼鬼?
- 設計師為什麼要學程式設計,開發者為什麼要學設計?程式設計
- 自動化測試落地為什麼那麼難
- 軟體產品為什麼要進行介面測試?權威第三方軟體測試機構推薦
- 為什麼要學習自動化測試?這篇文章告訴你答案
- 我們為什麼要嘗試前後端分離後端
- 雲真機可以幫助測試解決什麼問題?
- 為什麼要成為「無敵」程式設計師?程式設計師
- 為什麼想成為 Geeker 的人要學習 JSJS
- 為什麼 JavaScript 的 this 要這麼用?JavaScript
- 為什麼放棄精準測試平臺?
- 為什麼測試人員必學Linux?Linux
- 【知識分享】伺服器為什麼要測壓需要注意什麼伺服器