J'ai ajouté un cadre partagé pour partager du code entre une application et une extension de surveillance. Plus tard, j'ai supprimé le cadre partagé, car il causait beaucoup de problèmes. Je peux créer et exécuter mon application sur iPhone et regarder. Cependant, lorsque je soumets à App Store, je vois ces deux erreurs:
ERREUR ITMS-90205: "Lot non valide. Le paquet situé sur 'xxx WatchKit Extension.appex' contient des paquets imbriqués non autorisés."
ERREUR ITMS-90206: "Ensemble non valide. L'ensemble à" xxx WatchKit Extension.appex "contient un fichier non autorisé" Frameworks "."
J'ai essayé toutes les solutions mentionnées sur stackoverflow ( this , this , this ). Aucune d'entre elles ne fonctionne pour moi. Comment puis-je corriger l'erreur? Le message d'erreur d'Apple ne donne vraiment aucune idée de ce que je devrais faire.
Je ne comprends toujours pas ce qui cause le problème, mais je suis tombé sur une réponse qui a finalement résolu le problème pour moi.
https://github.com/CocoaPods/CocoaPods/issues/4203
Plus précisément, le message de Mikehouse du 12 octobre 2015 était la solution au problème.
Ajoutez le script d'exécution suivant à TOUTES vos cibles d'extension incorporées. Dans mon cas, j'ai dû ajouter le script d'exécution en tant que phase de construction à mon extension Today et à mon extension Apple Watch App.
cd "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/"
if [[ -d "Frameworks" ]]; then
rm -fr Frameworks
fi
L'erreur "ITMS-90206" a été résolue dans ce message: Erreur de validation: Bundle non valide. Le paquet à ... contient le fichier non autorisé 'Frameworks'
Le paramètre doit être modifié de Oui à Non dans les options de construction de votre extension WatchKit:
Embedded Content Contains Swift Code: No
Ce qui précède n'a pas fonctionné pour moi.
Embedded Content Contains Swift Code: NO
N'a vraiment rien fait pour moi.
J'ai rencontré ce problème en utilisant un cadre dynamique. Mon cadre dynamique contenait d'autres cadres dynamiques qui permettaient d'avoir:
Embedded Content Contains Swift Code: YES
Et au lieu que les autres cadres dynamiques définissent la valeur sur Non. Mais au lieu de cela je devais mettre
Always Embed Swift Standard Libraries: NO
sous phases de construction.
Le fait de régler celui-ci sur YES a généré le dossier frameworks
, ce qui a entraîné le téléchargement sur ITC.
J'avais un framework construit avec les paramètres de construction suivants:
Always Embed Swift Standard Libraries: YES
Allow Non-Modular includes in Framework Modules: YES
J'ai donc changé pour NO
et construire à nouveau le framework.
Always Embed Swift Standard Libraries: NO
Allow Non-Modular includes in Framework Modules: NO
J'ai ajouté une nouvelle version du framework à mon projet afin de le télécharger correctement sur iTunes Connect.