2011-03-03 3 views
1

J'essaye de créer une compilation pour un petit groupe de testeurs non développeurs afin de faire des tests bêta sur mon application avant de la soumettre à iTunes Connect . J'ai lu le Guide du développeur sur "Distributing Your App for Testing (vous devrez peut-être être enregistré avec Apple pour lire ceci) ainsi que Technical Note TN2250 on Ad Hoc distribution, et d'innombrables articles de blog et Stack Overflow, mais sans succès jusqu'à présent.L'application XXX n'a ​​pas été installée ... car les droits ne sont pas valides

étapes que j'ai pris:

  • (je suis en cours d'exécution Xcode 3.2.5.)
  • J'ai créé un développement Provisioning profil dans le portail iOS Provisioning et inclus le appareils pour tous les testeurs.
  • J'ai téléchargé ce profil et installé dans Xcode en faisant glisser vers la fenêtre Organisateur, et je peux voir le profil sous développement> Profils d'approvisionnement
  • J'ai mis ce profil comme le « Code identité signature> tout iOS « à la fois le projet et les paramètres cibles
  • J'ai créé un fichier Entitlements.plist , définissez le type de liste de propriétés à « iPhone plist Entitlements », supprimé toutes les lignes sauf la » Peut-être débogué ", et régler cela à sans contrôle
  • J'ai mis le "Code Signing " à Entitlements.plist Entitlements (exactement, nom sensible à la casse) dans les deux les paramètres du projet et cible
  • J'ai "Build and Archive" 'd mon projet
  • Dans la fenêtre Organisateur, j'ai choisi mon projet & cliqué « Partager ... », a choisi le même profil de provisionnement utilisé ci-dessus et a sauvé la .ipa résultant sur le disque
  • J'ai compressé le .ipa et le profil de provisionnement à un fichier zip et envoyé par courrier électronique à mes testeurs

Les testeurs ont:

  • dézippé le fichier envoyé
  • essayé d'installer simplement en faisant glisser le .ipa à iTunes et la synchronisation
  • essayé d'installer d'abord glisser le .mobileprofile à iTunes et synchronisation

Dans les deux cas, à la fin de la synchronisation, ils obtiennent la lecture de dialogue « L'application [mon nom de l'application] n'a pas été installé sur le [leur appareil et le nom dispositif] parce que les droits ne sont pas valides. »

Il est peut-être intéressant de noter que j'ai pu distribuer une version antérieure de cette même application aux mêmes testeurs l'automne dernier sans aucun problème et sans liste de droits. Je ne suis pas sûr de ce qui a changé, mis à part la mise à niveau de Xcode.Est-ce que quelqu'un peut fournir un aperçu ou voir ce que je fais mal?

[J'ai également posté cela sur les forums d'Apple Developer et re-post des solutions ici.]

Répondre

1

Le fichier * .ipa doit contenir déjà le profil d'approvisionnement. Vous pouvez le voir facilement depuis une machine Windows si vous utilisez un utilitaire zip. Le fichier est juste une archive zip avec une extension différente.

Les appareils sont-ils sur la bonne version d'iOS pour l'application?

Sur les périphériques de Setting > General > Profiles, vous pouvez voir une liste de tous les profils de provisionnement installés pour éliminer ce problème. Vous obtenez plusieurs copies avec chaque nouveau certificat créé lorsque vous ajoutez de nouveaux périphériques. Cela ne fait pas de mal de supprimer tous les profils et de vérifier que votre dernier est ajouté. Lorsque vous faites votre build, dans le Build Results cliquez droit et sélectionnez Open These Latest Results as Transcript Text File puis recherchez CodeSign qui vous montrera la sortie pour cette étape et vous devriez voir clairement quel profil a été utilisé. Vous pouvez également rechercher Entitlements.plist vérifier le chemin utilisé et ensuite regarder ce fichier.

Vous dites que vous avez supprimé toutes les lignes. Je n'ai pas d'entrée Can be debugged mais j'ai effectivement application-identifier et keychain-access-group qui ont l'air de signer du code. Voici la version en texte brut du fichier que vous pourriez essayer;

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <!--- Required entitlements (in most cases shouldn't be changed) ---> 
    <key>application-identifier</key> 
    <string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string> 
    <key>keychain-access-groups</key> 
    <array> 
     <string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string> 
    </array> 

    <!--- Custom entitlements below ---> 


</dict> 
</plist> 

Si l'un de ces éléments semble incorrect, voici les étapes suggérées par Apple pour préparer une version de distribution;

  1. Sélectionnez la cible et ouvrez l'inspecteur des paramètres de construction. Confirmez que vous êtes dans la configuration de distribution.
  2. Supprimer l'identité de signature de code: iOS Distribution: COMPANYNAME
  3. Dans le menu Générer Xcode, sélectionnez Nettoyer toutes les cibles.
  4. Supprimez tous les répertoires de construction existants dans votre projet Xcode à l'aide du Finder.
  5. Relancez Xcode et ouvrez votre projet.
  6. Entrez de nouveau l'identité de signature de code iOS Distribution: COMPANYNAME dans l'inspecteur Target Build Settings.
  7. Reconstruisez votre projet.

Espérons qu'une partie de cette aide ou étincelle un ah-ha! moment.

+0

Bonne réponse. Merci pour la perspicacité et les conseils. Finalement, il semble que la dernière section (sur la façon de faire une construction _really_ clean) a fait l'affaire. Bien que, basé sur vos autres notes sur les droits, j'ai effectivement supprimé tous les trucs de droits de mon projet. J'avais trouvé d'autres blogs qui parlaient de l'importance du droit "get-task-allow" (maintenant appelé "Peut être débogué" dans XCode apparemment) mais les docs actuels ne le mentionnent pas. Apparemment, ce n'est pas nécessaire maintenant. (Au moins c'est mon expérience actuelle.) – AndrewCr

0
  1. Accéder au site du développeur et connectez-vous
  2. Sous la rubrique « Profils d'approvisionnement », sélectionnez « __gVirt_NP_NN_NNPS<__ développement. "
  3. Ouvrez votre profil d'approvisionnement en double-cliquant dessus.
  4. Vous verrez "App ID: somenameyouwrote(com.somenameyouwrote)"
  5. Ecrivez exactement ce qui se trouve entre les parenthèses, c'est-à-dire"com.somenameyouwrote"
  6. Dans XCode, ouvrez le fichier .plist.
  7. Sous Type "bundle identifier:" tout ce que vous écrivez à l'étape 5.
  8. Dans XCode Hit la flèche par "Targets" et double cliquez sur la cible qui portera le nom de votre ap.
  9. Dans la fenêtre d'informations sur la cible qui s'ouvre, assurez-vous que "Build" est sélectionné. Ouvrez le "Code Signing Identity" et, en dessous, sélectionnez "Any iOS".
  10. À droite de "Any iOS", sélectionnez le profil répertorié dont l'identificateur Ap correspond à celui que vous avez écrit dans le plist.
  11. BAM! Frustration terminée!
Questions connexes