Comment puis-je produire une Version d'iOS Construire que mon client peut signer sur leur fin?
Mon scénario
J'ai écrit une application iOS pour un client. Le projet est presque terminé, et maintenant il est temps pour eux de le mettre dans l'App Store. J'ai été l'envoi de leur développement s'appuie tout au long du processus de développement. Ces versions avaient un bundle id en fonction de ma société et de mon projet du client comme suit: com.mycompany.clientname.projectname
. J'ai signé ces Ad Hoc construit avec une Distribution Ad Hoc Profil de configuration que j'ai créé dans mon propre approvisionnement compte sur le Portail.
Maintenant qu'il est temps d'aller à l'App Store, j'ai besoin de faire un Communiqué de Construire et l'envoyer pour qu'ils signent avec leur propre App Store Profil d'approvisionnement de Distribution. Cela implique également la définition d'un nouveau Bundle ID pour le projet.
Mon problème
- Je besoin d'une application compilée pour le client à signer avec leur profil de configuration. Cependant, j'ai besoin de l'ID de ce qu'ils vont utiliser en premier. Disons que c'est com.bestclientever.appname
. Xcode 4 ne me permet pas d'archiver le projet maintenant, parce que cela requiert de la part de signature de code. Je ne peux pas le code de la signer, parce que je ne peux pas créer un profil de configuration avec le même ID que ce qu'ils ont mis en place dans leurs Provisioning Portal (le Provisioning Portal applique l'unicité, comme il se doit).
J'ai fait toutes les hypothèses incorrectes ou des malentendus ici? c'est à dire. Dois-je vraiment pour définir l'ID de ce qu'ils vont signer avec?
La Question
Est-il un moyen pour archiver, ou au contraire de construire, une application iOS sans la signature de code il? Comme un "signe plus tard" réglage ou quelque chose?
Ou, est-il un moyen de construire l'application avec un id de lot mais alors quelqu'un d'autre sera en mesure de signer avec un profil de configuration pour une autre id de l'offre (soit en changeant l'id de l'application compilée ou une autre signature de la méthode)?
Comment puis-je construire la version finale de la construire, mais avoir quelqu'un d'autre de se connecter à l'application pour la distribution de l'App Store?
Ce que j'ai essayé ou exploré
- Agissant pour le client.
- Avec d'autres, moins savvy clients, j'ai fini juste à l'obtention de leur Provisioning Portal et iTunesConnect informations d'identification et juste de faire la finale construire comme eux. Qui ne volent pas avec ce client. C'est une grande entreprise avec de strictes consignes de sécurité et beaucoup de paperasse.
- Mystification que le client.
- Ceci est similaire à celui ci-dessus et ne fonctionnera pas pour les mêmes raisons. Il semble vraiment louche de demander à mon client ", pouvez-vous exporter votre privé clés et de les envoyer à moi"? Cette technique est décrite dans cette réponse: Comment puis-je envoyer de l'application iOS pour le client, pour eux de code-signature
- L'envoi au client de mon projet de code source et de le laisser faire la version release.
- Une licence pour le code source n'est pas notre accord. En outre, ce client n'a pas souhaité s'impliquer avec le code source (d'où le recours à l'externalisation). Je souhaite cela comme une solution de dernier recours, mais il doit bien y avoir une meilleure façon!
- Se mettre en place comme un Administrateur de niveau développeur dans leur Développeur Membre du Centre.
- Malheureusement, seul l'Agent de niveau utilisateur peut créer un Profil de configuration (pour autant que je puisse dire). Il semble que il doit y avoir un moyen de soit permettez-moi de créer un profil que je peux utiliser pour signer les construire ou de générer un profil pour moi. Je ne peux pas trouver une ou l'autre option.
- Hey Rick, nous sommes confrontés exactement cette énigme. J'ai envoyé une demande à Apple (y compris un lien vers cette question, car il le décrit parfaitement notre situation!). Qu'avez-vous de faire?
- Encore déconner avec envoyer clés autour de la via e-mail (grincer des dents). Davantage de recherche est sur mon pré-WWDC liste de choses à faire!
- J'ai enfin entendu le dos d'Apple. C'est ce qu'ils recommandent: developer.apple.com/library/ios/#qa/qa1763/_index.html
Vous devez vous connecter pour publier un commentaire.
La plupart de ces réponses semblent compliquées et désuètes. Je pense que la réponse la plus simple est de faire une archive avec un profil de Développeur.
C'est une solution que je suis actuellement en train d'étudier pour mes propres fins (pas entièrement testé):
Vous avez juste besoin d'un accès développeur (pas l'équipe de l'agent) à leur compte et de créer un profil d'approvisionnement de Développement qui vous autorise à construire le spécifiée ID d'Application (vous devez spécifier l'ID de l'Application, car il est compilé dans). Puis Archive de l'application avec le profil de Développement, et de partager l'archive avec votre client. Ils peuvent ensuite re-signer l'archive avec leur propre profil de Distribution.
Une complication est que lorsque vous créez une archive avec un profil de développeur, le droit de l'attribut get-tâche-pour autoriser est défini à true, mais doit être défini sur false pour la distribution, de sorte que vous avez à contourner ce problème en définissant manuellement vos Droits.plist - voir ma question ici: Puis-je archiver avec un certificat de Développeur, puis re-signer lors de la soumission avec un certificat de Distribution?
Je vient de confirmer lors de la WWDC 2012, la technique de suivi de travaux. Il remplit au mieux mes contraintes de peu de participation de la clientèle, la faible client de l'expertise, un simple processus de signature, et le code source de la propriété.
Ce n'exiger que le client à utiliser sur le Centre des Membres developer.apple.com et d'utiliser Xcode un peu (mais juste l'Organisateur!). Si votre client a la capacité technique des problèmes à ce niveau, alors je conseille de prendre le contrôle et de le faire pour eux (et de la charge pour elle!). Demandez-leur de développeur login et mot de passe et agir simplement sur leur nom, comme si vous étiez un employé.
Ndlr: clés de Négociation est autour d'un terrible compromis parce que c'est plus technique et plus impliqués pour le client et plus hacky et risqué pour le développeur. Il devrait être considéré comme un non-option compte tenu de ces deux meilleures options.
J'ai eu le même problème. C'est ainsi que j'ai finalement résolu:
Le client n'a pas tellement préoccupés par le partage d'un développement certificat qu'ils partageraient leur certificat de distribution.
J'ai également eu à créer
entitlements.plist
avec "Peut être débogué" (get-tâche-pour autoriser) NON, et la référence dans la configuration de build (sous la Signature de Code, la Signature du Code des Droits).Je crois avoir trouvé un moyen de faire exactement ce que vous voulez, je n'ai pas fait de tests extensifs ou essayé de télécharger sur l'app store, mais à partir de l'essai que j'ai fait il semble être bon. La démission et l'ajout de mon profil de configuration est de travail que je peux l'installer sur mes appareils définis dans le AdHoc profil sans manuel d'installation du profil nécessaire. Deuxième test a été j'ai eu un iPad et un iPhone version d'une application avec le même ID de lot à partir de xCode, au début, je ne pouvais pas avoir à la fois dans iTunes, mais après la démission et le faisceau changement d'ID, j'ai été capable d'avoir à la fois installés. J'ai aussi essayé de changer le nom de l'application et qui a travaillé aussi bien, il a montré sur l'appareil et dans iTunes avec le nouveau nom. Ci-dessous mon script, il est conçu pour démissionner d'une application spécifique pour moi, de sorte que le profil et ayez localisé sont codés en dur. Je flip entre un iPhone et la version iPad de l'application j'ai donc ajouté qu'en tant que paramètre au script. Mais vous devriez être en mesure de prendre les principes que j'ai ici et de les affiner pour vous-même.
Les entrailles de la ce s'appuie sur des articles comme De nouvelles aventures en donnant sa démission pour iOS à partir de Dan Dev Diary et très semblable à Erica Sadun de l'Application du Signataire énumérés ci-dessus. Le principal ajout que j'ai faite a été de l'édition de l'Info.plist avant de démissionner.
Meilleure solution serait de demander au client à l'exportation de son certificat de distribution de la clé privée dans .p12 fichier et l'envoyer à vous alongwith le profil de distribution avec laquelle vous pouvez générer un App Store de distribution de construire pour votre client.
Bonne chance!!
Ce qui concerne,
Sam
Ok, trouvé un moyen de le faire sans partage de profils de configuration ou de certificats.
L'idée est d'insérer un "run script" phase de construction de tromper XCode dans la signature d'une Application, elle n'a pas de compilation, de sorte que vous pouvez envoyer un compilé (non signé) Application pour le client, et ensuite leur XCode signes que l'Application avec leur cert et de profil.
Comment le faire:
Étape 1: Faire XCode générer un entier non signé de presse .app (je vais l'appeler cette "App"). Voir "Pour Désactiver la Signature de Code" ici: https://stackoverflow.com/a/10171462/375486
Étape 2: Créer un nouveau XCode pour iOS projet et d'en retirer toutes les phases de construction, vous pouvez, de sorte qu'il crée un vide .application fichier (je vais l'appeler cela "l'Application B")
Étape 3: Ajouter un "run script" phase de construction du Projet B qui copie le contenu de "App" en Application "B". Dans mon cas, j'ai utilisé ceci:
Étape 4: Envoyer le "B" de XCode projet pour le client, avec tous les fichiers nécessaires.
Étape 5: Le client crée le B du projet. Sous le capot, XCode va exécuter le "run script" de commande, puis connectez-vous à l'application, et que le client obtient une parfaite Application signée.
Et c'est tout 🙂
iResign fonctionne très bien.
Il vous permet de changer l'id de lot et ajouter les droits lors de la signature. Serait probablement travailler pour votre cas d'utilisation.
Cela étant dit, le xcarchive solution est plus canonique. Être conscient que le partage de la xcarchive fichier donne la dsym.
Si vous avez des #ifdef DEBUG déclarations dans votre code, assurez-vous qu'ils sont désactivés dans la construction, vous leur donnez.
Hein, toutes ces air plus compliqué alors qu'ils ont à faire. J'utilise cette fonction:
J'ai été là. Les Options 2 ou 3 sont hors de question. Option 4 serait l'idéal, mais comme vous l'avez écrit, Apple ne va pas laisser l'agent délégué ses privilèges pour créer des profils de distribution.
Donc, fondamentalement, votre seule option est pour vous d'obtenir le profil de distribution définies à leur compte. Afin de vous manipuler, vous devez vous connecter en tant qu'agent, qui n'est pas une option.
Donc ils de le faire. Il n'y a pas moyen de contourner cela.
Ils auront également de vous inviter en tant que membre de leur équipe de développement de produits sur leur compte. Vous devez être un administrateur. C'est à dire que vous devez envoyer un certificat de signature de la demande, tel que mentionné par Apple.
Enfin, ils devront télécharger et de vous envoyer les profils d'approvisionnement de distribution qu'ils ont créé.
Avec tout cela, vous serez en mesure de signer votre application avec leurs ressources.
Je viens d'avoir le téléphone avec Apple. Ils disent que c'est la seule façon de le faire:
https://developer.apple.com/library/ios/#qa/qa1763/_index.html
Le client vous ajoute à leur équipe, et vous donne des droits spécifiques.