iOS 9中的新警告:“所有bitcode都将丢弃”

问题描述 投票:383回答:8

我在我的应用中发布了有关Google Framework的新警告:

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

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

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

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

xcode ios9 bitcode
8个回答
1020
投票

您的库是在没有bitcode的情况下编译的,但是在项目设置中启用了bitcode选项。在目标Build Settings和Library Build Settings中将NO称为Enable Bitcode以删除警告。

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

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

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


110
投票

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

  1. 使用位代码更新库
  2. 拒绝在目标构建设置中启用Bitcode

和库构建设置删除警告。

有关更多信息,请访问documentation of bitcode in developer library

和WWDC 2015会议102:"Platforms State of the Union"


41
投票

就我而言,我避免了这个问题:

  1. 确保您正在处理Xcode 7,而不是更低版本。在较低版本中,此标志不存在。
  2. 设置:项目>构建设置>全部>构建选项>启用Bitcode = NO

enter image description here


15
投票

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

这给出了所有的日志语句

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

提供者应该为此更新其逻辑。

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

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

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

canOpenUrl:方法canOpenUrl:的文档

Documentation about the LSApplicationQueriesSchemes key


11
投票

如果您正在使用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

8
投票

免责声明:适用于那些需要自动化流程的continuous integration工作流程的用户。如果不这样做,请使用Javier's answer中描述的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项目的一部分进行了测试。


2
投票

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

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


-2
投票

这个问题最近由谷歌修复(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);
© www.soinside.com 2019 - 2024. All rights reserved.