Xcode 7 中 CocoaPods 編譯報錯 dyld: Library not loaded: @rpath/Pods.framework/Pods


問題症狀與解決

在 Xcode 7 beta 3 (7A152u) 中創建 Swift 項目,並使用 CocoaPods 做依賴管理,編譯時會遇到如下的報錯:

dyld: Library not loaded: @rpath/Pods.framework/Pods
  Referenced from: /private/var/mobile/Containers/Bundle/Application/26B91138-7483-40B0-9BE6-D27072472895/AppName.app/AppName
  Reason: image not found
(lldb) 

這個錯誤只在真機測試上遇到,模擬器沒有問題。

解決方案是點擊 target 的 Build Settings,切換到 All,搜索 bitcode,將其設置為 No,即可編譯通過。

 

Bitcode 介紹

當項目進行編譯時,Xcode 使用 clang 或者 swiftc 對項目進行編譯,然后交給 LLVM 來創建二進制的包,以適配虛擬機(x86/64)和真機(arm6/arm7/arm7s/arm64)環境。這樣得來的二進制包,被稱為“胖二進制包”(Fat Binary)。

如果啟用 Bitcode 的話,那么生成“胖二進制包”的過程會被去掉,LLVM 只會生成一個中間語言 bitcode 包。這么干是有不少好處的,但是就不能在所有環境運行了,所以后面一步打包工作總是需要有人來做的——App Store來干這個事兒。這樣一來,包體積更小,運行也更快了,也是 iOS9 “瘦身功能”的一部分。未來,所有的 WatchOS 應用會強制 bitcode 提交,但 iOS 應用還沒有這個要求。

 

參考

App Thinning (iOS, watchOS):
https://developer.apple.com/library/prerelease/watchos/documentation/IDEs/Conceptual/AppDistributionGuide/AppThinning/AppThinning.html

Fat Binary:
https://en.wikipedia.org/wiki/Fat_binary#Apple.27s_Universal_binary

LLVM:
https://zh.wikipedia.org/wiki/LLVM

Impact of Xcode build options “Enable bitcode” Yes/No:
http://stackoverflow.com/questions/31088618/impact-of-xcode-build-options-enable-bitcode-yes-no

Xcode 7 dyld:Library not loaded image not found:
https://github.com/CocoaPods/CocoaPods/issues/3661

dyld: Library not loaded: @rpath/Pods.framework/Pods
https://github.com/CocoaPods/CocoaPods/issues/3586


免責聲明!

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



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