17

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

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

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

4

4 回答 4

22

ENABLE_BITCODE标志设置为NO可以解决该问题。

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

根据苹果文档

比特码(iOS、watchOS)

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

Xcode 默认隐藏构建期间生成的符号,因此 Apple 无法读取它们。只有当您在将应用程序上传到 iTunes Connect 时选择包含符号时​​,才会将符号发送到 Apple。您必须包含符号才能接收来自 Apple 的崩溃报告。

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

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

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

现在我们可以做的是禁用比特码并等待谷歌地图 SDK 的更新。

更新

SDK 1.11.0 - 现在支持位码

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

资源:

Xcode 构建选项“启用位码”的影响是/否

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

https://www.hackingwithswift.com/ios9

于 2015-09-18T05:01:09.710 回答
20

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

于 2015-07-27T04:53:35.413 回答
5

只是要清楚在哪里禁用位码:目标 -> 构建设置 -> 启用位码 -> 否

禁用位码

GIF 图片由@stevechen 提供

于 2015-11-15T11:08:08.243 回答
0

Google 已在 SDK 版本 1.11.0 - 2015 年 12 月解决了此问题。请参阅发行说明

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

于 2015-12-01T03:47:30.633 回答