Ответ 1
Вы изменили идентификатор пакета вашего приложения? Если это так, вам может потребоваться вручную обновить WKAppBundleIdentifier в расширении WatchKit, а также WKCompanionAppBundleIdentifier в приложении WatchKit.
Когда я открываю существующее приложение Watchkit (Xcode 6.2), оно компилируется правильно, запускаются симуляторы (iPhone + Watch), за которым следует значимая ошибка:
Ошибка при запуске 'xxx Watchkit Extension' SPErrorInValidBundleNoGizmoBinaryMessage
У меня есть эта проблема со всеми симуляторами (iPhone 5/5S/6/6 + - 38 мм /42 мм)
Любые идеи, что может быть проблемой?
Похоже, что по какой-то причине приложение не хочет запускаться на симуляторе, хотя оно и было. Приложение iPhone, включенное в один и тот же проект, запускается, как и другие примеры приложений Watchkit.
Вы изменили идентификатор пакета вашего приложения? Если это так, вам может потребоваться вручную обновить WKAppBundleIdentifier в расширении WatchKit, а также WKCompanionAppBundleIdentifier в приложении WatchKit.
WKAppBundleIdentifier, возможно, должен быть таким же, что и в WatchKit App Bundle Identifier.
Пожалуйста, проверьте расширение. NSExtension - NSExtensionAttributes - WKAppBundleIdentifier - xxxxx.watchkitapp
ИЗМЕНИТЬ: Дальнейшее объяснение, чтобы уточнить...
Под целью вашего приложения вы перейдете на вкладку INFO и установите Bundle Identifier в com.myapp
Затем под целевой целью WatchKit вы переходите на вкладку INFO и устанавливаете идентификатор Bundle для com.myapp.watchkitextension
Затем, находясь под целевой целью WatchKit Extension и все еще находясь на вкладке INFO, вы устанавливаете NSExtension > NSExtensionAttributes > WKAppBundleIdentifier в com.myapp.watchkitapp
Итак, один заканчивается на .watchkitextension, а другой заканчивается на .watchkitapp
Проверьте Info.plist для "Расширение вашего приложения WatchKit" и "Приложение App WatchKit App". Первая часть всех отступов должна быть одинаковой.
В моем случае проблема была в "Расширение вашего приложения WatchKit" > NSExtension > NSExtensionAttributes > WKAppBundleIdentifier.
Убедитесь, что вы используете симулятор 8.3.
Я получил это сообщение последовательно при использовании 8.2. Пробовал все перечисленное здесь и боролся с этим часами. Переключение на 8.3 разрешило его. Ironic, так как вы должны установить цель развертывания в 8.2 на данный момент, но для приложений watchkit требуется 8.3 для запуска, я думаю...
Я проверял все идентификаторы пакетов несколько раз, но не мог избавиться от проблемы. Также не удалось очистить папку сборки.
Однако мне удалось разобраться с отключением Game Center в Возможности моего расширения WatchKit.
Включение его для хост-приложения iOS работает нормально, но включение его для расширения WatchKit в ошибке SPErrorInvalidBundleNoGizmoBinaryMessage при попытке запустить приложение WatchKit в симуляторе, в то время как оно завершает строительство без каких-либо жалоб.
Я разрабатываю игру для Apple Watch и с нетерпением жду поддержки Game Center. На самом деле, мой план с самого начала заключался в том, чтобы общаться с приложением для хостинга iOS, но затем я увидел Game Center, указанный в возможностях самого расширения WatchKit, поэтому я ожидал, что смогу справиться с ним прямо там. Однако, поскольку он, похоже, не работает, я собираюсь придерживаться своего первоначального плана, чтобы поддержать его через приложение для хостинга iOS.
Xcode Version 6.2 (6C131e)
EDIT:. Такая же проблема с Xcode Version 6.3 (6D570)
Для проблем с реальными устройствами (а не симулятором), делайте все в этом сообщении: 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" ), а затем повторите попытку. Это был кикер, который сделал это для меня.
Я тоже борется с этим. Именно это и решило мою проблему на Xcode 7.1 iOS 9. Просто убедитесь, что вы следуете названию ниже для ваших идентификаторов:
Расширение должно иметь идентификатор целевой задачи WatchKit + .watchkitextension
Я пробовал все, что было опубликовано до сих пор в этой теме, но все равно не смог заставить его работать. Я прибегал к отступлению до того момента, когда он работал, и повторил каждое действие, которое я сделал, чтобы выяснить, в какой момент он ломается...
Как оказалось, файл Info.plist приложения WatchKit не похож на какую-либо пользовательскую запись plist, по крайней мере, это то, что я обнаружил в моем случае. Я добавил запись под названием "MyAppBundlePrefix" и вызвал "Ошибка запуска" xxx Расширение Watchkit "SPErrorInValidBundleNoGizmoBinaryMessage"
Я бы хотел, чтобы XCode предложила немного более конкретную деталь для этой ошибки, но мне потребовалось около 5 часов, чтобы найти это путем грубой силы.