83

Xcode 7 beta 3 刚刚安装了一些“附加组件”(现在是版本 7.0 beta 3 (7A152u)),现在我遇到了编译器错误:

ld: '/<abbreviated>/Vendor/Analytics/GoogleAnalytics/libAdIdAccess.a(TAGActualAdIdAccess.o)' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

这篇 Google Code帖子是我发现的关于 GA 和 bitcode 的唯一提及。

如果我可以只为这个库禁用它而不是完全禁用位码,那就太好了。那可能吗?

这个答案为默认启用的位码提供了一种解决方法,这最终可能是对那个更通用的问题的欺骗。

4

5 回答 5

76

更新:

大家好消息!

Google Analytics 现在在 3.14 版本中支持 Bitcode。您可以从他们的下载源中获取它,但它尚未在 Cocoapods 上列出。

谷歌分析 SDK 下载

更改日志

原来的:

谷歌需要将他们的分析 SDK 编译成一个位码库。然而,从之前谷歌将库更新到 64 位的经验来看,iirc 花了半年多的时间。

我的建议是,如果你不支持 watchOS,我们可以等一下,必须

  1. 构建设置

  2. 启用位码

  3. 设置为否

如果您支持 watchOS,请暂时使用其他分析工具。

额外信息:

有开发人员在这里的谷歌论坛上谈论它: https ://groups.google.com/forum/#!topic/ga-mobile-app-analytics/d6ML4BKBBeY

Facebook 和 Fabric.io(Crashlytics、TwitterKit)已经更新为使用比特码,所以从技术上讲,谷歌应该不会太难效仿。我相信这种阻碍是政治。损失最大的是我们的用户。

于 2015-09-13T23:58:53.573 回答
4

欢迎回到 2013 年,正如 @david-wong 提到的,谷歌花了一年的时间才支持 arm64。每当 Apple 宣布对工具链的更改或要求时,Google ios SDK 团队都需要数年时间来更新他们的静态库。只是为了设定您的期望,他们最近才承认位码支持是一个“高优先级”问题,即使应用程序切片/位码于 2015 年 6 月 8 日宣布。如果您在主要目标中使用 GA,GA 将阻止您从使用架构切片的极其宝贵的好处。

禁用位码不是一种解决方法,它只是禁用位码支持。希望管理 GA 的人看到这一点,并决定让 ios 成为一等公民。

于 2015-10-01T08:02:39.927 回答
2

Google 刚刚更新了 Google Analytics 和 Google Tag Manager SDK(版本 3.14)以支持 Bitcode,因此您可以使用“启用 Bitcode - Yes”标志更新库并编译您的应用程序。

下载页面

直接链接

于 2015-10-29T08:59:28.437 回答
2

使用 pod 升级您的 GoogleAnalytics sdk。

  1. 打开终端
  2. 转到您的项目目录
  3. 吊舱初始化
  4. 打开在你的项目目录中创建的 pod 文件
  5. 写下以下几行

    platform :ios, '10.0'
    
    target “GoogleAnalyticsTestApp” do
       pod 'GoogleAnalytics'
       pod 'GoogleIDFASupport'
    end
    

这将解决错误。您可以从以下链接添加 Google 的 Api:

1. http://cocoapods.org/pods/GoogleAnalytics

2. http://developers.google.com/ios/guides/cocoapods

于 2017-01-20T16:52:35.093 回答
1

如果您使用的是 cocoapods,您可以在 Podfile 的末尾添加:

post_install do |installer|
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings['ENABLE_BITCODE'] = 'NO'
        end
    end
end

这将遍历所有 pod 并将 ENABLE_BITCODE 标记为关闭。自然,您将无法为 watch / apple tv 进行编译(因为它们在某些版本上需要它)。

于 2016-02-04T17:20:42.667 回答