49 votes

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

J'ai beaucoup de cadres dans mon application. Application fonctionne très bien dans adhoc/entreprise de presse. Seulement si je soumettre à l'app store pour testflight test, j'obtiens cette erreur e-mail d'apple:

Chers développeurs,

Nous avons découvert un ou plusieurs des problèmes avec votre dernière livraison de "Mon application nom ici". Pour le processus de livraison, les questions doivent être corrigées:

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

Une fois que ces problèmes ont été corrigés, vous pouvez ensuite remettre le corrigé binaire.

En ce qui concerne,

L'App Store de l'équipe

il n'y a pas d'information spécifique. Comment puis-je le corriger?

42voto

Obtenu une réponse d'Apple Developer Support Technique qui dit que c'est un bug d'Apple qui est à côté. c'est la solution de contournement proposée ci-dessous qui n'a pas fonctionné pour moi:

Pour diagnostiquer ce problème, vous devez exporter les IPA que vous envoyez à l' l'App Store à partir de Xcode. Depuis les Opi sont des fichiers zip, vous pouvez décompresser en cliquant droit et en disant Ouvrir Avec > Archive Utilitaire. Vous devriez trouver votre exécutable principal à l'intérieur de l'décompressé structure de dossier et exécutez otool à la ligne de commande pour voir à la bibliothèque liste: otool -L

La liste des chemins d'accès que vous obtenez devrait correspondre à ce que vous trouverez à l'intérieur de votre IPA. Tous vos bibliothèques devraient commencer avec @rpath. Un simple comparaison de tout dans cette liste avec le décompressé IPA dossiers doit révéler ce qui est manquant.

Une fois que vous savez ce qui est manquant, allez à votre Xcode phases de construction de l'installation. Il devrait y avoir une phase de construction, soit pour Copier des Fichiers ou de les Intégrer Les cadres qui comprend la bibliothèque manquante - vous devez seulement ajouter de la de la bibliothèque à la liste. Si vous ne voyez pas l'une de ces phases de construction, vous pouvez le recréer par l'ajout d'une nouvelle Copie de Fichiers de la phase de construction, le réglage de la Destination des Cadres, et l'ajout de la bibliothèque à la liste, s'assurer que le Code de Signer Sur la Copie est cochée.

Si vous ne trouvez pas quelque chose qui manque dans votre principale binaire, assurez-vous de effectuer la même recherche sur tout les autres fichiers binaires que vous pouvez avoir, comme pour un watchOS application ou d'une application iOS extension.

Si vous trouvez que tous les cadres sont dans cette phase de construction, veuillez jetez un oeil à l'Embedded Binaires section de votre application cible Page général, et laissez-moi savoir si vous voyez plusieurs niveaux de ../ suivant pour le binaire que vous avez trouvé est manquant.

S'il vous plaît laissez-moi savoir si cela fonctionne pour vous!

15voto

Martin Polak Points 678

J'ai rencontré le même problème lors du téléchargement d'une application avec la montre de soutien à l'app store.

J'ai été en mesure de le résoudre avec l'indice de la première réponse, à l'aide de otool -L d'analyser le binaire de l'iap ou xcarchive. Cependant, le problème n'était pas avec mes cadres (en @rpath) mais avec une swift lib. J'ai remarqué qu' libswiftWatchKit.dylib était manquant dans le dossier frameworks.

La solution qui a fonctionné pour moi était aussi simple que de fixer EMBEDDED_CONTENT_CONTAINS_SWIFT=YES dans les paramètres de construction de la montre de l'application (ou la montre d'application de l'extension, mais pas les deux). Après cela, toutes les mesures nécessaires swift bibliothèques ont été correctement copié à la montre le chemin de app dans l'archive et de la télécharger sur l'app store a été fonctionne correctement.

Apparemment, la montre fonctionne et téléchargement de passe si vous fournir le nécessaire swift uniquement les bibliothèques dans l'application principale du dossier.

14voto

Zaid Khan Points 15

Après l'ajout de la coutume Swift cadre de mon projet j'ai reçu ce courriel après avoir téléchargé l'application pour iTunes connect.

J'ai reçu ce courriel à partir de l'iTunes store,

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

La solution est simple pour ce problème,

Étape 1: assurez-vous que votre cadre Personnalisé est ajouté à Embarqués Binaires dans l' onglet Général de votre cible. enter image description here

Étape 2: Sous paramètres de construction,

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

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

Cela a résolu mon problème et j'ai été en mesure de télécharger des binaires à iTunes connect.

Ref

2voto

Dominic Points 250

Mon Problème: J'ai eu la même erreur avec embedded cadres.

  1. Le projet d'Application Personnalisés Cadre du projet
  2. À l'intérieur de la Coutume Cadre est un autre projet Personnalisé Cadre du projet

L'application construite pour le simulateur et aux appareils sans aucun problème, mais échec de la Pomme de test, de retour Invalide "Bundle".

J'ai inspecté le paquet comme Taha avait été annoncé par le Support technique et tout était présente et correcte!

Ma Solution: J'ai restructuré le projet de sorte que les deux personnalisées cadres assis côte à côte et on n'est plus intégré à l'intérieur de l'autre.

Cela ressemble à une Pomme de validation de problème puisque tout fonctionne très bien sur les appareils et le simulateur, mais le travail était simple.

2voto

William Jockusch Points 9000

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é»

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X