При попытке запустить приложение в iOS Simulator с Xcode 6. я получил ошибку (Domain = LaunchServicesError, Code = 0). Я искал решение в google, но я не нашел ничего практичного.
Что означает эта ошибка?
При попытке запустить приложение в iOS Simulator с Xcode 6. я получил ошибку (Domain = LaunchServicesError, Code = 0). Я искал решение в google, но я не нашел ничего практичного.
Что означает эта ошибка?
Эта ошибка указывает на то, что возникла проблема с установкой. К сожалению, Xcode фактически не печатает содержимое сообщения об ошибке, которое бы дало вам больше информации, но вы можете посмотреть ~/Library/Logs/CoreSimulator/CoreSimulator.log, чтобы просмотреть остальную часть сведений об ошибке. Также будет больше информации о проблеме в журнале системных системных устройств (~/Library/Logs/CoreSimulator/[Device UDID]/system.log); искать сообщения от installd во время ошибки).
Общими причинами этого являются пулы, пропускающие Info.plist, отсутствующие ключи в вашем пакете Info.plist или значения для некоторых ключей в Info.plist, которые не разрешены.
Если ваше приложение Info.plist не содержит допустимую пару ключей/значений CFBundleVersion, возможно, что ваше приложение может установить корректно в первый раз, но не обновиться. Многие пользователи, похоже, обходятся этим, выполняя "Reset Содержание и настройки" после каждой установки, но лучше исправить основную причину, установив соответствующую CFBundleVersion в Info.plist. Я считаю, что iOS 8.2 теперь корректно возвращает ошибку при первой установке в этом случае, а не только на обновления, поэтому, надеюсь, эта проблема станет более очевидной.
Пользователи с домашними каталогами в файловых системах, которые не поддерживают жесткие ссылки (например: сетевые домашние каталоги через AFP, SMB или некоторые серверы NFS) также могут сталкиваться с проблемами, связанными с жесткой привязкой. Если это так, я предлагаю вам создать путь на вашей локальной файловой системе HFS + для разработки симулятора (например:/var/simulator/[user]) и создать символическую ссылку на этот путь из ~/Library/Developer/CoreSimulator. Эта конкретная проблема была исправлена в одной из бета-версий iOS 8.2.
В другом случае Build & Run всегда будет успешным с первой попытки, но последующие попытки иногда терпят неудачу из-за измененного Info.plist(например: потому что кто-то строит системные настройки, приводит к тому, что CFBundleVersion отличается на каждой итерации). Обычно вы можете восстановить, удалив установленное приложение (используя длительное нажатие с главного экрана или xcrun simctl uninstall [Device UDID] [app identifier]
) или стирая устройство обратно в состояние по умолчанию. Чтобы стереть устройство, выполните xcrun simctl erase [Device UDID]
с терминала или выберите Erase Contents & Settings
в меню iOS Simulator. Эта конкретная проблема была исправлена в одной из бета-версий iOS 8.2.
Более новый экземпляр этой проблемы возникает для пользователей Xcode 6.2. Если у вас есть приложение WatchKit App Extension, входящее в состав вашего приложения, оно не будет установлено в версии среды выполнения iOS Simulator старше iOS 8.2. В качестве обходного пути вам потребуется вручную отключить расширение приложения, если вы хотите протестировать его с помощью iOS 8.1 и более ранних версий.
Если вам нужна более конкретная справка, предоставьте полное сообщение об ошибке из CoreSimulator.log и любых сообщений из installd и CoreSimulatorBridge, которые появляются примерно в одно и то же время в ~/Library/Logs/CoreSimulator/[Device UDID]/system.log, поскольку это покажет основную проблему.
Включен ли в ваш проект виджет или расширение? Если это так, проблема может быть идентификатором связки вашего виджета/расширения. Он должен быть таким же, как и главная цель, добавляется с периодом и дополнительной строкой. Так, например:
Основная цель: com.mycompany.myapp
Виджет должен быть: com.mycompany.myapp.widget
Я установил его, сбросив симулятор:
iOS Simulator > Reset Содержание и настройки...
Поскольку каждый пишет, что они пережили, и как они исправили свою точную проблему, это может быть бесполезно.
Проблема в том, что существуют разные причины для одного и того же сообщения об ошибке, и правильный способ его решения - открыть ~/Library/Logs/CoreSimulator/CoreSimulator.log
и посмотреть там для последнего сообщения. Это сообщение дает вам хороший ключ и задает вам правильный путь решения вашей проблемы (иногда он связывает идентификаторы, иногда это недостающий или дополнительный атрибут в Info.plist, но вы всегда получаете хороший описательный ключ).
Вот как вы сужаете проблему и в конечном итоге можете ее исправить.
Удачи и крепких нервов с Xcode.)
Z.
Для меня я просто очистил проект, и он сработал → Продукт → Очистить
TL;DR: очистите свою папку для создания проекта - и вы будете свободны от этой боли.
(плюс я зарегистрировал это как ошибку с Apple, так как им нужно найти способ исправить это в Xcode)
Ни один из этих решений не работал у меня - я ударил головой о несколько стен.
Я посмотрел на журнал CoreSimulator, и я понял, что он пытается создать библиотеку, которую я удалил.
Я не мог найти ссылки на него нигде.
Затем я увидел через другой SO-вопрос, к сожалению, я не могу найти ссылку, если вы:
Clean
Build Folder
"Reset Контент и настройки из параметров iOS Simutalor и запускающего симулятора после Выход из решил мою проблему.
В XCode 6
Во время работы возникла ошибка (Domain = LaunchServicesError, Код = 0)
У меня была эта ошибка после внесения некоторых основных изменений кода для размещения экранов iPhone 6. в Xcode 6 (iOS8)
Я следил за приведенными выше опциями и обнаружил, что единственный способ получить это исправление - сделать следующее:
Изменена версия Bundle до 1.4.1 из 1.4 в pList
Спасибо за все предыдущие ответы, которые привели меня на этот этап. Это сработало очарование!
В моем случае ошибка была вызвана, потому что я не установил идентификатор сборки.
Установка этого, без проблем запускает эмулятор.
Еще одна попытка попробовать, которая сработала для меня, после сброса симулятора и выполнения чистой сборки не помогла, очищает полученные данные. Чтобы сделать это: перейдите на вкладку "Организатор", нажмите кнопку "Удалить", чтобы удалить данные. У меня это было после продолжительной работы над расширением, и он вернулся к регулярной ветке. Надеюсь, это поможет.
Вот что вызвало у меня проблему: номер сборки для основного приложения и расширения был другим (у меня был увеличен основной номер сборки приложения до 1.0.1.03, но он оставил расширение на 1.0.1.02).
Удовлетворяя их соответствие, я решил проблему.
Откройте консольное приложение и посмотрите там. В моем случае он точно рассказал мне, что делать. Я видел:
ErrorDescription = расширение приложения WatchKit 2 Значение NSExtension.NSExtensionAttributes.WKAppBundleIdentifier не соответствует идентификатору пакета приложений WatchKit (найдено "com.myCompany.MyApp.MyApp.watchkitapp"; ожидается "com.myCompany.MyApp.watchkitapp" ).
Итак, я пошел на каждый plist и проверил все элементы, связанные с BundleID. Затем очистите, перезапустите и т.д.
У меня есть приложение, которое настроено на использование разных идентификаторов пакетов на основе конфигурации сборки. При создании моего расширения Apple Watch Xcode генерировал все, используя мой идентификатор Release, поэтому мне пришлось пройти и вручную изменить его для отладки. Здесь все места, которые я должен был изменить:
WatchKit Extension
Build Settings -> Packaging -> Product Bundle Identifier
WatchKit Extension
Info.plist -> NSExtension -> NSExtensionAttributes -> WKAppBundleIdentifier
(для этого должен использоваться тот же префикс, что и для вашего приложения-компаньона)WatchKit App
Info.plist -> WKCompanionAppBundleIdentifier
Последнее заняло некоторое время, так как WatchKit App
Info не отображается как вкладка при просмотре целевых настроек, мне нужно было перейти непосредственно к самому файлу Info.plist
.
Попробуйте поместить некоторое число в [TARGETS] - [General] - [Identity] - [Version (или Build)], если они пусты.
Это сработало для меня.
Надеюсь, это поможет вам.
У меня также есть эта ошибка. В моем случае log ~/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 Посмотрите на мое приложение info.plist. ключ CFBundleVersion
отсутствовал, поэтому я добавляю его, и теперь все работает!
Ни одно из вышеперечисленных не работало для меня, но это произошло:
Я просто удалил IceCream.xcworkspace/xcuserdata/xcuserdatad, а затем reset симулятор и снова запустил приложение. (Сброс только симулятора, не работал у меня.)
Великое объяснение Джереми по крайней мере поставило меня в правильном направлении, но, несмотря на то, что все идентификаторы и версии комплекта установлены правильно, ошибка по-прежнему сохраняется. Затем я проверил документацию Apple, в которой показано, что расширение WatchKit (на этапе копирования компонентов Bundle) копирует приложение WatchKit. Это приложение WatchKit было названо точно так же, как и мое приложение iOS, в результате чего Xcode запутал их и запустил неправильный plist, считая, что идентификатор пакета неверен. Переименование продукта приложения WatchKit в нечто отличное, наконец, решило его для меня.
В моем случае речь шла о компиляции фреймов. Я включил опцию "копировать только при установке" из Target-Build Phases - Embedded Frameworks -
"Reset Содержимое и настройки" из параметров меню iOS Simutalor и запускающего симулятора после выхода из решения проблемы.
Если вы изменили свой идентификатор пакета, убедитесь, что вы сделали чистую сборку, прежде чем пытаться ее снова создать! Смотрите, как здесь: Как очистить кеши и очистить все цели Xcode 4
Так что это определенно проблема .plist. В моем случае он был пуст NSExtensionMainStoryboard
, удалив это свойство, исправил проблему
У меня была эта ошибка, пытаясь построить проект Apple Lister Xcode и запустить его на симуляторе.
Основы, которые его исправили, были:
1) BundleID для приложения iOS и расширения iOS должны были отличаться 2) Я предоставляю iCloud и группы приложений для обеих целей 3) Я использовал Xcode "Fix Issue", чтобы исправить проблемы.
После этого я мог создавать и запускать приложение без предупреждений или ошибок.
Ключ из файла журнала был "... LegacyErrorString = DuplicateIdentifier, FunctionName = - [MIInstallableBundle выполнитьPreflightWithError:], 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"
Если неправильная версия приложения установлена в файле InfoPlist.strings
локализации. Urgh!
Прошел час!
Удалите ваш симулятор и восстановите его.
Это работает для меня.
Я удалил ключ в файле watch > .plist, который не должен был быть. И проблема исчезла.
Это сработало для меня: В настройках проекта → вкладка "Общие" → раздел "Идентификация" я изменил номер версии с чего-то вроде 2.0.2 (три цифры) на 2.0 (две цифры), после чего я удалил приложение в симуляторе и снова запустил проект. После этого больше не возникает ошибок.
Еще одно возможное решение для добавления ко всем остальным, которые, несомненно, останутся выше моего;)
Я удалил и позже восстановил цель Today Extension, сохранив исходные файлы, но после попытки каждого решения под солнцем я понял, что у него нет никаких источников или ресурсов в своей цели! Вы можете столкнуться с этим, если ваша подробная ошибка служб запуска не может найти файл скомпилированного приложения.
Итак, короткая история, убедитесь, что ваша цель содержит что-то для компиляции или связывания там. Вы можете проверить свои целевые членства, выбрав соответствующий файл в своем навигаторе проектов (слева) и установив галочку (и) в соответствующем окне в инспекторе файлов (это первая вкладка справа).
В моем журнале было следующее:
<Error>: Error Domain=LaunchServicesError Code=0 "(null)" UserInfo={Error=ExecutableTwiddleFailed...
Это произошло из-за отсутствия исходных файлов, добавленных в проект расширения.
Эта ошибка появлялась в моей системе, когда не было свободного места на жестком диске. Я освободил место в моей системе, чтобы он работал.
Моя проблема заключалась в том, что расширение оболочки для целевого проекта не было выполнено.
Чтобы исправить, мне нужно было перейти к целевому проекту → настройкам сборки → Упаковка → Расширение Wrapper > .
Установите это в "приложение" (без кавычек)
Это исправило проблему для меня