运行时遇到错误(Domain = LaunchServicesError,Code = 0)

时间:2014-09-02 21:43:20

标签: ios swift ios-simulator xcode6 xcode6-beta6

我尝试使用Xcode 6在iOS模拟器中启动我的应用程序时收到错误(Domain = LaunchServicesError,Code = 0)。我在谷歌寻找解决方案,但我没有找到任何实用的东西。

这个错误是什么意思?

30 个答案:

答案 0 :(得分:119)

此错误表示安装存在问题。不幸的是,Xcode实际上并不打印错误消息的内容,这会让你更深入了解,但你可以查看〜/ Library / Logs / CoreSimulator / CoreSimulator.log来查看其余的错误细节。在模拟设备的系统日志中还会有关于该问题的更多信息(〜/ Library / Logs / CoreSimulator / [Device UDID] /system.log);在错误发生时寻找来自installd的消息。)

此常见原因包括缺少Info.plist的捆绑包,捆绑包Info.plist中缺少密钥,或者Info.plist中某些密钥的值不被允许。

如果您的应用的Info.plist不包含有效的CFBundleVersion键/值对,则您的应用可能会在第一次正确安装但无法更新。许多用户似乎通过在每次安装后执行“重置内容和设置”来解决此问题,但最好通过在Info.plist中设置适当的CFBundleVersion来解决根本原因。我相信iOS 8.2现在正确地在第一次安装时返回错误,而不仅仅是更新,所以希望现在这个问题会更加明显。

在文件系统上具有不支持硬链接的主目录的用户(例如:通过AFP,SMB或某些NFS服务器的网络主目录)也可能遇到与硬链接相关的问题。如果是这种情况,我建议您在本地HFS +文件系统上创建一个用于模拟器开发的路径(例如:/ var / simulator / [user]),并从〜/ Library / Developer / CoreSimulator创建一个到该路径的符号链接。这个特殊问题已在iOS 8.2测试版中修复。

在另一种情况下,构建和运行将始终在第一次尝试时成功,但后续尝试有时会因更改的Info.plist而失败(例如:因为某人的构建系统设置导致CFBundleVersion在每次迭代时都不同)。您通常可以通过删除已安装的应用程序(使用主屏幕中的长按或xcrun simctl uninstall [Device UDID] [app identifier])或将设备删除回默认状态来进行恢复。要删除设备,请从终端执行xcrun simctl erase [Device UDID]或从iOS模拟器菜单中选择Erase Contents & Settings。这个特殊问题已在iOS 8.2测试版中修复。

Xcode 6.2用户正在出现此问题的较新实例。如果您的应用程序中捆绑了WatchKit App Extension,则无法安装到早于iOS 8.2的iOS Simulator运行时版本。作为解决方法,当您要使用iOS 8.1及更早版本的运行时进行测试时,您需要手动禁用应用程序扩展。

如果您需要更多具体帮助,请提供CoreSimulator.log中的全部错误消息以及〜/ Library / Logs / CoreSimulator / [Device UDID] / system中同时出现的来自installd和CoreSimulatorBridge的所有消息.log这将揭示潜在的问题。

答案 1 :(得分:41)

您的项目是否包含小部件或扩展程序?如果是这样,问题可能是您的小部件/扩展的包标识符。它应该与主目标相同,附加一个句点和一个额外的字符串。例如:

主要目标:com.mycompany.myapp

小工具应该是:com.mycompany.myapp.widget

答案 2 :(得分:39)

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

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

答案 3 :(得分:18)

对我来说,我刚刚清理了项目并且工作正常 - >产品 - >清洁

答案 4 :(得分:15)

TLDR:清除你的项目构建文件夹 - 你将免于这种痛苦。

(另外我将此记录为Apple的一个错误,因为他们需要找到一种方法来解决这个问题)

这些解决方案都不适合我 - 我把头撞在了几面墙上 我查看了CoreSimulator日志,我意识到它正在尝试构建一个我删除的库。 我无法在任何地方找到它的引用。

然后我通过另一个SO问题看到了,遗憾的是我无法参考,如果你:

  1. 按住您的选项键,然后按产品 - >清洁选项变为Clean Build Folder
  2. 按下并享受错误消失

答案 5 :(得分:12)

&#34;重置 iOS Simutalor 菜单选项中的内容和设置&#34; ,并在退出解决了我的问题后启动模拟器。< / p>

Reset Content and Settings

答案 6 :(得分:9)

在XCode 6中

  

运行时遇到错误(Domain = LaunchServicesError,   代码= 0)

在进行一些主要的代码更改以适应iPhone 6屏幕后,我遇到了这个错误。在Xcode 6(iOS8)中

我按照上面的选项找到了解决问题的唯一方法是执行以下操作:

  1. 删除了派生数据[转到Window&gt;&gt;组织者&gt;&gt; (查找您的应用程序)单击“派生数据”旁边的“删除”
  2. 产品&gt;&gt;
  3. 重置模拟器中的内容和设置
  4. 从pList

    中的1.4将Bundle Version更改为1.4.1

    感谢所有以前的答案让我进入这个阶段。它很有魅力!

答案 7 :(得分:5)

在我的情况下,错误是由于我没有设置构建ID。

设置此项,可以毫无问题地启动模拟器。

答案 8 :(得分:3)

我有一个应用程序设置为根据构建配置使用不同的捆绑ID。在创建Apple Watch扩展时,Xcode使用我的发行版ID生成了所有内容,因此我必须手动完成所有操作以进行调试。这是我必须改变它的所有地方:

  • WatchKit Extension的{​​{1}}
  • Build Settings -> Packaging -> Product Bundle Identifier的{​​{1}}(这需要使用与您的随播应用相同的前缀)
  • WatchKit Extension的{​​{1}}

最后一个花了我一段时间,因为Info.plist -> NSExtension -> NSExtensionAttributes -> WKAppBundleIdentifier的信息在查看目标设置时没有显示为标签,我必须直接转到WatchKit App文件本身。 / p>

答案 9 :(得分:3)

打开控制台应用并查看。在我的情况下,它告诉我到底该做什么。我看到了:

ErrorDescription = WatchKit 2应用扩展程序的NSExtension.NSExtensionAttributes.WKAppBundleIdentifier值与WatchKit应用程序的软件包ID不匹配(找到&#34; com.myCompany.MyApp.MyApp.watchkitapp&#34 ;;预期&#34; com.myCompany.MyApp.watchkitapp&#34;)。

所以,我去了每个plist并检查了与BundleID相关的任何项目。然后清理,重新启动等

答案 10 :(得分:3)

这就是导致我这个问题的原因:主应用程序和扩展程序的内部版本号不同(我已将主应用程序内部版本号增加到1.0.1.03,但将扩展名保留为1.0.1.02)。

让它们匹配为我解决问题。

答案 11 :(得分:3)

另外一件事,在重置模拟器并进行干净的构建后,对我来说有用,就是清除派生数据。要执行此操作:转到管理器单击项目单击删除派生数据按钮。在延长一段时间后,我发生了这种情况,并回到常规分支。希望这会有所帮助。

答案 12 :(得分:2)

我的案例是关于框架编译。我已经启用了Target- Build Phases- Embedded Frameworks中的'仅在安装时复制'选项 - enter image description here

答案 13 :(得分:2)

Jeremy的重要解释至少让我朝着正确的方向前进,但尽管所有的包标识符和版本设置正确,但错误仍然存​​在。然后我检查了Apple documentation,它显示WatchKit扩展(在其Copy Bundle Resources阶段)复制了WatchKit应用程序。这个WatchKit应用程序的命名与我的iOS应用程序完全相同,导致Xcode混淆了两个并读出了错误的plist,认为bundle标识符不正确。将WatchKit应用程序的产品重命名为最终解决方案,最终为我解决了这个问题。

答案 14 :(得分:2)

&#34;重置内容和设置&#34;来自iOS Simutalor菜单选项和Quitting之后的启动模拟器解决了我的问题。

答案 15 :(得分:2)

以上都不适合我,但是这样做了:

我只是删除了IceCream.xcworkspace / xcuserdata / xcuserdatad,然后重置模拟器并再次运行应用程序。 (单独重置模拟器,对我来说不起作用。)

答案 16 :(得分:2)

尝试将一些数字放入[目标] - [一般] - [身份] - [版本(或构建)],如果它们是空的。

它对我有用。

我希望它会对你有所帮助。

答案 17 :(得分:2)

我也有这个错误。在我的例子中,日志~/Library/Logs/CoreSimulator/CoreSimulator.log就是这样的:

Could not hardlink copy /Users/myUser/Library/Developer/CoreSimulator/Devices/60E569E7-6750-428A-A401-841BB081xxxx/data/Containers/Bundle/Application/70F24DDC-7954-46BF-B799-F807FD98yyyy/myApp.app to /Users/myUser/Library/Developer/CoreSimulator/Devices/60E569E7-6750-428A-A401-841BB081xxxx/data/Library/Caches/com.apple.mobile.installd.staging/temp.kOrJ9G/extracted/Payload/myApp.app with manifest /Users/myUser/Library/Developer/CoreSimulator/Devices/60E569E7-6750-428A-A401-841BB081xxxx/data/Library/Caches/com.apple.mobile.installd.staging/temp.kOrJ9G/extracted/com.apple.deltainstallcommands.com.mycompagny.myapp

感谢这个answer看看我的app info.plist。密钥CFBundleVersion丢失了,所以我添加它,现在一切正常!

答案 18 :(得分:1)

在尝试构建Apple的Lister Xcode项目并在模拟器上运行时,我遇到了这个错误。

为我修复它的要点是:

1)iOS App和iOS Extension的BundleID必须不同 2)我为两个目标提供iCloud和App Groups 3)我使用Xcode的“修复问题”来解决问题

之后,我可以在没有警告或错误的情况下构建和运行应用程序。

日志文件中的线索是“... LegacyErrorString = DuplicateIdentifier,FunctionName = - [MIInstallableBundle performPreflightWithError:],SourceFileLine = 450,NSLocalizedDescription =父包具有相同的标识符(com.ACMECompany.Lister)作为子捆绑在/Users/stephen/Library/Developer/CoreSimulator/Devices/5329928B-946B-40A4-B666-EFD11B96D11F/data/Library/Caches/com.apple.mobile.installd.staging/temp.HQ5d9X/extracted/Lister.app /PlugIns/Lister.appex“

答案 19 :(得分:1)

InfoPlist.strings 本地化文件中设置了错误的应用版本。 Urgh!

一个小时过去了!

答案 20 :(得分:1)

所以它是definitelly .plist问题。在我的情况下,它是空的NSExtensionMainStoryboard,删除此属性修复了问题

答案 21 :(得分:1)

如果您更改了捆绑包ID,请确保在尝试再次构建之前进行干净的构建!请看这里:How to Empty Caches and Clean All Targets Xcode 4

答案 22 :(得分:0)

这对我有用: 在项目设置中 - &gt;常规标签 - &gt;身份部分我将版本号从2.0.2(三位数)更改为2.0(两位数)然后我在模拟器中删除了应用程序并再次运行项目。之后再没有错误了。

答案 23 :(得分:0)

我删除了观看应用 .plist文件中的密钥,该文件不应该存在。问题就消失了。

答案 24 :(得分:0)

enter image description here

删除你的模拟器并重新生成一个。

它对我有用。

答案 25 :(得分:0)

另一种可能的解决方案,可以添加到所有其他无疑会超出我的范围内;)

我删除了&amp;后来恢复了今天扩展目标保留源文件,但在尝试了阳光下的每个解决方案后,我意识到它的目标中没有任何源或资源!如果您的详细启动服务错误无法找到已编译的应用扩展文件,您可能也会遇到此问题。

所以,长话短说,请确保您的目标包含某些内容以进行编译或捆绑。您可以通过在项目导航器(左侧)中选择相关文件并在文件检查器中选择相应的复选标记(右侧的第一个选项卡)来检查目标成员资格。

答案 26 :(得分:0)

我的日志中有以下内容......

<Error>: Error Domain=LaunchServicesError Code=0 "(null)" UserInfo={Error=ExecutableTwiddleFailed...

这是因为扩展项目中没有添加源文件。

答案 27 :(得分:0)

当没有可用的硬盘空间时,我的系统上出现此错误。我在系统上腾出了一些空间让它工作。

答案 28 :(得分:0)

我的问题是目标项目的包装器扩展未设置。

要修复我必须转到目标项目 - &gt; 构建设置 - &gt; 包装 - &gt; 包装器扩展

将此设置为&#34; app&#34; (没有引号)

这解决了我的问题

答案 29 :(得分:0)

我也遇到了这个问题,结果发现我的一个info.plist被特别分配给目标时,假设它被分配给none。实际上有一个Xcode设置建议警告,我点击并接受了更改。这解决了这个问题。