web-dev-qa-db-fra.com

Comment déboguer l'erreur "Invalid Bundle" qui ne se produit qu'après l'envoi à l'App Store

J'ai beaucoup de frameworks dans mon application. L'application fonctionne bien dans la version adhoc/entreprise. Ce n'est que si je soumets à l'App Store pour des tests en vol que j'obtiens cet e-mail d'erreur d'Apple:

Cher développeur,

Nous avons découvert un ou plusieurs problèmes avec votre livraison récente pour "Nom de mon application ici". Pour traiter votre livraison, les problèmes suivants doivent être corrigés:

Bundle non valide - Une ou plusieurs bibliothèques dynamiques référencées par votre application ne sont pas présentes dans le chemin de recherche dylib.

Une fois ces problèmes corrigés, vous pouvez alors redistribuer le binaire corrigé.

Cordialement,

L'équipe App Store

il n'y a pas d'informations spécifiques ici. Comment puis-je le déboguer?

31
Taha Selim Bebek

J'ai obtenu une réponse de Apple Support technique développeur qui dit que c'est un bug du côté d'Apple. Voici la solution de contournement suggérée ci-dessous qui n'a pas fonctionné pour moi:

Pour diagnostiquer ce problème, vous devez exporter l'IPA que vous envoyez à l'App Store depuis Xcode. Étant donné que les IPA sont des fichiers Zip, vous pouvez les décompresser en cliquant avec le bouton droit et en disant Ouvrir avec> Utilitaire d'archivage. Vous devriez trouver votre exécutable principal dans la structure du dossier décompressé et exécuter otool sur la ligne de commande pour voir la liste des bibliothèques: otool -L

La liste des chemins que vous obtenez doit correspondre à ce que vous trouvez à l'intérieur de votre IPA. Toutes vos bibliothèques devraient commencer par @rpath. Une simple comparaison de tout dans cette liste avec les dossiers IPA décompressés devrait révéler ce qui manque.

Une fois que vous savez ce qui manque, passez à la configuration des phases de construction de Xcode. Il devrait y avoir une phase de construction pour copier des fichiers ou incorporer des cadres qui inclut la bibliothèque manquante - vous devez simplement ajouter la bibliothèque à la liste. Si vous ne voyez aucune de ces phases de génération, vous pouvez la recréer en ajoutant une nouvelle phase de génération de fichiers de copie, en définissant la destination sur Frameworks et en ajoutant la bibliothèque à la liste, en vous assurant que la copie de connexion du code est cochée.

Si vous ne trouvez rien manquant dans votre binaire principal, assurez-vous de faire la même recherche sur tous les autres fichiers binaires que vous pourriez avoir, comme pour une application watchOS ou une extension d'application iOS.

Si vous trouvez que tous les frameworks sont dans cette phase de construction, veuillez jeter un œil à la section Binaires intégrés de la page générale de votre cible d'application, et faites-moi savoir si vous voyez plusieurs niveaux de ../ à côté du binaire que vous avez trouvé est manquant.

Veuillez me faire savoir si cela fonctionne pour vous!

31
Taha Selim Bebek

J'ai rencontré le même problème lors du téléchargement d'une application avec prise en charge de la montre sur l'App Store.

J'ai pu le résoudre avec l'indice de la première réponse, en utilisant otool -L pour analyser le binaire de l'ipa ou xcarchive. Cependant, le problème n'était pas avec mes frameworks (à @rpath) mais avec une bibliothèque Swift. J'ai remarqué que libswiftWatchKit.dylib était manquant dans le dossier des frameworks.

La solution qui a fonctionné pour moi était aussi simple que de définir EMBEDDED_CONTENT_CONTAINS_Swift=YES dans les paramètres de génération de l'application de surveillance (ou de l'extension de l'application de surveillance, mais pas les deux). Après cela, toutes les bibliothèques nécessaires Swift ont été correctement copiées dans le chemin de l'application de surveillance dans l'archive et le téléchargement sur l'App Store fonctionnait correctement.

Apparemment, l'application de surveillance fonctionne et le téléchargement passe si vous fournissez les bibliothèques Swift uniquement dans le dossier de l'application principale).

12
Martin Polak

Après avoir ajouté le cadre Swift personnalisé à mon projet, j'ai reçu cet e-mail après avoir téléchargé l'application sur iTunes connect .

J'ai reçu cet e-mail de iTunes Store ,

Bundle non valide - Une ou plusieurs bibliothèques dynamiques référencées par votre application ne sont pas présentes dans le chemin de recherche dylib.

La solution est simple pour ce problème,

Étape 1: Assurez-vous que votre framework personnalisé est ajouté à Binaires intégrés dans l'onglet Général de votre cible. enter image description here

Étape 2: Sous les paramètres de construction,

Ensemble Always Embed Swift Standard Libraries = Yes pour votre cible du projet principal .

Et mettre Always Embed Swift Standard Libraries = No pour votre cible de cadre personnalisé .

Cela a résolu mon problème et j'ai pu télécharger des fichiers binaires sur iTunes connect .

Réf

11
Zaid Pathan

J'ai essayé toutes les solutions ci-dessus et n'a pas fonctionné pour moi.

Je rencontrais récemment ce problème dans Xcode 10.1 et tous mes frameworks étaient référencés correctement (a fait otool -L et tout était aligné).

Il semble qu'il y ait eu quelques changements dans le processus de validation Apple, peut être un bogue, peut-être pas du côté d'Apple, mais toutes mes versions précédentes ont été téléchargées et validées correctement - et je n'ai ajouté aucune nouvelle cadres depuis.

Lors du téléchargement du binaire sur iTunesConnect, je verrais l'erreur suivante:

Bundle non valide - Une ou plusieurs bibliothèques dynamiques référencées par votre application ne sont pas présentes dans le chemin de recherche dylib.

Bundle non valide - L'application utilise Swift, mais l'un des fichiers binaires n'a pas pu s'y lier car il n'a pas été trouvé. Vérifiez que les bundles d'application intègrent correctement Swift bibliothèques standard en utilisant le paramètre de construction "Always Embed Swift Standard Libraries") et que chaque binaire qui utilise Swift possède des chemins de recherche corrects vers les bibliothèques standard intégrées Swift utilisant le paramètre de construction "Runpath Search Paths").

MA SOLUTION:

  • Après des jours de débogage, ce qui a fonctionné pour moi a été de désactiver 'Inclure le code bit pour le contenu iOS' lors du téléchargement de l'archive depuis l'organisateur Xcode. Semble que cette option modifie le binaire qui a provoqué l'échec du validateur.

enter image description here

  • Ou vous pouvez désactiver le bitcode dans vos paramètres de construction
3
Alex Nguyen

Mon problème: j'ai eu la même erreur avec les frameworks embarqués.

  1. Le projet d'application a un projet de cadre personnalisé
  2. Dans le projet Custom Framework se trouve un autre projet Custom Framework

L'application a été intégrée au simulateur et aux appareils sans problème, mais a échoué au test Apple, retournant "Invalid Bundle").

J'ai inspecté le paquet comme Taha l'avait demandé au support technique et tout était présent et correct!

Ma solution: j'ai restructuré le projet pour que les deux frameworks personnalisés soient côte à côte et que l'un ne soit plus intégré dans l'autre.

Cela semble être un problème de validation Apple Apple, car tout fonctionne correctement sur les appareils et le simulateur, mais le travail a été simple.

2
Dominic

Dans mon cas, dans les paramètres de build, cela a été corrigé lorsque j'ai ajouté ce qui suit aux paramètres de build de la bibliothèque:

 DYLIB_INSTALL_NAME_BASE = @rpath

L'indice était un avertissement de l'éditeur de liens: "YourLibrary a un nom d'installation commençant par"/", mais il ne provient pas du SDK spécifié"

2
William Jockusch

J'ai eu le même problème, cela était dû à un cadre non présent dans le sous-dossier Frameworks du bundle d'application.

Je l'ai corrigé en ajoutant une phase de construction de Copy Fields et en y ajoutant le fichier .framework manquant.

1
Macondo2Seattle

Ce message d'erreur est également résolu dans Apple Note technique TN2435 incorporant des cadres dans une application: https://developer.Apple.com/library/archive/technotes/tn2435/_index. html

Vous pouvez trouver le message d'erreur sous le titre "Bundle Framework manquant" avec les étapes de dépannage.

1
jverdi

Nous avons eu le même problème, et même après avoir traversé toutes les étapes (voir "Bundle Framework manquant"), la seule chose qui a fonctionné a été de désactiver Bitcode .

0
kgaidis

Eu le même problème. Cela m'est arrivé car une de mes cibles Framework a été ajoutée à la cible principale dans "Lier le binaire aux bibliothèques" mais n'a pas été ajoutée aux "Dépendances cibles" et "Binaires intégrés"

0
sergiy batsevych

J'ai donc lutté pendant deux jours. Ce qui s'est avéré être que j'ai fait vérifier UITests dans Archive pour le Build pour le schéma que j'archivais.

Après l'avoir décochée d'Archive, la ré-archiver, la valider (même si elle était validée avant toujours), et "Télécharger sur l'AppStore", je n'ai pas reçu l'e-mail de Apple m'informant de Invalid Swift Support. Au lieu de cela, j'ai reçu l'e-mail selon lequel il avait été traité et c'est prêt!

0
Brandon Thomas