【问题标题】:Unable to run app in Simulator : An error was encountered while running (Domain = LaunchServicesError, Code = 0)无法在模拟器中运行应用程序:运行时遇到错误(域 = LaunchServicesError,代码 = 0)
【发布时间】:2014-09-27 15:04:14
【问题描述】:

在配置文件出现问题后,我无法在模拟器中运行我的应用程序。我正在 Xcode 6 - beta 4 中进行快速编码。在证书配置文件出现问题之前这很好。

我已尝试清理构建。 检查 xCode6-beta4 的命令行是否运行。 检查构建部署,设置为 7.0 所以swift不会抱怨兼容性 修复了配置中的错误。

【问题讨论】:

  • 您是否尝试过创建另一个项目以查看问题出在您的项目还是您的机器上?您是否尝试从模拟器中删除该应用?
  • 我在添加扩展时遇到了同样的问题,我抱怨编译器错误。所以,我去了 target > Build Setting > Build Options > Compiler for C/C++/Objective-C 并设置默认值并修复了错误。希望对你有帮助
  • 哦,对不起@Patrick,我做不到。它在配置问题之后运行干净,因为我想在 iPhone 上测试它,在配置问题之后,我无法在模拟器中运行我的应用程序。我很欣赏你的回答 tnx。
  • @estemendoza,嗯,我已将命令行设置为 xcode6-beta4 以进行编译,但该错误仍然存​​在。顺便说一句,再次感谢。

标签: swift xcode6 ios-simulator


【解决方案1】:

我通过重置模拟器修复了它:

iOS 模拟器 > 重置内容和设置...

【讨论】:

  • 您还必须在重置后清理并重建您的项目。
  • 对我来说就像一个魅力,没有干净! (根本问题可能是我删除了一个目标)
  • 对我来说,退出 iOS 模拟器应用程序就足够了。
  • 这是第一次对我有用,但对后续运行无效:(
【解决方案2】:

如果您的扩展程序包 ID 没有以应用程序包 ID 为前缀,则会发生这种情况。例如,如果您的应用程序是 com.mycompany.appname,那么您的扩展程序应该类似于 com.mycompany.appname.today

还有一点需要注意,如果您使用 Swift 并使用NSExtensionPrincipalClass 设置主体类,您需要确保您的扩展目标将“Defines Module”设置为“Yes”并设置@的值987654324@ 等于“YourModuleName.YourClassName”。

【讨论】:

  • 我的模块被这样设置为默认值 $(PRODUCT_MODULE_NAME).KeyboardViewController
  • 我已经修复了该启动服务,感谢您给我建议,现在我无法创建 ipa build “错误:嵌入式二进制文件未使用与父应用程序相同的证书签名。验证嵌入式二进制目标的代码签名设置与父应用程序的匹配。嵌入式二进制签名证书:iPhone 开发人员:*************** (D26THLM79L) 父应用程序签名证书:iPhone 分发:****** ***** (735XZCJQ6P) "任何想法为什么会发生这种情况,即使我已经清除了所有?
  • 哇 @sam-soffes 感谢您指出这个“显而易见”的问题;只是让我免于将头撞到墙上?
  • 苹果的东西有很多晦涩难懂的规则是正常的吗?
  • 不,我的手表应用程序设置正确。我跑了。它工作得非常完美。添加了几行。我得到了这个晦涩的错误。清理并重建修复它。尝试再次运行它..并再次出现错误。 WatchKit 太可怕了。
【解决方案3】:

“domain = LaunchServicesError code = 0”错误似乎有多种原因。当我尝试在 iOS8 模拟器上重新安装应用程序时,我也遇到了它。我无法重新安装,但必须先删除旧应用。

问题已通过以下方式解决:

  1. 在 Xcode 中,使用 Target->General->Identity 中的适当值填充空的 Version 或 Build 字段

  2. 在模拟器中,重置内容和设置...

之后,一切正常。

【讨论】:

  • 这对我有用。我尝试了其他帖子中的很多技巧,但只有这个有效。我之前有 Build 集,但后来我将它设置为空,所以我总是遇到这个错误。
  • 将 Build 字段设置为非空值可以帮我解决这个问题。
【解决方案4】:

当您从 Today 小部件的模板创建项目中删除默认 StoryBoard 时,也会发生这种情况。为了解决这个问题,我在NSExtension 下添加了NSExtensionPrincipalClass,并将其指向包含Today Widget View Controller 的类,模板默认为TodayViewController

这在扩展的 Info.plist 中如下所示:

NSExtension NSExtensionPointIdentifier String com.apple.widget-extension NSExtensionPrincipalClass String TodayViewController

【讨论】:

  • 谢谢!这解决了我的问题。
  • +1,这是最终让我找到正确方向的提示。我从一个带有小部件的项目分支切换到另一个没有小部件的分支。出于某种原因,模拟器起初使用那个无小部件的分支,但后来停止了。我的解决方案是一个简单的“清理”(如 Cmd-Shift-K)。
【解决方案5】:
  1. 产品 -> 清洁

  2. iOS 模拟器 > 重置内容和设置

  3. 重启 XCode

【讨论】:

  • “产品 -> 清洁”做到了。谢谢
【解决方案6】:

以上方法均不适合我,但删除派生数据解决了该问题。

要删除派生数据,请转到“窗口”>“项目”,选择当前项目,然后按相应的删除按钮。

【讨论】:

    【解决方案7】:

    “重置内容和设置”来自 iOS Simutalor 菜单选项并在 退出 后启动模拟器解决了我的问题。

    【讨论】:

      【解决方案8】:

      对我来说,解决方案是不要嵌入尚未构建为可嵌入框架的框架。

      【讨论】:

        【解决方案9】:

        为我找到了问题的原因。

        我正在通过 pod 使用 ShareKit。此问题与 ShareKit 使用的 GooglePlus SDK 有关,并且由于 Apple 的政策更改而必须更新。 http://googledevelopers.blogspot.com.br/2014/09/an-important-announcement-for-ios.html

        所以我将我的 pod“ShareKit”替换为:

        pod "ShareKit/Twitter"

        pod "ShareKit/Facebook"

        pod "ShareKit/Pocket"

        pod "ShareKit/Evernote"

        去掉 GooglePlus 子项目,应用程序现在已经在 8.0 模拟器下部署并运行良好。

        希望这对其他人有所帮助。

        【讨论】:

          【解决方案10】:

          我已经解决了这个问题。感谢您的建议。 :)

          当您使用与主包相同的标识符构建键盘扩展应用程序时,总是会发生此问题。像这样。

          如果你的主包中有这个“com.codemagnus.ExAppMain”,你的扩展也应该有这个标识符“com.codemagnus.ExAppMain”。如果你要在模拟器中运行,这将导致启动服务错误.但是您可以创建一个构建。但是,我发现的问题很烦人。此应用无法安装在您的设备中。 :/

          如果你想在模拟器中运行。您的扩展键盘中应该有这个“com.codemagnus.ExAppMain.ExApp”,其中 ExApp 是您的扩展名称。你的主包应该是“com.codemagnus.ExAppMain”..这将与模拟器完美运行。但是会导致“Embedded binary's bundle identifier is not prefixed with parent app's bundle identifier.”

          嵌入式二进制包标识符:com.codemagnus.ExAppMain.ExApp 父 App Bundle 标识符:com.codemagnus.ExAppMain

          我仍在考虑并寻找解决 ipa 构建问题的解决方案。

          【讨论】:

          • 我应该在哪里使用 xcode 来检查我的包和扩展?
          • 1.单击您的项目 2. 转到 Targets 3. 在 General Settings > Identity > Bundle Identifier 中。 ----扩展也一样,你可以在你的目标中看到它们。
          【解决方案11】:

          这让我发疯了。我检查了这里建议的所有内容,重新安装了 Xcode,重新启动了我的计算机,但没有任何效果。在检查了一些以前的提交后,我发现了问题。

          对于上下文,我正在使用 Objective C 中的自定义键盘扩展。添加新的自定义键盘扩展目标会为您提供带有“下一个键盘”按钮的 KeyboardViewController 存根类。我将扩展的Info.plist 中的NSExtensionPrincipalClass 值更改为与KeyboardViewController 不同的类名,并开始研究它。最终我决定删除存根 KeyboardViewController,因为它是死代码。

          删除 KeyboardViewController 文件并从 Xcode 中删除它们会导致此问题发生。将它们放回去使应用程序再次运行。

          【讨论】:

            【解决方案12】:

            就我而言,这已经解决了这个问题。

            Bundle Identifier 不应为空。您可以通过以下参考找到该字段:

            【讨论】:

              【解决方案13】:

              我收到此错误是因为我错误地更改了 NSExtensionPointIdentifier 的值。我以为它应该是我的扩展程序的 ID,但它必须是 these values 之一,表明它是扩展程序的类型。

              【讨论】:

                【解决方案14】:

                当我将部署目标从 6.0 更改为 7.0 时,我开始收到此错误。我发现重置模拟器确实解决了这个问题,我需要为所有与应用程序相关的模拟器执行此操作。但是如果我回到 6.0 并为任何特定的模拟器重新编译,那么它会立即工作,但再次回到 7.0 会破坏模拟器,我不得不再次清除设置。

                很明显Deployment Target会影响模拟器中的编码,编码向下兼容,向上不兼容。另外,日志消息并不是很有帮助,它说应用程序无法使用清单硬链接到缓存文件(当然,提供应用程序、缓存和清单的路径名)。

                【讨论】:

                  【解决方案15】:

                  确保检查构建设置;向下滚动到最底部并确保您的 User-Defined Bundle 前缀是正确的。通常com.whatever。

                  仅将其设置在顶部并不总是会更改此底部设置。在重置模拟器、炸掉派生文件夹等之后,这终于对我有用了。

                  我在 IOS 9.3、xCode 7.3 下

                  【讨论】:

                    【解决方案16】:

                    Xcode 7.3

                    这可能只是因为您的目标名称太长而发生。尝试将您的目标名称更改为更短的名称(记得更改您的 bundleIdentifier 以匹配)。

                    【讨论】:

                      【解决方案17】:

                      如果您使用 Apple Watch 除了捆绑标识符之外,您还必须确保在 info.plist 中的键 WKAppBundleIdentifier 包含正确的手表应用捆绑标识符。

                      【讨论】:

                        【解决方案18】:

                        我在启动应用程序时遇到了类似的错误,通过 xCode,“父捆绑包具有与子捆绑包相同的标识符...”

                        我在 xCode8 的“项目 -> 常规”中缩短了捆绑标识符。最初,我的 bundle id 是 com.companyname..

                        应用程序名称超过 20 个字符。一旦我将它缩短为 12 个字符,它就对我有用。

                        【讨论】:

                          【解决方案19】:

                          要了解导致此错误的原因,您需要先查看模拟器日志文件。这些通常位于~/Library/Logs/CoreSimulator/CoreSimulator.log 或类似位置。所以我强烈建议您首先查看日志以确定根本原因,然后进一步研究。 (您可以查看this thread 以查看日志所在的位置。)

                          例如,如果您收到 ErrorDescription=Failed to chmod /Users/username/Library/Developer/CoreSimulator/Devices/ 之类的错误消息,那么重置您的模拟器可能是最简单的方法。对于诸如ErrorDescription=WatchKit 2 app's bundle ID com.mydomain.AppName.watchapp is not prefixed by the parent app's bundle 之类的错误,您在设置项目的主捆绑包 ID 的方式上可能存在错误。

                          【讨论】:

                            猜你喜欢
                            • 2014-10-27
                            • 2016-04-13
                            • 2016-01-02
                            • 2014-02-16
                            • 1970-01-01
                            • 2014-12-11
                            相关资源
                            最近更新 更多