Xcode iOS 9中的新警告:“1”;所有位码都将被删除“;

Xcode iOS 9中的新警告:“1”;所有位码都将被删除“;,xcode,ios9,bitcode,Xcode,Ios9,Bitcode,我的应用程序中有一个关于谷歌框架的新警告: (null):紧急:所有位代码都将被删除,因为 '/Users/myname/Library/Mobile Documents/com~apple~CloudDocs/foldername/appname/GoogleMobileAds.framework/GoogleMobileAds(GADSlot+AdEvents.o)' 是在没有比特码的情况下生成的。必须在启用位代码的情况下重新生成它 (Xcode设置ENABLE_BITCODE),从 或禁用

我的应用程序中有一个关于谷歌框架的新警告:

(null):紧急:所有位代码都将被删除,因为 '/Users/myname/Library/Mobile Documents/com~apple~CloudDocs/foldername/appname/GoogleMobileAds.framework/GoogleMobileAds(GADSlot+AdEvents.o)' 是在没有比特码的情况下生成的。必须在启用位代码的情况下重新生成它 (Xcode设置ENABLE_BITCODE),从 或禁用此目标的位代码。注意:这将是一个 未来的错误

Xcode7给了我大约204条关于同一概念的警告,但我无法处理这个问题。此外,我从我的应用程序访问网络时遇到问题。这是来自调试区域的错误:

-canOpenURL:URL失败:kindle://home-错误:“此应用程序正在运行 不允许查询方案kindle“


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

您的库在编译时没有使用位代码,但在项目设置中启用了位代码选项。在目标生成设置和库生成设置中说
NO
启用位代码
,以删除警告

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

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


在Xcode 7之后,默认情况下将启用位码选项。如果编译库时未使用位代码,但在项目设置中启用了位代码选项,则可以:

  • 使用位代码更新库
  • 说“否”以在目标生成设置中启用位代码
  • 和库生成设置以删除警告

    有关更多信息,请访问

    和WWDC 2015年第102期会议:


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

    这使得所有日志语句

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

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

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

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

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

    canOpenUrl的文档:方法


    修复canOpenURL失败的问题。这是因为iOS9中新的应用程序传输安全功能


    请阅读此帖子以解决该问题,以避免出现该问题:

  • 确保您使用的是Xcode 7,而不是更低版本。在较低版本中,此标志不存在

  • 设置:项目>生成设置>所有>生成选项>启用位码=否


  • 免责声明:这适用于那些支持需要自动化流程的工作流的人。如果没有,请使用中所述的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项目的一部分。

    如果您使用的是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
    

    谷歌最近(2010年11月)解决了这个问题,请参阅。但请注意,作为一个好的修复,它会带来更多的bug:)

    您还必须遵循此处列出的初始化方法:

    最新的说明会让你头疼,因为它引用了pod中未包含的实用程序。以下内容将与cocoapod一起失败

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

    那么你已经在你的Xcode目标中启用了位代码?对不起,我是新手,你能告诉我怎么做吗?我从来没有这样做过,但看起来你必须刻意设置它。您似乎已经这样做了。@Droppy AFAIK默认情况下该设置是打开的,但您可以在项目设置中随时将其停用。我将其关闭,所有警告都消失了。我做了一点研究,谷歌需要更新他们的框架来关闭这个错误,直到现在关闭它才行。是否有人知道URL为的-canOpenURL:失败:kindle://home“-错误:“此应用程序不允许查询方案kindle”?我不知道Xcode在说什么about@Centurion以前的google analytics库已弃用,不能使用xcode 7/ios9编译either@goelv是,您应该能够提交禁用位代码的应用程序。现在它是可选的。将来可能会需要它。我不适合存档。XCODE 7之前的项目工作正常,现在即使启用位代码设置为“否”也无法存档。这是针对AWS库的。在所有目标上禁用位代码后仍会出现错误。假设静态库将检查父应用程序deeplink,如何在静态库中使用异常“LSApplicationQueriesSchemes”?通常情况下,你没有Info.plist。对此我不是很确定,如果库需要检查其父库之外的应用程序,则父库应该在其Info.plist中定义url(因此为框架编写文档)。如果canOpenUrl也返回no,那么父应用程序将能够处理它,而您应该(我假设)也将它们包含在info.plistSo中,那么您必须使用XCode7重新编译项目中包含的库,并将EnableBitcode设置为YES。如果您正在与