FBSOpenApplicationErrorDomain 错误 1

FBSOpenApplicationErrorDomain error 1

我正在尝试 运行 我的 iOS 应用程序使用 iPhone 从 Swift 1.2 迁移到 Xcode 7 中的 Swift 2.0模拟器(任何),我收到以下错误:

The operation couldn’t be completed. (FBSOpenApplicationErrorDomain error 1.)

我已经尝试过重置模拟器设置和内容、退出 Xcode、清理项目等

我很确定这个问题可能与 iOS 9.

上的 ATS 有关

确保您已按照 FB 团队提供的步骤进行操作,以便让他们的 SDK 在 iOS 9.Release Notes.

上运行

解释

应用程序传输安全

"App Transport Security is a feature that improves the security of connections between an app and web services. The feature consists of default connection requirements that conform to best practices for secure connections. Apps can override this default behaviour and turn off transport security."

"All connections using the NSURLConnection, CFURL, or NSURLSession APIs use App Transport Security default behaviour in apps built for iOS 9.0 or later, and OS X v10.11 or later. Connections that do not follow the requirements will fail."

来源:Apple - App Transport Security Technote

这意味着如果您尝试在为 iOS 9.0 或更高版本或 OS X v10.11 或更高版本构建的应用程序上执行连接,并且该连接不符合ATS的要求,连接会失败

解决方案

这个问题有两种解决方法。

推荐

确保您的连接符合 ATS 的要求。

"Temporary Solution"

在您的应用上禁用 ATS 以允许不符合此要求的连接。

这可能是一个临时解决方案,因为您现在可以禁用 ATS 在您的应用程序中使用,在未来的版本中可能会删除此选项,您将被迫使用 ATS 作为默认安全功能。

FACEBOOK SDK

Facebook 为了赢得一些时间并允许他们的用户在 iOS 9.0 和 OS X 10.11 中继续使用他们的 SDK。他们选择了 "Temporary Solution",因此你必须这样做。

  • 从您的应用中禁用 ATS。
  • 或将 Facebook 服务器列入网络请求白名单。

要稍后执行,您必须将以下内容添加到目标 .plist

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>facebook.com</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>                
            <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
            <false/>
        </dict>
        <key>fbcdn.net</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
            <false/>
        </dict>
        <key>akamaihd.net</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
            <false/>
        </dict>
    </dict>
</dict>

如果您使用任何可以执行应用程序切换到 Facebook 应用程序的 Facebook 对话框(例如,登录、共享、应用程序邀请等),您可能还需要执行其他更改。

来源:Facebook - Preparing Your Apps for iOS9

将Xcode更新到v7.0后,我遇到了同样的错误。经过几个小时的努力,我发现在我的活动方案中有一些空的环境变量设置要传递给 运行 操作(不知道为什么会在那里)。删除这个空的环境变量立即解决了这个问题。

这个错误(我相信)与 Facebook SDK 无关。我得到了这个,但我根本没有 Facebook SDK。

我发现虽然 Xcode 没有显示错误原因,但模拟器日志确实如此。

当你得到这个错误时,模拟器将是 运行,所以切换到它,然后从 "Debug" 菜单,select "Open system log..."。

日志显示在屏幕上后,遍历到它的末尾,您应该会看到更多关于错误原因的信息(如果幸运的话,包括堆栈跟踪)。

在我的例子中,这是因为文件资产丢失或找不到而抛出的异常。

在我的例子中,我将其解决为 .

如果运行处于后台模式,请关闭您正在使用的应用程序。

它对我有用,希望对你有用。

  1. 模拟器->重置内容和设置
  2. 退出模拟器
  3. 运行再次测试用例

在 tvOS 应用程序中,您可以转到模拟器并删除其中的应用程序,然后重新运行程序。

当应用程序的前一个 运行 在后台仍然存在时,即使您在 Xcode 中单击了 "Stop",也会发生此错误。尝试在模拟器本身中手动终止该应用程序:cmd+shift+H 两次打开 运行ning 应用程序,向上拖动您的应用程序以终止它。注意 cmd+shift+H 是进入主屏幕的快捷方式。然后启动新的 运行 它应该可以正常工作:)

如果其他修复不起作用

经历了这些尝试:

  1. 在模拟器中强制退出应用程序
  2. 重置模拟器
  3. 从模拟器中删除了应用程序
  4. 全局禁用应用程序传输安全(不推荐)
  5. 关闭所有背景模式 问题总是返回阻止调试会话

这是我的解决方法

似乎方案管理器启用了一个没有参数的字段,这导致了我的问题。

Product menu > Scheme > Edit Scheme > Run > Arguments > Environment Variables

如果旁边有一个空字段的复选标记,请取消选中它。

我收到“1”错误代码。我希望这对你也有用。

经过大量的努力,我认为问题是您可能正在尝试 运行 在后台运行 运行 的应用程序。从 xcode 停止应用程序实际上并没有停止它(奇怪的是),你必须按两次 cmd+shift+h 的主页键,找到你的应用程序并杀死它。我仍在尝试找出更好的方法来做到这一点,因为这很乏味,但至少这会暂时奏效。

就我而言,我能够通过使用不同的模拟器来解决它。它一直发生在 iPhone 4S 模拟器上,但是一旦我切换到 iPhone 6 Plus 模拟器,错误就消失了。

退出(Command + Q)模拟器并再次启动它解决了问题。

我在使用 Xamarin iOS、Visual Studio for Mac 7.2、编译 iPad 2、iOS 9.3 时遇到了这个错误。解决方案是在 项目 -> 选项 -> iOS 下将 iOS 版本支持的架构更改为 i386 + x86_64构建 -> 支持的架构.

尝试重置您的模拟器

sudo rm -rf /private/tmp/com.apple.CoreSimulator.SimDevice.*

根据 Denis 接受的答案,他提到的 impossible places 首先是从模拟器系统日志中发现的。 (Mac XCode 模拟器 > 调试 > 打开系统日志..)

就我而言,我正在尝试将 hello world Xamarin Forms 调试到模拟器 iPad 2 iOS 9.3。 VS2017Mac输出上面的错误,但是Simulator System Log给出了更多的信息

Program specified by service does not contain one of the requested architectures: XPC_FLAGS=0x0

在这个thread中提到,我需要右键单击iOS项目并将Build > iOS Build > Supported architectures修改为i386 + x86_64。这是有道理的,因为 pre-IOS 11 Apple 支持 32 位和 64 位应用程序。

此外,刷新模拟器也有帮助。 (模拟器 > 硬件 > 擦除所有内容和设置..)。这确保部署到模拟器的应用程序包含最新的更改。

我正在尝试 运行 使用 React Native 应用进行排毒,排毒入门指南推荐了这个命令:

非常糟糕的构建命令

$ xcodebuild -workspace ios/MyApp.xcworkspace -scheme MyApp -configuration Debug -sdk iphonesimulator -derivedDataPath ios/build

...在 Xcode 版本 10.2.1 (10E1001)

上出现了各种故障

所以我改了命令,直到构建成功。但是,我(不知不觉地)在为错误的平台构建。我的 xcodebuild 正在生成 Debug-iphoneos 而不是 Debug-iphonesimulator。因此,即使 xcodebuild 会报告成功,但每当我将应用程序复制到模拟器并尝试执行它时,它都会失败:

$ xcrun simctl launch 35CC1D95-CDC2-4C8F-9B68-8E13EF7127D8 com.mycompany.iosapp
com.mycompany.iosapp: -1
An error was encountered processing the command (domain=FBSOpenApplicationServiceErrorDomain, code=1):
The request to open "com.mycompany.iosapp" failed.
The request was denied by service delegate (SBMainWorkspace) for reason: Unspecified.
Underlying error (domain=FBSOpenApplicationErrorDomain, code=1):
    The operation couldn’t be completed. (FBSOpenApplicationErrorDomain error 1.)

所以修复是通过构建命令更改为正确的平台构建。

构建命令错误:

$ xcodebuild -workspace ios/MyApp.xcworkspace -scheme MyApp -configuration Debug -derivedDataPath ios/build

良好的构建命令:

$ xcodebuild -workspace ios/MyApp.xcworkspace -configuration Debug -scheme MyApp -destination 'platform=iOS Simulator,name=iPad (6th generation)' -derivedDataPath ios/build

我在使用迁移助手从 Intel Mac 迁移到 M1 后遇到了这个问题。我通过重新安装 Xcode.

解决了这个问题