web-dev-qa-db-fra.com

Problème de simulateur Apple Watchkit: SPErrorInvalidBundleNoGizmoBinaryMessage

Lorsque j'ouvre mon application Watchkit existante (Xcode 6.2), elle se compile correctement, les simulateurs sont lancés (iPhone + Watch), suivis de l'erreur significative:

Erreur lors du lancement de 'xxx Watchkit Extension' SPErrorInValidBundleNoGizmoBinaryMessage

J'ai ce problème avec tous les simulateurs (iPhone 5/5S/6/6 + - 38mm/42mm)

Des idées ce que le problème peut être?

Il semble que pour une raison quelconque, l'application ne souhaite pas s'exécuter sur le simulateur, bien qu'elle l'ait utilisée auparavant. L'application iPhone incluse dans le même projet est exécutée, à l'instar d'autres exemples d'applications Watchkit.

28
Wouter

Avez-vous changé l'ID de bundle de votre application? Si c'est le cas, vous devrez peut-être mettre à jour manuellement le WKAppBundleIdentifier dans l'extension WatchKit ainsi que le WKCompanionAppBundleIdentifier dans l'application WatchKit.

42
Reuben Bijl

Il se peut que WKAppBundleIdentifier doive être identique à l'identificateur de paquet de WatchKit App.

S'il vous plaît vérifier info.plist WatchKit Extension . NSExtension - NSExtensionAttributes - WKAppBundleIdentifier - xxxxx.watchkitapp

EDIT: Explication supplémentaire pour clarifier ...

Sous la cible de votre application, accédez à l'onglet INFO et définissez Bundle Identifier sur com.myapp.

Ensuite, sous la cible Extension WatchKit, accédez à l’onglet INFO et définissez l’indicateur d’ensemble sur com.myapp.watchkitextension.

Ensuite, toujours sous la cible Extension WatchKit et toujours sous l'onglet INFO, définissez NSExtension> NSExtensionAttributes> WKAppBundleIdentifier sur com.myapp.watchkitapp.

Donc, l’un se termine par .watchkitextension et l’autre se termine par .watchkitapp

20
Mao Nishi

Consultez Info.plist pour "Votre extension App WatchKit" et "Votre application App WatchKit". La première partie de tous les identificateurs devrait être identique.

Dans mon cas, le problème se trouvait dans "Votre extension App WatchKit"> NSExtension> NSExtensionAttributes> WKAppBundleIdentifier.

My problem was in this string

14
ZevsVU

Assurez-vous que vous utilisez un simulateur 8.3.

J'ai reçu ce message de manière cohérente avec 8.2. J'ai tout essayé ici et j'ai lutté pendant des heures. Le passage à la version 8.3 l’a résolu. Ironiquement, puisque vous devez définir la cible de déploiement sur 8.2 pour le moment, mais les applications de surveillance ont besoin de 8.3 pour fonctionner, je suppose ...

7
Mike Bobbitt

J'ai vérifié tous les identificateurs de paquet à plusieurs reprises, mais je n'ai pas pu résoudre le problème. Le nettoyage du dossier de construction n’a pas non plus fonctionné.

Cependant, j’ai pu résoudre ce problème en désactivant Game Center au niveau de la fonctionnalité {fonctionnalités de mon extension WatchKit}.

L'activer pour l'application hôte iOS semble fonctionner correctement, mais l'activer pour l'extension WatchKit entraîne l'erreur SPErrorInvalidBundleNoGizmoBinaryMessage lors de la tentative d'exécution de l'application WatchKit dans le simulateur, alors que la construction est terminée sans aucun problème.

Je développe un jeu pour Apple Watch et avais hâte de prendre en charge Game Center. C’était en fait mon plan depuis le tout début de communiquer avec l’application d’hébergement iOS, mais j’ai vu Game Center énuméré dans les fonctionnalités de l’extension WatchKit elle-même; j’espérais donc pouvoir y faire face. Cependant, comme cela ne semble pas fonctionner, je vais m'en tenir à mon plan initial de le prendre en charge via l'application iOS d'hébergement.

Xcode version 6.2 (6C131e)

EDIT: Même problème avec Xcode Version 6.3 (6D570)

5
NexD.

Pour les numéros sur des appareils réels (pas sur simulateur), faites tout dans ce post: http://blog.jaredsinclair.com/post/117350678170/jareds-code-signing-tips-Apple-watch-edition

Le plus important:

Les trois cibles nécessitent les éléments suivants:

un ID d'application unique pour cette cible; une identité de signature de code (s'applique à toutes les cibles), un profil d'approvisionnement unique pour cette cible.

et assurez-vous que les identifiants d'application sont cohérents:

Les identifiants de vos applications ressemblent à ceci:

com.company.App-Name

com.company.App-Name.todaywidget

com.company.App-Name.watchkitapp

com.company.App-Name.watchkitextension

Si cela ne fonctionne toujours pas, supprimez manuellement l'application de la montre (en maintenant l'icône, puis appuyez sur 'x'), puis réessayez. C'était le botteur qui l'a fait pour moi.

2
rocky

J'ai eu du mal avec cela aussi. C'est ce qui a résolu mon problème sur Xcode 7.1 iOS 9 . Assurez-vous simplement que vous suivez les noms ci-dessous pour vos identifiants:

  • Cible - com.myCompany.myApp
  • Watchkit app - com.myCompany.myApp.watchkitApp
  • Extension de Watchkit - Com.myCompany.myApp.watchkitApp.watchkitextension

L'extension doit avoir l'identifiant de la cible de l'application WatchKit + .watchkitextension

1

La procédure que j'ai résolue le problème est

  1. Vérifiez si WKAppBundleIdentifier et l'identificateur de paquet dans l'extension WatchKit et l'application WatchKit sont corrects
  2. Supprimer les sous-dossiers de ~/Bibliothèque/Developer/CoreSimulator/Devices
  3. Supprimer les sous-dossiers de ~/Library/Developer/Xcode/DerivedData
  4. Nettoyer mon projet
  5. Redémarrer le simulateur
  6. Courir
1
Kueiapp

J'ai tout essayé jusqu'à présent dans ce fil, mais je n'ai toujours pas réussi à le faire fonctionner. J'ai eu recours à un retour en arrière au point où cela fonctionnait et à retracer chaque action que j'ai faite pour déterminer à quel point cela se brise ...

En fin de compte, le fichier info.plist de l'application WatchKit n'aime aucune entrée de plist personnalisée, du moins c'est ce que j'ai découvert dans mon cas. J'ai ajouté une entrée appelée "MyAppBundlePrefix" qui a provoqué le message "Erreur lors du lancement de" l'extension de Watchkit xxx "SPErrorInValidBundleNoGizmoBinaryMessage"

J'aimerais que XCode fournisse un peu plus de détails sur cette erreur, mais il m'a fallu environ 5 heures pour la découvrir de manière brutale.

0
Kevin T.