web-dev-qa-db-fra.com

Identificateurs de bundles d'extension WatchKit

J'essaie de construire mon application mais elle a échoué. On me montre le message ci-dessous.

erreur: L'extension WatchKit ne contient aucune application WatchKit dont les identificateurs de paquet correspondent "com.domain.appname.watchkitapp". Vérifiez que la valeur de WKAppBundleIdentifier dans Info.plist de votre extension WatchKit correspond à celle de CFBundleIdentifier dans Info.plist de votre application WatchKit.

J'ai récemment changé "com.domain.appname.watchkitapp" en "com.domain.differentappname.watchkitapp".

Je ne trouve pas où changer cela.

47
Tom Coomer

Vous devez faire attention lorsque vous modifiez les identificateurs de paquet, voici comment ils doivent être définis (vous devez modifier chaque identificateur dans Info.plist pour l'application iPhone, pour l'extension Watchkit et pour le Watchkit App):

application iPhone Info.plist:

Définissez l’identifiant de paquet à votre guise (propriété "Identifiant de paquet").

Exemple:

Bundle identifier: com.fruitcompany.orange

WatchKit App Info.plist

L'identifiant de paquet ici doit être préfixé par l'identifiant de l'application iPhone, comme ceci (exemple):

Bundle identifier: com.fruitcompany.orange.watchkit

Vous devez également modifier la WKCompanionAppBundleIdentifier qui doit correspondre à l'identificateur du bundle d'applications iPhone, comme ceci:

WKCompanionAppBundleIdentifier: com.fruitcompany.orange

Watchkit Extension Info.plist:

L'identifiant de paquet ici doit être préfixé par l'identifiant de l'application iPhone, comme ceci (exemple):

Bundle identifier: com.fruitcompany.orange.watchkit.extension

Vous devez également définir WKAppBundleIdentifier sous l'attribut NSExtension.

WKAppBundleIdentifier

L'identifiant WKAppBundleIdentifierdoit correspondre à l'identifiant de bundle d'applications WatchKit comme ceci:

WKAppBundleIdentifier: com.fruitcompany.orange.watchkit
161
Dejan Skledar

Tout d’abord, permettez-moi de souligner l’excellente réponse fournie par @DejanSkledar sur cette page, car tous les emplacements mentionnés dans la réponse sont importants.

Cela dit, la configuration précise de cette réponse ne me suffisait pas. J'aimerais compléter cette réponse et souligner que, depuis Watchkit 2, il semble qu'une hiérarchie soit requise lorsque vous travaillez depuis l'application, vers l'application Watch, puis enfin vers l'extension de l'application en termes d'ID de bundle.

Voici les paramètres de chacun des fichiers info.plist correspondants qui ont fonctionné pour moi après avoir trouvé la réponse de edwardmp sur un problème connexe

Id de paquet de iPhone: com.domain.yourapp

Regardez le numéro de paquet de l'application: Com.domain.yourapp.watchkit

Id de bundle d'extension de Watchkit: Com.domain.yourapp.watchkit.extension

Comme vous pouvez le constater, une application iPhone possède une application Watchkit, qui possède elle-même une extension Watchkit, et chacun de ces niveaux doit être reflété dans chacun de leurs identifiants de bundle respectifs.

Pour terminer les relations, l’application de surveillance doit pointer sur l’application pour iPhone à laquelle elle appartient en utilisant l’application (WKCompanionAppBundleIdentifier), et l’extension de surveillance doit pointer vers l’application de surveillance à laquelle elle appartient (WKAppBundleIdentifier.)

Regarder WKCompanionAppBundleIdentifier de l'application: Com.domain.yourapp

Regardez l'extension WKAppBundleIdentifier de l'application: Com.domain.yourapp.watchkit

J'espère que cela fera gagner un peu de temps à quelqu'un, car j'ai dû lutter pendant quelques heures :(

14
AdamJonR

Vous devrez peut-être également modifier la clé WKCompanionAppBundleidentifier dans la liste des informations de l'application compagnon des projets iOS pour correspondre à la clé WKAppBundleIdentifer dans l'info.plist de l'extension du kit de surveillance. Je l'ai découvert lorsque j'ai copié un projet de kit de surveillance précédent et que j'ai modifié l'identificateur WKAppBundleIdentifier dans l'extension de kit de surveillance info.plist afin qu'il corresponde à l'identificateur de paquet présent dans le kit de surveillance info.plist. Vous devez aller dans le Finder, localiser le projet compagnon iOS info.plist, double-cliquer dessus, puis modifier la clé WKCompanionAppBundleIdentifer si nécessaire. Je n'ai pas pu voir cette clé en cherchant l'info.plist dans Xcode.

1
Nelson Capes

Ainsi, vous ne changez pas nécessairement quelque chose lorsque vous voulez simplement exécuter des tests. Mais vous devez demander deux profils de provisioning supplémentaires pour tester l'application Watch. Ces deux identifiants supplémentaires peuvent être acquis à partir d'une cible d'extension et d'une application surveillée. C'est également ce que vous devez faire lorsque vous souhaitez télécharger l'application Watch sur App Store

0
Lucas Huang