Note: Je développe sous Xamarin. Question similaire publiée dans Forum Xamarin ici
Je crée une application appelée, par exemple CompanyApp. Ensuite, j'ai créé un identifiant d'application pour ce fichier com.Company.CompanyApp, ainsi qu'un profil d'approvisionnement de distribution qui utilise l'identifiant d'application correspondant. J'ai téléchargé le fichier binaire et cela a fonctionné parfaitement bien.
Ensuite, je suis allé créer une version de démonstration de l'application (essentiellement la même application avec une petite modification, c'est donc la même solution et le même projet, avec juste un paramètre de signature de paquet différent), CompanyAppDemo avec un nouvel ID d'application com.Company. .CompanyAppDemo, avec un nouveau profil d'approvisionnement de distribution qui utilise le nouvel ID d'application. J'ai mis à jour les options de signature d'ensembles iOS pour utiliser le nouveau profil d'approvisionnement et généré l'IPA. Mais quand j'ai téléchargé ceci dans Application Loader, j'ai eu l'erreur suivante:
[2015-01-23 16:08:21 SGT] ERREUR: ERREUR ITMS-90164: "Code invalide Droits de signature. Les droits dans la signature de votre groupe d'applications ne correspondent pas à ceux contenus dans la configuration. profile . Selon le profil d'approvisionnement, le bundle contient une valeur de clé .__ non autorisée: "TEAMID.com.Company.CompanyApp" pour la clé "identifiant d'application" dans "Payload/CompanyApp .app/CompanyApp '"
[2015-01-23 16:08:21 SGT] ERREUR: ERREUR ITMS-90046: "Code non valide Droits de signature. La signature de votre groupe d'applications contient des droits de signature de code Qui ne sont pas pris en charge sur iOS. Plus précisément ,. La valeur __ 'TEAMID.com.Company.CompanyApp' pour la clé 'identificateur d'application' dans 'Payload/CompanyApp.app/CompanyApp' n'est pas prise en charge. Cette valeur doit être une chaîne commençant par votre TEAMID, suivi d'un point '.', suivi de l'identifiant du paquet. "
Cela fait des jours que je débogue pour comprendre en vain.
Je me demande pourquoi, lorsque j'ai signé avec le nouveau profil , L'erreur générée par Application Loader fait référence à l'ID de l'original TEAMID.com.Company.CompanyApp au lieu de TEAMID.com.Company.CompanyAppDemo? Est-ce un problème dans Xamarin qui détecte un mauvais profil d'approvisionnement ou est-ce que quelque chose me manque? Vous n'avez pas besoin d'un certificat différent pour une application différente, n'est-ce pas?
Notez que j'ai toujours actualisé la liste de profil de provisioning dans XCode> Préférences avant de modifier l'option de génération de signature iOS dans Xamarin.
Enfin après 2 semaines de tirage de cheveux ..
Pour certaines raisons, s'il n'y a pas de clé 'application-identifier' dans Entitlements.plist définie sur TEAMID.com.Company.CompanyAppDemo , Xamarin utilisera l'identifiant d'application d'origine, à savoir TEAMID.com. .Company.CompanyApp
La solution a donc été d'ajouter un identificateur d'application en spécifiant l'ID de regroupement d'applications correct dans Entitlements.plist. Ensuite, incluez le plist dans Options de construction> Signature de paquet iOS.
Si quelqu'un arrive ici en cherchant ERROR ITMS-90046 comme moi, ma solution consistait à le nettoyer, à supprimer tous les frameworks précompilés (ceux personnalisés), puis à reconstruire à nouveau.
Remarque: La description de l'erreur indiquait quelque chose à propos de la clé "environnement-aps" en tant que "développement".
J'ai eu le même problème et résolu avec un simple Produit -> Nettoyer .
Si quelqu'un arrive ici en recherchant à la fois les erreurs ITMS-90164 et ITMS-90046 avec les clés get-task-allow _ et environnement-asp:
Comme David P l'a dit, un Produit -> Nettoyer avant qu'une nouvelle archive ait résolu mon problème.
Je veux juste ajouter que dans mon cas, j'ai observé que le fichier suivant manquait à xarchive:
Avant d'envoyer ce fichier .xarchive à votre client pour la signature de production, vous souhaiterez peut-être rechercher le fichier archived-Expand-literlements.xcent et vous assurer qu'il est présent.
Même problème et résolu avec un simple Produit -> Nettoyer .
Cela peut également être dû au fait que vous devez accepter un nouveau contrat dans iTunes connect. Connectez-vous à iTunes Connect et vous devriez voir une bannière en haut vous invitant à accepter le dernier changement de contrat.
Changez ceci dans Entitlements.plist:
<key>aps-environment</key>
<string>development</string>
Pour ça:
<key>aps-environment</key>
<string>production</string>
Si vous ne sélectionnez pas le certificat de version correspondant avant d’emballer, ERROR ITMS-90164 sera signalé.
Paramètre de construction -> Identité de signature de code -> Libérer -> N'importe quel SDK IOS
Assurez-vous que vous avez sélectionné la cible de l'application et non l'application WatchKit lors de l'archivage.
Aucune des autres réponses n'a résolu cette erreur pour moi, mais ceci a eu les conséquences suivantes:
Créez une nouvelle application XCode et allez examiner ses paramètres de signature de code.
Essayez de configurer votre application de la même manière que les paramètres de signature et d’approvisionnement XCode 7 ou Xcode 8 par défaut. XCode 7 est affiché ici, il a été modifié à nouveau dans XCode 8.
Un projet comprenant 2 cibles (avec 2 ID développeur, 2 droits d'accès) peut conduire à ceci . (Ne me demandez pas comment c'est arrivé ...)
Lors de l'archivage, supprimez temporairement un autre fichier de droits.
J'avais essayé de télécharger une version d'une branche de git qui n'était pas le maître. Pour résoudre le problème, j'ai fusionné la branche dans le maître et créé à nouveau. J'ai ensuite pu télécharger la construction avec succès.
Je viens de renommer en droits.plist la valeur des domaines d'accès de applinks: htts: //domain.app.link à applinks: domain.app.link cela fonctionne comme un charme. À votre santé!
J'ai essayé tout ce qui est énuméré ici, mais le problème était dans mon fichier .entitlement
. Il y avait des lignes que je n'avais jamais insérées, mais elles ont été ajoutées d'une manière ou d'une autre.
Supprimé ces lignes et réessayé, travaillé.
Faire un Xcode approprié 'Quitter' puis redémarrer était la dernière action qui l'a fait fonctionner pour moi.
J'avais changé l'identifiant du paquet (pour une version de démonstration) et j'avais la même erreur (comme détaillé dans la question) lors de la vérification de ma construction archivée. J'utilise Xcode. Juste fermer Xcode et rouvrir mon projet ne suffisait pas, mais un «Quitter» complet l'était. Quelque chose a probablement été caché quelque part, je devine.
Après de nombreuses heures d'investigation, j'ai trouvé une solution facile.
Au lieu d'utiliser le chargeur d'application pour télécharger l'application, j'ai utilisé l'Organiseur à partir de XCode et cela fonctionnait sans aucun avertissement lors du téléchargement!
Mon problème est que j'utilisais un mauvais paquet pour créer un fichier IPA
Mes deux cents ici.
En ce moment, je suis coincé dans ce problème car, lorsque je copie mon ID TeamID/Application à partir du portail de développeurs Apple, ce qui apporte de nombreuses valeurs sans lien à celle-ci. Je ne l'avais pas remarqué parce que j'utilisais Xcode pour éditer le fichier allowlement.plist et que le champ de saisie n'affichera pas tout après le premier caractère de nouvelle ligne.
Je suggère d'utiliser un éditeur de texte en clair pour le droit right.plist dans ce cas.
Merci Samuel
Build Phase
dans XcodeHourra, vous en avez fini. Problème résolu
Pour moi, le fichier que je me suis trompé était défini dans le paramètre Droits personnalisés sous Signature de paquet iOS. Supprimé et cela a fonctionné!
Vous devriez vérifier vos droits. C'est comme un fichier plist. Modifiez-le en développement et supprimez les champs supplémentaires.
J'ai eu exactement le même problème et c'était une erreur assez stupide. Je ne veux pas que quelqu'un passe du temps là-dessus, alors pour celui-ci:
Donc, ce qui s’est passé ici, c’est que j’ai inscrit «10» dans la cible de déploiement. Cela aurait dû être 10.0 à la place. C’est ce qui a provoqué la tristement célèbre ERREUR ITMS-90164/90046: Droits de signature de code non valides pour moi!