![](/img/trans.png)
[英]Why am I getting: Object file was built for newer iOS version than being linked?
[英]Xcode 7 warnings: object file was built for newer iOS version than being linked
我最近將Google Cloud Messaging集成到面向iOS 7和iOS 8的應用中。剛剛抓住Xcode 7 beta 4開始支持iOS 9,現在我從鏈接器收到錯誤:
ld: warning: object file (.../Pods/GoogleInterchangeUtilities/Libraries
/libProtocolBuffers.a(Descriptor.pb.o)) was built for newer iOS version (8.3)
than being linked (7.0)
和一些更像是libProtocolBuffers.a的所有部分。
這是否意味着iOS 8.3需要使用GCM庫? 如果是這樣,為什么Xcode 6會愉快地吐出代碼(通過我在iOS 7設備測試中的所有外觀)向iOS 7.3發送推送通知而沒有問題?
鑒於它們只是警告,我仍然可以正常編譯,但我不想發布錯誤的代碼。
編輯:我通過電子郵件發送谷歌,他們說頂級人物會調查它。 與此同時,如果您正在閱讀此內容並受到警告的困擾,也許還會發送電子郵件,以便鼓勵他們處理此問題。
這只是意味着GCM所依賴的其中一個庫(協議緩沖區)是為8.3而構建的,盡管它與GC的min sdk版本即7.0兼容。 XCode 7更加嚴重,並將其作為警告報告,但它始終沒有被先前版本報告。
總的來說,這只是無害的,一切都應該正常。 除非谷歌通過使用min sdk版本(7.0)構建所有依賴關系來修補GCM,否則你無能為力。
它實際上意味着所包含的庫的最小部署目標是8.3並且將其與較低的最小部署目標鏈接會產生此警告。
在這種情況下,圖書館不正式支持低於8.3的目標。 雖然將此庫鏈接到具有“最低部署目標”的目標仍然有效,但如果在運行早於8.3的系統的設備上執行任何僅8.3代碼,則它可能會在運行時產生崩潰。
開發人員將8.3設置為最小目標是有原因的, 不應忽略此警告。 在這種情況下它可能是無害的,但在其他情況下它不一定是無害的!
要修復這些警告,請使用較舊版本的庫或將最低部署目標設置為8.3。
我的修復方式:
如果需要,可以添加更多信息。
在目標/構建設置/鏈接/其他鏈接器標志中 ,添加
-w
為我保持警告。
僅供參考,相關豆莢的最新版本似乎已經解決了這個問題。
具體來說,看起來GoogleInterchangeUtilities從1.0.0升級到1.1.0就可以了。
如果你看到這個,“pod更新”應該會讓一切變得更好!
在我的情況下,原因是我剛剛更新了pods
然后將deployment target
更改為低於之前的狀態並獲得了此類警告。 再次運行pod
update可解決此問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.