393

我的应用中有关于 Google 框架的新警告:

(空):紧急:所有位码都将被删除,因为 '/Users/myname/Library/Mobile Documents/com~apple~CloudDocs/foldername/appname/GoogleMobileAds.framework/GoogleMobileAds(GADSlot+AdEvents.o)' 是在没有位码的情况下构建的. 您必须在启用位码的情况下重建它(Xcode 设置 ENABLE_BITCODE),从供应商处获取更新的库,或禁用此目标的位码。注意:这将是未来的错误。

Xcode 7 给了我大约 204 个关于这个相同概念的警告,我无法解决这个问题。另外,我在从我的应用程序访问网络时遇到问题。这是来自调试区域的错误:

-canOpenURL:URL 失败:“kindle://home” - 错误:“此应用不允许查询方案 kindle”

所有这些问题在 iOS 8 中都不存在。

4

8 回答 8

1032

您的库是在没有位码的情况下编译的,但在您的项目设置中启用了位码选项。在您的目标构建设置和库构建设置中说NO以删除警告。Enable Bitcode

对于那些想知道是否需要启用位码的人:

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

https://help.apple.com/xcode/mac/current/#/devbbdc5ce4f

于 2015-06-15T23:02:26.170 回答
113

在 Xcode 7 之后,bitcode 选项将默认启用。如果您的库是在没有位码的情况下编译的,但在您的项目设置中启用了位码选项,您可以:

  1. 使用位代码更新您的库,
  2. 对在您的目标构建设置中启用位码说不

在此处输入图像描述

以及库构建设置以删除警告。

有关更多信息,请转到开发人员库中的位码文档

以及 WWDC 2015 会议 102:“平台状态​​联盟”

在此处输入图像描述

于 2015-06-18T03:13:48.763 回答
43

在我的情况下,为了避免这个问题:

  1. 确保您正在处理Xcode 7,而不是较低版本。在较低版本中,此标志不存在。

  2. 设置:项目>构建设置>所有>构建选项>启用位码=否

在此处输入图像描述

于 2015-09-21T09:43:13.053 回答
15

方法canOpenUrl在 iOS 9 中(由于隐私)已更改,不再免费使用。您的横幅提供商会检查已安装的应用程序,以便它们不会为已安装的应用程序显示横幅。

这给出了所有的日志语句,如

-canOpenURL:URL 失败:“kindle://home” - 错误:“此应用不允许查询方案 kindle”

提供者应该为此更新他们的逻辑。

如果您需要查询已安装的应用程序/可用方案,您需要将它们添加到您的info.plist文件中。

将键“LSApplicationQueriesSchemes”作为数组添加到您的 plist 中。然后在该数组中添加字符串,如“kindle”。

当然,这并不是横幅广告的真正选择(因为它们是动态的),但您仍然可以通过这种方式查询您自己的应用程序或特定的其他应用程序,如 Twitter 和 Facebook。

canOpenUrl: 方法的文档 canOpenUrl:

关于 LSApplicationQueriesSchemes 键的文档

于 2015-09-10T09:04:02.750 回答
14

如果您正在使用CocoaPods并且想要禁用所有库的 Bitcode,请在 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
于 2015-10-01T15:29:23.810 回答
8

免责声明:这适用于那些支持需要自动化流程的持续集成工作流的人。如果您不这样做,请按照Javier 的回答中所述使用 Xcode 。

这对我来说可以ENABLE_BITCODE = NO通过命令行进行设置:

find . -name *project.pbxproj | xargs sed -i -e 's/\(GCC_VERSION = "";\)/\1\ ENABLE_BITCODE = NO;/g'

请注意,这可能在 Xcode 版本中不稳定。它使用 Xcode 7.0.1 进行了测试,并作为 Cordova 4.0 项目的一部分。

于 2015-09-29T14:35:47.693 回答
2

解决 canOpenURL 失败的问题。这是因为 iOS9 中新的 App Transport Security 功能

阅读这篇文章以解决该问题http://discoverpioneer.com/blog/2015/09/18/updating-facebook-integration-for-ios-9/

于 2015-09-18T16:37:31.277 回答
-2

Google 最近已修复此问题(2010 年 11 月),请参阅https://code.google.com/p/analytics-issues/issues/detail?id=671。但请注意,作为一个好的修复它会带来更多的错误:)

您还必须遵循此处列出的初始化方法:https ://developers.google.com/analytics/devguides/collection/ios/v2 。

最新的说明会让您头疼,因为它引用了 pod 中未包含的实用程序。下面会因 cocoapod 而失败

// Configure tracker from GoogleService-Info.plist.
NSError *configureError;
[[GGLContext sharedInstance] configureWithError:&configureError];
NSAssert(!configureError, @"Error configuring Google services: %@", configureError);
于 2015-11-11T09:41:28.130 回答