it-swarm.com.ru

Проблема симулятора Apple Watchkit: SPErrorInvalidBundleNoGizmoBinaryMessage

Когда я открываю свое существующее приложение Watchkit (Xcode 6.2), оно корректно компилируется, запускаются симуляторы (iPhone + Watch), после чего следует значительная ошибка:

Ошибка запуска 'xxx Расширение Watchkit' SPErrorInValidBundleNoGizmoBinaryMessage

У меня есть эта проблема со всеми симуляторами (iPhone 5/5S/6/6 + - 38 мм/42 мм)

Есть идеи, в чем может быть проблема?

Кажется, по какой-то причине приложение не хочет запускаться на симуляторе, хотя раньше. Приложение iPhone, включенное в тот же проект, работает, как и другие примеры приложений Watchkit.

28
Wouter

Вы изменили идентификатор пакета своего приложения? В этом случае вам может потребоваться вручную обновить WKAppBundleIdentifier в расширении WatchKit, а также WKCompanionAppBundleIdentifier в приложении WatchKit.

42
Reuben Bijl

Возможно, WKAppBundleIdentifier должен совпадать с идентификатором пакета приложения WatchKit.

Пожалуйста, проверьте info.plist Расширения WatchKit . NSExtension - NSExtensionAttributes - WKAppBundleIdentifier - xxxxx.watchkitapp

Правка: Дальнейшее объяснение, чтобы уточнить ...

Под вашей целью приложения вы переходите на вкладку INFO и устанавливаете Bundle Identifier на com.myapp

Затем под целевым расширением WatchKit перейдите на вкладку INFO и установите для идентификатора пакета значение com.myapp.watchkitextension.

Затем все еще под целью расширения WatchKit и на вкладке INFO вы устанавливаете NSExtension> NSExtensionAttributes> WKAppBundleIdentifier в com.myapp.watchkitapp

Таким образом, один из них заканчивается на .watchkitextension, а другой заканчивается на .watchkitapp

20
Mao Nishi

Проверьте Info.plist для «Расширение вашего приложения WatchKit» и «Ваше приложение WatchKit App». Первая часть всех идентификаторов должна быть одинаковой.

В моем случае проблема была в «Расширении вашего приложения WatchKit»> NSExtension> NSExtensionAttributes> WKAppBundleIdentifier.

My problem was in this string

14
ZevsVU

Убедитесь, что вы используете симулятор 8.3.

Я получил это сообщение последовательно при использовании 8.2. Перепробовал все перечисленное здесь и боролся с этим часами. Переход на 8.3 решил. Иронично, так как вы должны на данный момент установите цель развертывания на 8.2, но приложениям watchkit для запуска нужно 8.3, я думаю ...

7
Mike Bobbitt

Я проверил все идентификаторы пакета несколько раз, но не смог избавиться от проблемы. Также не удалась очистка папки сборки.

Тем не менее, я смог разобраться с этим отключив Game Center в Возможности моего расширения WatchKit .

Включение его для приложения iOS Host, кажется, работает нормально, но включение его для расширения WatchKit приводит к ошибке SPErrorInvalidBundleNoGizmoBinaryMessage при попытке запустить приложение WatchKit в симуляторе, когда оно завершает сборку без каких-либо жалоб.

Я разрабатываю игру для Apple Watch и с нетерпением жду поддержки Game Center. На самом деле это был мой план с самого начала общаться с принимающим приложением iOS, но потом я увидел Game Center в списке возможностей самого расширения WatchKit, так что я ожидал, что смогу с этим справиться прямо сейчас. Тем не менее, поскольку это, похоже, не работает, я собираюсь придерживаться своего первоначального плана поддержки его через приложение iOS для хостинга.

Версия Xcode 6.2 (6C131e)

Правка: Та же проблема с версией Xcode 6.3 (6D570)

5
NexD.

Для решения проблем на реальных устройствах (не на симуляторе) сделайте все в этом посте: http://blog.jaredsinclair.com/post/117350678170/jareds-code-signing-tips-Apple-watch-edition

Самое главное:

Все три цели требуют следующего:

уникальный идентификатор приложения для этой цели, идентификатор подписи кода (относится к всем целям), уникальный профиль обеспечения для этой цели.

и убедитесь, что идентификаторы приложений совпадают:

Идентификаторы вашего приложения будут выглядеть примерно так:

com.company.App-Name

com.company.App-Name.todaywidget

com.company.App-Name.watchkitapp

com.company.App-Name.watchkitextension

Если это по-прежнему не работает, вручную удалите приложение из часов (удерживая значок, а затем нажмите «x»), а затем повторите попытку. Это был кикер, который сделал это для меня.

2
rocky

Я тоже боролся с этим. Это то, что решило мою проблему на Xcode 7.1 iOS 9 . Просто убедитесь, что вы используете следующие имена для ваших идентификаторов:

  • Цель - com.myCompany.myApp
  • Приложение Watchkit - com.myCompany.myApp.watchkitApp
  • Расширение Watchkit - Com.myCompany.myApp.watchkitApp.watchkitextension

Расширение должно иметь идентификатор цели приложения WatchKit + .watchkitextension

1
Uday Veer Singh Patial

Процедура, которую я решил проблему

  1. Проверьте правильность WKAppBundleIdentifier и идентификатора пакета в расширении WatchKit и приложении WatchKit.
  2. Удалить подпапки ~/Библиотека/Разработчик/CoreSimulator/Устройства
  3. Удалить подпапки ~/Library/Developer/Xcode/DerivedData
  4. Очисти мой проект
  5. Перезапустите симулятор
  6. Бежать
1
Kueiapp

Я перепробовал все, что было опубликовано в этой теме, но все еще не смог заставить его работать. Я прибег к возврату к моменту, когда он работал, и отслеживаю каждое действие, которое я сделал, чтобы выяснить, в какой момент оно ломается ...

Как выяснилось, файл info.plist приложения WatchKit не похож на какую-либо собственную запись plist, по крайней мере, это то, что я обнаружил в моем случае. Я добавил запись под названием «MyAppBundlePrefix», и это вызвало «Ошибка запуска» xxx Расширение Watchkit 'SPErrorInValidBundleNoGizmoBinaryMessage "

Хотелось бы, чтобы XCode предложил немного более подробные сведения об этой ошибке, но мне понадобилось около 5 часов, чтобы выяснить это методом грубой силы.

0
Kevin T.