运行时遇到错误(域= LaunchServicesError,代码= 0)
当我尝试在iOS模拟器中用Xcode 6启动我的应用程序时,我收到一个错误(Domain = LaunchServicesError,Code = 0)。我在google中寻找解决scheme,但是我没有find任何实际的东西。
这个错误是什么意思?
这个错误表明安装有问题。 不幸的是,Xcode实际上并不打印错误信息的内容,这会给你更多的洞察力,但是你可以看看〜/ Library / Logs / CoreSimulator / CoreSimulator.log来查看其余的错误细节。 在模拟设备的系统日志(〜/ Library / Logs / CoreSimulator / [Device UDID] /system.log)中也会有更多关于这个问题的信息。 在错误发生的时间内查找installd的消息)。
导致这种情况的常见原因包括缺lessInfo.plist的包,缺lessInfo.plist中的密钥,或者Info.plist中某些密钥的值不被允许。
如果您的应用的Info.plist不包含有效的CFBundleVersion键/值对,则可能是您的应用第一次正确安装,但无法更新。 很多用户似乎都是在每次安装完成后重新执行“重置内容和设置”来解决这个问题,但是最好通过在Info.plist中设置合适的CFBundleVersion来解决根本原因。 我相信iOS 8.2现在可以在第一次安装时正确地返回一个错误,而不是仅仅在更新上,所以希望这个问题现在会更加明显。
在不支持硬链接的文件系统上使用主目录的用户(例如:通过AFP,SMB或某些NFS服务器的networking主目录)也可能遇到与硬链接有关的问题。 如果是这样的话,我build议你在本地的HFS +文件系统上为模拟器开发创build一个path(例如:/ var / simulator / [user]),并从〜/ Library / Developer / CoreSimulator创build一个符号链接。 这个特殊的问题已经在iOS 8.2 beta版本中修复了。
在另一种情况下,Build&Run会在第一次尝试中成功,但是由于Info.plist更改,后续尝试有时会失败(例如:因为某人的构build系统设置导致CFBundleVersion在每次迭代中都不相同)。 您通常可以通过删除已安装的应用程序(使用主屏幕上的长按或xcrun simctl uninstall [Device UDID] [app identifier]
)或将设备擦除回默认状态来进行恢复。 要清除设备,请执行xcrun simctl erase [Device UDID]
from terminal或从iOS Simulator菜单中selectErase Contents & Settings
。 这个特殊的问题已经在iOS 8.2 beta版本中修复了。
Xcode 6.2用户出现了这个问题的一个更新的例子。 如果您的应用程序中捆绑了WatchKit应用程序扩展,它将无法安装到iOS 8.2以上版本的iOS Simulator运行时。 作为一种解决方法,当您要使用iOS 8.1及更早版本的运行时进行testing时,您需要手动禁用应用程序扩展。
如果您需要更多的具体帮助,请提供来自CoreSimulator.log的错误消息的全部内容,以及在〜/ Library / Logs / CoreSimulator / [Device UDID] /system.log中同时出现的来自installd和CoreSimulatorBridge的所有消息。这将揭示潜在的问题。
您的项目是否包含小部件或扩展? 如果是这样,问题可能是你的小部件/扩展的包标识符。 它应该与主要目标相同,附加一个句点和一个额外的string。 举个例子:
主要目标: com.mycompany.myapp
小部件应该是: com.mycompany.myapp.widget
我通过重置模拟器来修复它:
iOS模拟器>重置内容和设置…
由于每个人都写下他们所经历的事情,以及他们如何解决确切的问题,这可能是无益的。
问题是有相同的错误信息有不同的原因,解决它的正确方法是打开~/Library/Logs/CoreSimulator/CoreSimulator.log
并在那里查看最后一条消息。 这个消息给你提供了一个很好的线索,并将你设置在解决你的问题的正确途径上(有时它是捆绑ID,有时候它是Info.plist中的一个缺失或者额外的属性,但是你总能得到一个好的,描述性的线索)。
这是你如何缩小问题,并最终解决问题。
祝好运和Xcode强硬的神经。)
Z.
对我来说,我只是清理了这个项目,并且工作 – >产品 – >清洁
TLDR:清除你的项目生成文件夹 – 你将没有这种痛苦。
(加上我logging这是一个苹果的错误,因为他们需要find一种方法来解决这个Xcode)
这些解决scheme都不适合我 – 我把头撞在几堵墙上。
我看着CoreSimulator日志,并意识到它正试图build立一个我已经删除的库。 我找不到任何地方的参考。
然后,我通过另一个SO问题看到,不幸的是我找不到引用,如果你:
- 按住你的选项键,然后产品 – >清洁选项变成
Clean Build Folder
- 按下该button,享受你的错误消失
解决我的问题后,从iOS Simutalor菜单选项“重置内容和设置” ,启动模拟器。
在XCode 6中
运行时遇到错误(Domain = LaunchServicesError,Code = 0)
我做了一些主要的代码更改,以适应iPhone 6屏幕后,有这个错误。 在Xcode 6(iOS8)
我遵循上面的选项,发现真正解决这个问题的唯一方法是通过下面的方法:
- 删除派生数据[去窗口>>组织者>>(find你的应用程序)点击导出数据旁边的删除]
- 产品>>清洁
- 在模拟器中重置内容和设置
-
在pList中将Bundle Version从1.4更改为1.4.1
感谢所有以前的答案,让我到这个阶段。 它的魅力!
在我的情况下,错误是由于我没有设置生成ID。
设置这个,启动模拟器没有问题。
还有一件事情要做,那就是重置模拟器并做一个干净的构build并没有帮助,清除了派生的数据。 要做到这一点:去组织者点击项目点击删除派生数据button。 在做了一段延期工作之后,我发生了这种情况,并回到了正规部门。 希望这可以帮助。
这是什么导致了我的问题:主应用程序和扩展的内部版本号是不同的(我已经增加了主要的应用程序内部版本号1.0.1.03,但留在1.0.1.02扩展名)。
让他们匹配解决了我的问题。
打开控制台应用程序,看看那里。 就我而言,它告诉了我该怎么做。 我看见:
ErrorDescription = WatchKit 2应用程序扩展的NSExtension.NSExtensionAttributes.WKAppBundleIdentifier值与WatchKit应用程序的包ID(find“com.myCompany.MyApp.MyApp.watchkitapp”;预期的“com.myCompany.MyApp.watchkitapp”)不匹配。
所以,我去了每个plist,并检查任何与BundleID有关的项目。 然后清理,重新启动等
我有一个应用程序设置为使用基于生成configuration不同的包ID。 在创build我的Apple Watch扩展时,Xcode使用我的发行版ID生成了所有内容,所以我必须手动完成并手动进行debugging。 以下是我必须改变的所有地方:
-
WatchKit Extension
的Build Settings -> Packaging -> Product Bundle Identifier
-
WatchKit Extension
的Info.plist -> NSExtension -> NSExtensionAttributes -> WKAppBundleIdentifier
(这需要使用相同的前缀作为您的伴侣应用程序) -
WatchKit App
的Info.plist -> WKCompanionAppBundleIdentifier
最后一个花了我一段时间,因为在查看目标设置时WatchKit App
的信息没有显示为标签,我不得不直接去Info.plist
文件本身。
尝试在[目标] – [常规] – [身份] – [版本(或生成)]中input一些数字,如果它们是空的。
它为我工作。
我希望这会帮助你。
我也有这个错误。 在我的情况下,日志~/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
感谢这个答案在看我的应用程序info.plist。 关键的CFBundleVersion
丢失,所以我添加它,现在一切正常!
以上都没有为我工作,但是这样做:
我只是删除IceCream.xcworkspace / xcuserdata / xcuserdatad,然后重置模拟器,再次运行应用程序。 (单独重置模拟器,没有为我工作。)
我的情况是关于框架编译。 我已经从Target-Build Phases- Embedded Frameworks-启用了“仅在安装时复制”选项,
解决我的问题后,从iOS Simutalor菜单选项“重置内容和设置”,启动模拟器。
杰里米的这个伟大的解释至less让我朝着正确的方向,但是尽pipe所有的包标识符和版本设置正确,错误仍然存在。 然后,我检查了Apple文档 ,其中显示了WatchKit扩展(在其“复制包资源”阶段)复制了WatchKit应用程序。 这个WatchKit应用程序的命名与我的iOS应用程序完全相同,导致Xcode将两者混淆,并读出错误的plist,认为包标识符不正确。 将WatchKit应用的产品重命名为不同的东西,终于为我解决了。
如果您已经更改了您的捆绑ID,请确保在尝试重新构build之前进行干净的构build! 看看这里如何 : 如何清空caching和清理所有的目标Xcode 4
所以这是不确定的.plist问题。 在我的情况下它是空的NSExtensionMainStoryboard
,删除这个属性解决了这个问题
我在尝试构buildApple的Lister Xcode项目并在模拟器上运行时出现此错误。
为我解决这个问题的要点是:
1)用于iOS应用和iOS扩展的BundleID必须不同2)我为这两个目标提供iCloud和应用组3)我使用Xcode的“修复问题”来解决问题
之后,我可以build立和运行应用程序没有任何警告或错误。
从日志文件的线索是“… LegacyErrorString = DuplicateIdentifier,FunctionName = – [MIInstallableBundle performPreflightWithError:],SourceFileLine = 450,NSLocalizedDescription =父包具有相同的标识符(com.ACMECompany.Lister)用户/斯蒂芬/库/开发商/ CoreSimulator /设备/ 5329928B-946B-40A4-B666-EFD11B96D11F /数据/库/caching/ com.apple.mobile.installd.staging / temp.HQ5d9X /提取/ Lister.app /插件/ Lister.appex”
在InfoPlist.strings
本地化文件中设置了错误的应用程序版本。 Urgh!
一个小时过去了!
删除你的模拟器并重新生成一个。
它适用于我。
我删除了应用程序的 .plist文件中不应该出现的键。 问题就消失了
这工作对我来说:在项目设置 – >常规选项卡 – >身份部分我将版本号从2.0.2(三位数字)更改为2.0(两位数),然后我删除模拟器中的应用程序,再次运行项目。 之后没有更多的错误。
另外一个可能的解决办法是添加到所有其他的,毫无疑问将保持在我的上面;)
我删除了,后来恢复了一个保留源文件的Today Extension目标,但是在尝试了所有的解决scheme之后,我意识到它没有任何资源或者资源在它的目标中! 如果您的详细启动服务错误找不到您编译的应用程序扩展名文件,您可能也会遇到这种情况。
所以,长话短说,确保你的目标有东西包括编译或捆绑在那里。 您可以通过select项目导航器(左侧)上的相关文件并在文件检查器(这是右侧的第一个选项卡)中设置适当的复选标记来检查目标成员资格。
我在我的日志中有以下内容…
<Error>: Error Domain=LaunchServicesError Code=0 "(null)" UserInfo={Error=ExecutableTwiddleFailed...
这是由于在扩展项目中没有添加源文件。
当没有可用的硬盘空间时,此错误显示在我的系统上。 我释放了一些空间在我的系统上工作。
我的问题是目标项目的包装扩展未被设置。
要解决我不得不去目标项目 – > build立设置 – > 包装 – > 包装扩展 。
将其设置为“应用程序”(不含引号)
这为我解决了这个问题