簡體   English   中英

Xcode 7警告:對象文件是為較新的iOS版本而不是鏈接而構建的

[英]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。

我的修復方式:

  1. 檢查“部署目標”是否等於Podfile“平台”
  2. 刪除DerivedData(/ Users / yourUser / Library / Developer / Xcode)
  3. Pod安裝(終端)
  4. 清潔/建造項目

如果需要,可以添加更多信息。

目標/構建設置/鏈接/其他鏈接器標志中 ,添加

-w

為我保持警告。

僅供參考,相關豆莢的最新版本似乎已經解決了這個問題。

具體來說,看起來GoogleInterchangeUtilities從1.0.0升級到1.1.0就可以了。

如果你看到這個,“pod更新”應該會讓一切變得更好!

在我的情況下,原因是我剛剛更新了pods然后將deployment target更改為低於之前的狀態並獲得了此類警告。 再次運行pod update可解決此問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM