Google Maps SDK的Xcode 7链接器问题

时间:2015-07-26 21:12:16

标签: ios xcode google-maps google-maps-sdk-ios xcode7-beta4

我刚刚下载了Xcode 7 beta 4并且正在尝试构建我的Swift 2.0应用程序,但是我收到以下错误,我无法找到解决方案:

  

ld:警告:-weak_framework在使用时被视为-framework   -bitcode_bundle(Xcode设置ENABLE_BITCODE = YES)。根据标头ld中的可用性标记,仍可能发生弱链接:   '路径/荚/谷歌地图/框架/ GoogleMaps.framework /谷歌地图(GMSBillingPointRecorder.o)'   不包含bitcode。您必须在启用bitcode的情况下重建它   (Xcode设置ENABLE_BITCODE),从中获取更新的库   供应商,或禁用此目标的bitcode。对于架构arm64   clang:错误:链接器命令失败,退出代码为1(使用-v查看   调用)

有谁知道如何解决这个问题?

4 个答案:

答案 0 :(得分:22)

ENABLE_BITCODE 标记设置为解决问题。

对于那些想知道是否安全禁用它的人。 是的。

根据Apple Doc

  

Bitcode(iOS,watchOS)

     

Bitcode是编译程序的中间表示。应用   您上传到包含bitcode的iTunes Connect将被编译   在App Store上链接。包括bitcode将允许Apple   将来重新优化您的应用二进制文件,而无需提交   您的应用程序的新版本到商店。

     

默认情况下,Xcode会隐藏在构建时生成的符号,因此它们也是如此   Apple无法读取。仅当您选择包含符号时   将您的应用程序上传到iTunes Connect会将符号发送到   苹果。您必须包含符号才能从Apple接收崩溃报告。

     

注意:对于iOS应用,bitcode是默认设置,但是可选。如果你   提供bitcode,应用程序包中的所有应用程序和框架都需要   包括bitcode。对于watchOS应用程序,需要bitcode。

Bitcode是Apple为App thinning所做的新努力的一部分。在撰写本文时,它是可选的,但可能在以后需要。我认为Apple正在给框架/ libs社区提供适应的时间。

编辑: 在Xcode 7中,您将应用程序上传到iTunes连接,处于名为 Bitcode 的中间状态。当用户下载您的应用程序时,App Store将自动生成应用程序的优化版本(例如,如果需要,则为64位)以匹配用户正在使用的设备。

现在我们可以做的是禁用bitcode并等待Google Maps SDK的更新。

<强>更新

SDK 1.11.0 - 现在支持Bitcode

https://developers.google.com/maps/documentation/ios-sdk/releases?hl=en

资源:

Impact of Xcode build options "Enable bitcode" Yes/No

https://developer.apple.com/library/prerelease/ios/documentation/IDEs/Conceptual/AppDistributionGuide/AppThinning/AppThinning.html

https://www.hackingwithswift.com/ios9

答案 1 :(得分:20)

我将ENABLE_BITCODE标志更改为否并正确编译,感谢@Visput的答案

答案 2 :(得分:5)

要明确禁用bitcode的位置: 目标 - &gt;构建设置 - &gt;启用Bitcode - &gt;否

Disable Bitcode

GIF图片由@stevechen提供

答案 3 :(得分:0)

Google已在SDK版本1.11.0中解决此问题 - 2015年12月。请参阅release notes

Bitcode现已包含在所有设备架构的SDK二进制文件中。 (Issue 8219)。