web-dev-qa-db-fra.com

100+ avertissements "Classe implémentée dans MapKit et VectorKit" avec Xcode 9.0.1 et supérieur

Lors de l'exécution de mon projet (qui n'utilise même pas MapKit), ma console est spammée avec plus d'une centaine d'avertissements en double de classe:

objc [6377]: la classe ___MKPlaceBusinessInfoItemAccessibility_super est implémentée dans les deux /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Resources/ Library/AccessibilityBundles/MapKit.axbundle/MapKit (0x12f128f00) et /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Contents Système/Bibliothèque/AccessibilityBundles/VectorKit.axbundle/VectorKit (0x12f2187b0). Un des deux sera utilisé. Lequel n'est pas défini.

Ces avertissements étaient absents avec Xcode 9.0.0 , je ne suis que expérience sur Xcode 9.0.1 et supérieur .

Je suis conscient qu'il s'agit d'un bug et j'ai trouvé un radar qui concerne ce problème. Existe-t-il un moyen de désactiver ces avertissements sans affecter la visibilité des autres avertissements du SDK?

44
Tamás Sengel

Il s'agit en fait d'un bogue dans le cadre iOS actuel et n'a rien à voir avec quoi que ce soit dans votre application, le cache de module, les bibliothèques, etc. La raison pour laquelle cela semble non déterministe est qu'il n'est là que lorsque la couche d'accessibilité est active, ce qui ce n'est pas sur le simulateur, sauf dans des circonstances très spécifiques. Les trois que je connais:

  • L'inspecteur d'accessibilité est activé
  • Test instrumenté de l'interface utilisateur
  • VoiceOver pour OSX est activé (d'autres AT également)

Pour que cela disparaisse, vous devez:

  • Quittez l'inspecteur d'accessibilité (s'il est activé)
  • Open Simulator
  • Matériel -> "Effacer tout le contenu et les paramètres"
  • Réexécutez l'application.
  • N'exécutez JAMAIS ce simulateur avec l'inspecteur d'accessibilité
  • Littéralement, NE JAMAIS exécuter de tests d'interface utilisateur sur ce simulateur, qui s'appuient également sur la couche d'accessibilité pour faire leur travail, bien que je ne pense pas que cela provoquera l'erreur de persister jusqu'à ce que vous "Effaciez tout ...." à nouveau, il juste être présent pour ce test.

Chaque fois que vous effectuez l'un de ces deux derniers points, vous devrez effacer à nouveau les données ...

Le problème principal est que MapKit et VectorKit sont tous deux liés aux bundles d'accessibilité de base, mais apparemment ne l'ont pas fait de manière dynamique, de sorte que ces bundles sont inclus dans les deux modules. De tels avertissements sont ignorés en toute sécurité, bien que très verbeux et frustrant.

Malheureusement, il n'y a pas d'autre solution pour cela ... vous pourriez peut-être télécharger une ancienne version du simulateur si vous n'avez pas besoin des fonctionnalités d'iOS 11. Ou tout simplement ne pas exécuter de tests instrumentés/Inspecteur d'accessibilité/VoiceOver/J'espère qu'ils corrigent bientôt!

27
ChrisCM

Vous avez le même problème sur 9.0.1.

  • Vous devez quitter Xcode et tous les simulateurs.
  • Courir rm -rf ~/Library/Developer/Xcode/DerivedData/ModuleCache.
  • Redémarrez Xcode.

Ce problème a été résolu pour moi.

9
Ilya Krigouzov

Je ne me soucie pas de l'accessibilité dans le simulateur, je viens de renommer l'un des fichiers en double pour qu'il ne soit pas trouvé:

mv /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/AccessibilityBundles/MapKit.axbundle/MapKit /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/AccessibilityBundles/MapKit.axbundle/MapKit_

lol

4
Nuthatch

La réinitialisation du simulateur iOS a résolu ce problème pour moi. Simulateur -> Matériel -> Effacer tout le contenu et les paramètres ...

2
Denis Kilin

Exactement le même problème, dans mon cas, j'ai essayé de supprimer tous les fichiers du dossier DerivedData, mais ne fonctionnait toujours pas.

Et plus tard, j'ai découvert que si je passais à un autre type de simulateur, par exemple, passer de "iPhone 8" à "iPhone 8 plus", l'avertissement disparaîtrait.

Donc, supprimez simplement le simulateur "iPhone 8" de la liste des simulateurs, puis ajoutez à nouveau le simulateur "iPhone 8", cela fonctionne.

Je ne sais pas si le problème va se reproduire, car c'est aussi ma troisième fois que je traite de cela.

1
ke jin

Comme vous pouvez le voir, il y a un problème avec CoreSimulator de /Applications/Xcode.app. Apple Xcode Developer a défini ce symbole à la fois dans MapKit et VectorKit, ce qui est l'erreur fondamentale.

Vous ne pouvez pas modifier Xcode, donc seul le personnel d'Apple peut le résoudre.

Juste arrêtez de perdre votre temps, sauf retombant sur Xcode 9.

1
DawnSong

Résolu!

-Sur simulateur --Matériel ---- Effacer tout le contenu et les paramètres -Fermez xcode et les simulateurs -Retirez le contenu de ~/Library/Developer/Xcode/DerivedData/ModuleCache -Start xcode ...

0
Miguel Esteves

Mon cas est un peu différent: j'ai rencontré ce problème lors de l'exécution de XCUITest. Après le lancement du processus XCUITest, l'application cible se bloque au lancement. Cependant, après avoir supprimé tous les proxys Web, ce problème est résolu!

0
Lumi