Question

J'essaie de télécharger une application sur l'iPhone App Store, mais je reçois ce message d'erreur d'iTunes Connect :

Le binaire que vous avez téléchargé n'était pas valide.La signature n'était pas valide ou elle n'était pas signée avec un certificat de soumission Apple.


Note:Les détails de la question d'origine ont été supprimés, car cette page est devenue un référentiel de toutes les informations sur les causes possibles de ce message d'erreur particulier.

Pour des informations générales sur la soumission d'applications iPhone sur l'App Store, voir Étapes pour télécharger une application iPhone sur l'AppStore.

Était-ce utile?

La solution

D'après mon expérience, Xcode est parfois confus quant au certificat de signature à utiliser.J'ai pris l'habitude de quitter et de redémarrer Xcode après toute modification des paramètres de signature de code (et d'effectuer une nouvelle version) pour contourner ce problème.

Autres conseils

Je voulais juste mentionner que j'ai moi aussi eu le problème avec Zip de la ligne de commande.Le problème réside dans la façon dont il gère les liens symboliques par défaut.En utilisant:

zip -y -r monapp.zip monapp.app

Résolu ce problème.

J'ai eu le même problème et je l'ai résolu de cette façon :

Les certificats de propriété ont été installés sur ma machine de développement et mobileprovision.embedded a été inclus dans l'archive de distribution.Après environ une heure de recherche sur Google et de fouilles, j'ai trouvé la source de l'erreur.Dans Xcode, j'avais copié la configuration de la version et créé une nouvelle configuration de distribution, puis modifié l'identité de signature de mon certificat de distribution.Cependant, même s'il a été mis à jour dans l'interface graphique, le fichier de projet n'a pas été mis à jour correctement.

Si vous rencontrez la même erreur, recherchez dans votre répertoire [ProjectName].xcodeproj le fichier project.pbxproj et ouvrez-le dans votre éditeur préféré.Recherchez la section Distribution.Mon cassé ressemblait à ça :

C384C90C0F9939FA00E76E41 /* Distribution */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
CODE_SIGN_ENTITLEMENTS = "";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]” = “iPhone Distribution: Edward McCreary”;
GCC_C_LANGUAGE_STANDARD = c99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
PREBINDING = NO;
“PROVISIONING_PROFILE[sdk=iphoneos*]” = “F00D3778-32B2-4550-9FCE-1A4090344400″;
SDKROOT = iphoneos2.2.1;
};
name = Distribution;
};
C384C90D0F9939FA00E76E41 /* Distribution */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CODE_SIGN_IDENTITY = “iPhone Developer: Edward McCreary”;
“CODE_SIGN_IDENTITY[sdk=iphoneos*]” = “iPhone Developer: Edward McCreary”;
COPY_PHASE_STRIP = YES;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = GenPass_Prefix.pch;
INFOPLIST_FILE = Info.plist;
PRODUCT_NAME = GenPass;
PROVISIONING_PROFILE = “DB12BCA7-FE72-42CA-9C2B-612F76619788″;
“PROVISIONING_PROFILE[sdk=iphoneos*]” = “DB12BCA7-FE72-42CA-9C2B-612F76619788″;
};
name = Distribution;
};

Vous pouvez voir que l’identité de signature et le profil d’approvisionnement sont incorrects dans la deuxième section.Modifiez-le pour qu'il corresponde à la première section, reconstruisez-le et vous devriez être prêt à partir.Le final ressemblait à ceci :

C384C90C0F9939FA00E76E41 /* Distribution */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
CODE_SIGN_ENTITLEMENTS = "";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]” = “iPhone Distribution: Edward McCreary”;
GCC_C_LANGUAGE_STANDARD = c99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
PREBINDING = NO;
“PROVISIONING_PROFILE[sdk=iphoneos*]” = “F00D3778-32B2-4550-9FCE-1A4090344400″;
SDKROOT = iphoneos2.2.1;
};
name = Distribution;
};
C384C90D0F9939FA00E76E41 /* Distribution */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CODE_SIGN_IDENTITY = “iPhone Distribution: Edward McCreary”;
“CODE_SIGN_IDENTITY[sdk=iphoneos*]” = “iPhone Distribution: Edward McCreary”;
COPY_PHASE_STRIP = YES;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = GenPass_Prefix.pch;
INFOPLIST_FILE = Info.plist;
PRODUCT_NAME = GenPass;
PROVISIONING_PROFILE = “F00D3778-32B2-4550-9FCE-1A4090344400″;
“PROVISIONING_PROFILE[sdk=iphoneos*]” = “F00D3778-32B2-4550-9FCE-1A4090344400″;
};
name = Distribution;
};

les guides ont changé pour protéger les innocents

Même problème, solution différente.

Dans mon cas, je compressais le fichier en utilisant zip -r myapp.zip myapp.appIl s'avère que la commande zip a foutu le paquet.Le compresser à partir du Finder l'a fait fonctionner.

J'ai eu le même problème et après avoir essayé plusieurs choses - j'ai supprimé les droits .plist des droits de signature de code (je l'ai simplement laissé vide) et tout s'est bien construit et a été téléchargé ENFIN.

Bonne chance à tous :-D

Autre point de données :pendant un moment, mon application a fonctionné.Maintenant, j'ai ajouté la prise en charge des achats intégrés, et tout à coup, cela échoue avec un problème de « signature binaire invalide/signature invalide ».Après un examen attentif, j'ai découvert que la valeur de l'identifiant d'application dans le fichier plist des droits était désactivée.

Cela est très probablement dû au fait que j'ai remplacé le profil d'approvisionnement d'un profil générique par un profil spécifique à l'application (obligatoire pour les achats intégrés).Mauvais identifiant d'application qualifié sous l'ancien profil.Il ne correspondait pas à l'ID de l'application dans info.plist, mais apparemment, iTunes l'a pardonné.

Alors pour récapituler :

info.plist: com.mydomain.foo
dist.plist: com.mydomain.bar
Profile: com.mydomain.*

est OK, tandis que

info.plist: com.mydomain.foo
dist.plist: com.mydomain.bar
Profile: com.mydomain.foo

provoque "Binaire invalide".

J'ai également eu le même problème, lors de la construction, j'ai remarqué que le provisionnement n'était pas ajouté dans la construction.

Le correctif pour moi était de définir la version sur l'appareil iPhone comme là où j'utilise normalement le simulateur, mais il n'inclura pas le profil d'approvisionnement...

Cela pourrait être une erreur de noob.Normalement, vous ne pouvez pas créer sur un appareil, mais lorsque vous le faites pour la distribution, vous le pouvez.

Eh bien, après avoir répété les étapes plusieurs fois, j'ai finalement réussi à télécharger mon application.

Je ne sais pas exactement ce qui a résolu le problème, mais avant la tentative réussie, j'ai fermé Xcode et Firefox et les ai redémarrés.Je suppose qu'une de ces applications contenait un mauvais juju.

Voici un problème que j'ai rencontré :J'ai ajouté le binaire à Subversion avant de le télécharger.La comparaison/compression du binaire incluait ensuite les répertoires .svn cachés, ce qui gâchait la signature du code.

J'ai essayé diverses choses après avoir lu divers articles, dont ceux ci-dessus.Ce qui a finalement fonctionné pour moi, c'est de recommencer complètement !J'ai supprimé tous les certificats et profils d'approvisionnement associés à mon application.

J'ai recréé un nouveau certificat de développement et un nouveau certificat de distribution.J'ai à nouveau téléchargé le certificat intermédiaire.Ensuite, j'ai recréé à la fois le profil de développement et le profil de distribution.

Après avoir installé les trois certificats (j'ai remarqué que la distribution avait cette fois des clés privées et publiques) et les deux profils d'approvisionnement (mon profil de distribution n'a pas été signalé comme n'ayant pas de certificat valide !), tout a fonctionné.

Une fois que j'ai pris la décision de tout révoquer et de recommencer, il n'a fallu que 5 minutes environ pour créer les nouveaux éléments et les réinstaller.

Voir ce lien pour la solution:

http://greghaygood.com/2010/09/04/invalid-binary-message-from-itunesconnect

La réponse courte est que "Finalement, j'ai revérifié mon info.plist et découvert quelque chose.J'ai ajouté CFBundleIconFiles conformément aux nouvelles directives, mais il y avait une entrée vide dans la liste des tableaux.Je l'ai supprimé et soumis à nouveau, et il a finalement été accepté !"

J'ai eu un problème similaire mais dans Monotouch.J'ai découvert que mon profil Release était configuré pour utiliser les certificats de développeur.Ça devrait ressembler à ça:enter image description here

Il semble que ce problème ait plusieurs causes.Voici la solution à la mienne :

Cela s'applique à toute personne appartenant à plusieurs équipes de développement (par ex.vos propres applications et vos entreprises).

Si vous créez la version avec un ensemble d'informations d'identification et que vous la signez à nouveau avec un autre (par ex.pour une distribution adhoc/appstore), vous devez assurez-vous que la version a été initialement créée et signée avec des informations d'identification appartenant à la même équipe de développement iOS à laquelle appartiennent les informations d'identification de distribution avec lesquelles vous vous re-signez.

Ne construisez donc pas avec les informations d'identification "Indy Dev Inc", puis essayez de déployer avec les informations d'identification "Company Inc".Assurez-vous de configurer à la fois les informations d'identification de développement et de distribution de « Company Inc », et de les utiliser.

J'ai posté plus d'informations à ce sujet sur mon blog : http://omegadelta.net/2011/06/09/fiendish-ios-code-signing-invalid-binary-issue/

J'ai eu le même problème.J'étais prêt à jeter l'éponge sur ce problème, mais je l'ai compris lorsque je suis allé vérifier mon code à l'aide de Murky.Je survole toujours les différences sur les fichiers qui ont changé avant de m'enregistrer.Ce faisant, cette fois, j'ai remarqué que le fichier project.pbxproj avait changé... et dans la section Distribution, l'entrée « PROVISIONING_PROFILE[sdk=iphoneos*] » était vide.

Quitter et redémarrer Xcode n'a pas fonctionné pour moi.Au lieu de cela, je suis allé dans les paramètres de mon projet et de ma cible et j'ai modifié la signature du code pour sélectionner directement mon profil de distribution plutôt que de m'appuyer sur la fonction de sélection automatique.Cela a provoqué le remplissage du fichier project.pbxproj avec les valeurs correctes même si la fonction de sélection automatique était censée avoir sélectionné exactement le même profil que celui que j'avais sélectionné manuellement.

J'ai besoin d'une bière...

Après avoir essayé tous les autres correctifs répertoriés ici, nous avons enregistré un TSI avec Apple.Après avoir suivi toutes les étapes Note technique TN2250 notre problème était dû au fait qu'une ressource scellée était manquante ou invalide.Dans notre cas, c'était ._.DS_Store.

Le ".." est appelé un fichier Apple Double et est le résultat de la copie du dossier du projet Xcode, *décompressé*, vers et à partir d'un système de fichiers qui ne prend pas correctement en charge les « fourches de ressources » de HFS+ (utilisées pour les signatures de code).Ces extras".. » résultent et provoquent un échec de vérification de la signature du code.

Pour nettoyer les fichiers Apple Double problématiques de votre dossier de projet Xcode, exécutez la commande dot_clean sur le dossier de votre projet Xcode, effectuez une nouvelle construction, puis réarchivez et réessayez votre soumission.

dot_clean /the/path/to/xcode/project

Note:Vous pouvez simplement faire glisser le dossier du projet dans le terminal pour renseigner automatiquement le chemin

Il n'y a aucun message lorsque vous exécutez la commande, mais la construction du projet peut afficher un avertissement concernant le fichier lors de la prochaine construction.Vous pouvez l'ignorer, l'application validera et soumettra avec succès.

Problème résolu en nettoyant le fichier myProject.xcodeproj (clic droit, ouvrir le package), le package contenait des fichiers du co-développeur, après les avoir supprimés, le problème a été résolu

Pour moi, la solution consistait à créer une certification de distribution chez :Portail de provisionnement des développeurs Apple.

Pour ce que ça vaut, je veux ajouter ce qui a résolu ce problème pour moi.J'ai eu un ?(point d'interrogation) dans le titre de mon application à l'origine de l'erreur.

J'ai reçu un binaire invalide, si l'application n'utilise pas la notification push à distance, mais j'ai laissé le code pour l'enregistrement push et les délégués de rappel pour l'enregistrement/la réception de notification à distance sans commentaire, même si le code n'est pas utilisé.

C'est récent.Ma dernière soumission la semaine dernière était bonne.Cette semaine, il renvoie un binaire invalide.Heureusement, il existe un e-mail expliquant l'erreur.

J'avais un problème similaire, mais je n'utilise pas entitlements.plist.Cependant, après une douzaine de téléchargements échoués, j'ai vérifié mon info.plist et découvert quelque chose.Mon tableau CFBundleIconFiles avait une entrée vide.Je l'ai supprimé et soumis à nouveau, et il a finalement été accepté !

Sérieusement, serait-il difficile pour Apple d’exposer ce genre d’erreurs de validation ?

Modifier:Il n'est pas immédiatement évident où se trouvent les CFBundleIconFiles car ils utilisent un nom différent.Dans la vue des informations sur le projet, cliquez sur Ctl et sélectionnez "Afficher les clés/valeurs brutes", puis vous verrez les références à CFBundleWhatever.Dans le cas de cet éditeur, il essayait d'utiliser un fichier icon=72-@2x.png inexistant.

Mes deux centimes:

Téléchargez la dernière version d'Application Loader.Je viens de mettre à jour et je reçois maintenant un message d'erreur différent.

Je viens de vivre (encore) ce tracas mais cette fois j'ai constaté que mon profil de distribution avait le statut "Invalide".Si vous pensez que tout le reste est correct, revérifiez l'état sur le portail et renouvelez/retéléchargez tout ce qui n'est pas à l'état Actif.

J'ai reçu un fichier binaire invalide après le téléchargement d'une application, sans aucun e-mail expliquant pourquoi il a échoué.J'ai essayé de faire plusieurs choses à la fois, et je ne sais pas laquelle des solutions suivantes a réellement résolu le problème :

  1. Macbook Pro redémarré
  2. J'ai déplacé le code source de mon projet d'un lecteur NTFS vers un lecteur HFS+ et recompilé.

J'ai eu un problème avec ceci et le SDK GM 4.3.L'une de nos applications ne parviendrait pas à passer le téléchargement reçu.Il s'est avéré qu'il s'agissait d'un problème de profil d'approvisionnement.J'ai régénéré le profil de l'App Store et cela a bien fonctionné.

Ma solution impliquait la création d'un nouvel identifiant d'application.Je ne sais pas exactement pourquoi cela a résolu le problème, mais je soupçonne qu'il s'agissait peut-être d'identifiants de bundle incompatibles : la création du nouvel identifiant d'application m'a obligé à m'assurer que mon application et iTunes attendaient la même chose.

Une autre solution:

Pour moi, le simple fait de définir les certificats « Release » sous « Signature de code » a résolu le problème.Ils étaient initialement définis sur « Ne pas coder le signe ».

Pour moi, le problème a été résolu en réenregistrant une image PNG avec l'option non entrelacée.Dans les versions précédentes, les png entrelacés étaient autorisés, mais sachez que les images peuvent provoquer un binaire invalide.

Mon message pomme :Fichier d'icône corrompu - Le fichier d'icône iconGQ@2x.png semble être corrompu.Votre icône ne doit pas être un fichier PNG entrelacé.

Vous pouvez voir si le PNG est entrelacé en utilisant la commande "file" dans le terminal :EVA-Madrazos-MacBook-Pro-2: GQ 7 Integracion Ads Eva $ File * .png Default.png:Données d'image PNG, 320 x 480, RVB 8 bits/couleur, non entrelacées

Bonne chance, Eva

Je tiens à souligner la possibilité d'envoyer un e-mail à Apple et de leur demander de vérifier leurs journaux.C’est exactement ce que j’ai fait, après avoir essayé plein de choses au préalable.Il a fallu le leur rappeler au bout de presque quatre semaines, mais ils ont finalement répondu et indiqué l'endroit exact du problème.

Le problème dans mon cas était que j'avais déjà essayé d'autres icônes d'application et qu'une référence à l'ancienne image restait toujours dans « CFBundleIcons ».J'ai utilisé la fonctionnalité glisser-déposer pour définir l'icône, mais je n'ai pas remarqué que l'ancien contenu n'était pas complètement effacé avant l'ajout de la nouvelle référence.

Pour voir la référence défectueuse, il était nécessaire de développer les flèches pour afficher chaque sous-élément du fichier plist.Un conseil consiste à cliquer avec le bouton droit sur le fichier et à sélectionner l’option permettant d’afficher le contenu brut.De cette façon, vous n’aurez pas besoin de développer quoi que ce soit.

J'ai essayé toutes les autres solutions proposées, mais rien n'y fait.

J'ai fini par créer un nouveau projet Xcode et copiez-y tout mon code et mes ressources.Cela a fait l'affaire et mon application a été placée dans la file d'attente de révision.

Je peux également recommander Notes techniques d'Apple sur la signature de code pour le débogage/vérification.

uuid n'est pas autorisé.Je l'ai corrigé en supprimant tous les [[UIDevice currentDevice] uniqueIdentifier];

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top