谷歌分析的libAdIdAccess.a库不包含位码。

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)

我找到的唯一一篇提到GA和bitcode的文章是这篇帖子

如果我能仅为此库禁用它而不是完全禁用bitcode,那就太好了。这可能吗?

这个答案为默认启用bitcode提供了一种解决方法,最终这可能会成为那个更通用问题的重复。


3
当Xcode 7正式发布时,我猜想谷歌会更新他们的公共源代码和Cocoapods。 - Michael Dautermann
2
这很公平 - 与此同时,我将默认禁用位码,正如我在问题中所指示的。 - bdalziel
3
使用Xcode 7.0 GM版本尝试后仍然失败,但我还没有看到GA更新。 - DiscDev
凭借经验,遗传算法可能需要几周时间... - Vinzius
1
@MichaelDautermann XCode7和iOS9已经发布,Google方面没有什么新的消息。 - Kubba
官方问题链接:https://code.google.com/p/analytics-issues/issues/detail?id=671 - andreacipriani
5个回答

76

更新:

好消息!

Google Analytics现在支持Bitcode,已经在他们的3.14版本中发布。您可以从他们的下载源获取它,但它还没有列在Cocoapods上。

Google Analytics SDK下载

变更日志

原文:

Google需要将他们的分析SDK编译成Bitcode库。然而,根据以往与Google更新其库到64位的经验,这可能需要半年以上的时间。

我的建议是,如果您不支持watchOS,我们可以等待一段时间,进行以下操作:

  1. 构建设置

  2. 启用Bitcode

  3. 设置为No

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

额外信息:

这里有开发者在谷歌论坛上讨论此事: https://groups.google.com/forum/#!topic/ga-mobile-app-analytics/d6ML4BKBBeY

Facebook和Fabric.io(Crashlytics,TwitterKit)已经更新使用位码,因此对于Google来说,技术上应该不会太困难。我认为这种阻碍是政治问题。最受损失的是我们的用户。


5
他们为什么这样做,要么不支持iOS,要么升级工具以适应新版本。我们的测试版已经有一段时间了,预计将在一周左右发布。 - MKoosej
是的,很令人沮丧吧?当64位转换时,我曾经问过同样的问题。 - David Wong
感谢特别提供信息的@DavidWong,同时重申常见答案:https://dev59.com/110Z5IYBdhLWcg3w-UV-#30856364 - bdalziel
现在正在使用Xcode 7,但是在使用Cocoapods 0.38时,仍然会出现Google框架的位码错误。 - dead_soldier
2
使用多个iOS第三方SDK,谷歌是唯一一个还没有更新的。我将放弃谷歌SDK,并且可能不会再添加它。太麻烦了。 - Ville Laurikari
3
需要注意的是,如果您正在使用顶级库 Google/Analytics,则即使使用版本为 3.14,也无法使用位码。您需要改用 GoogleAnalytics 库来解决此问题。 - Cristik

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

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


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

下载页面

直接链接


1
需要注意的是,如果您正在使用顶级 pod,例如 Google/Analytics,则即使使用 3.14 版本,位码也无法正常工作。您需要改用 GoogleAnalytics pod。 - Cristik

2

从这个链接中,您可以为iOS添加任何Google API。[https://cocoapods.org/pods/GoogleAnalytics] [https://developers.google.com/ios/guides/cocoapods] - Rubaiyat Jahan Mumu

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 标记为关闭。自然地,您将无法编译用于手表/Apple TV 的程序(因为某些版本需要启用它)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接