Comment puis-je déployer une application iPhone de Xcode sur un vrai appareil iPhone?

157

Comment puis-je déployer une application iPhone de Xcode sur un vrai iPhone sans avoir un certificat Apple de 99 $ US?

DFG
la source
Voir cette réponse à une question que j'ai posée plus tôt pour un très bon guide sur la façon de le mettre sur votre iPhone jailbreaké.
Dan Walker
2
Xcode 7 dispose désormais d'un provisionnement gratuit, il n'est donc pas nécessaire de créer un compte de développeur Apple pour tester des applications sur un appareil réel. Voir cette réponse pour plus de détails.
Suragch

Réponses:

56

Il semble que l'application ne soit pas signée. Téléchargez ldid depuis Cydia et utilisez-le comme ceci:ldid -S /Applications/AccelerometerGraph.app/AccelerometerGraph

Assurez-vous également que le binaire est marqué comme exécutable: chmod +x /Applications/AccelerometerGraph.app/AccelerometerGraph

rpetrich
la source
3
Oui, vous devrez jailbreaker votre appareil pour que cette méthode fonctionne. (évidemment)
esqew
comment lancer la commande ldid -S ...? avez-vous besoin d'une console SSH pour cela? existe-t-il un moyen gratuit d'obtenir un client SSH sur un iPhone jailbreaké?
Dan Leahu
tanderson: il existe un package ldid dans Cydia et vous pouvez en compiler un pour OS X
rpetrich
rpetrich Je crois que ses questions sont de savoir comment taper et utiliser la commande, pas comment acquérir le pack. @tanderson, vous pouvez passer par Open SSH (puis vous connecter au téléphone à partir de votre bureau) ou un terminal à l' intérieur de l'iPhone lui-même. Les deux applications sont des téléchargements gratuits de Cydia . Avec SSH, vous avez l'avantage de pouvoir également l'utiliser pour simplement copier votre application sur le téléphone avec. Si vous faites cela beaucoup, assurez-vous de vérifier les autres réponses - vous pouvez faire en sorte que XCode fasse tout le travail pour vous, mais c'est une procédure difficile de le tromper en le faisant.
cregox
92

J'ai utilisé un mélange de deux howtos: Jason et Alex . Avec le second, nous avons l'avantage de pouvoir déboguer. Je vais principalement copier les deux ci-dessous (et simplifier ceux d'Alex):

Mise à jour de janvier 2012: cela fonctionne toujours sur SDK 4.2.1 et iOS 5.0.1 - Je viens de tout tester sur un nouvel ordinateur et appareil!


1. Créer un certificat auto-signé

Corrigez votre iPhone SDK pour permettre l'utilisation de ce certificat:

  1. Lancez Keychain Access.app. En l'absence d'éléments sélectionnés, dans le menu Trousseau, sélectionnez Assistant de certificat, puis Créer un certificat.

    • Nom: Développeur iPhone
    • Type de certificat: Signature de code
    • Permettez-moi de remplacer les valeurs par défaut: Oui
  2. Cliquez sur Continuer

    • Validité: 3650 jours
  3. Cliquez sur Continuer

  4. Videz le champ Adresse e- mail.

  5. Cliquez sur Continuer jusqu'à la fin .

    Vous devriez voir "Ce certificat racine n'est pas approuvé" . Ceci est attendu.

  6. Configurez le SDK iPhone pour autoriser l'utilisation du certificat auto-signé:

    sudo /usr/bin/sed -i .bak 's/XCiPhoneOSCodeSignContext/XCCodeSignContext/' /Developer/Platforms/iPhoneOS.platform/Info.plist

    Si Xcode est ouvert, redémarrez-le pour que cette modification prenne effet.

Et si vous êtes sur iOS 5, c'est tout! Essayez-le maintenant! Cela ne permet peut-être pas le débogage, mais l'application sera là!

J'ai été très surpris par cela car, comme vous devriez le savoir , je n'ai aucune idée de ce que sont tous ces hackings! Tout ce que j'ai fait, c'est améliorer un peu ce que j'ai trouvé ailleurs, comme je l'ai souligné.

Alors oui, toute la méthode ne fonctionne plus de la même manière et je ne pouvais plus me donner la peine d'en trouver une nouvelle ... Sauf cela, qui utilise un outil appelé Theos mais je n'ai pas pu passer par tout le processus.

Enfin, si vous devez le désinstaller pour une raison quelconque, consultez la fin de cet article. Dans mon cas, je devais le faire parce que je ne pouvais pas comprendre pourquoi tout le bleu de cette méthode avait cessé de fonctionner, et je m'en fichais plus puisque nous avons déjà la licence attendue depuis longtemps. (Le nombre Freaking DUNS prend tellement de temps ...)

.

.


.

.

.

2. Activez Xcode pour construire sur un appareil jailbreaké

  1. Sur votre iPhone jailbreaké, installez l'application AppSync en ajoutant la source ** http://repo.hackyouriphone.org **

  2. Supprimez les exigences du SDK pour le signe du code et les droits (j'adore sed !):

    sudo /usr/bin/sed -i .bak '/_REQUIRED/N;s/YES/NO/' /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/SDKSettings.plist
  3. Faites attention à laiPhoneOS5.0.sdkpièce. Si vous utilisez, par exemple, le SDK iOS 4.2, remplacez-le simplement en conséquence:

    sudo /usr/bin/sed -i .bak '/_REQUIRED/N;s/YES/NO/' /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/SDKSettings.plist
  4. Terminez la suppression des exigences en appliquant un correctif à Xcode. Cela signifie une édition binaire:

    cd /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Plug-ins/iPhoneOS\ Build\ System\ Support.xcplugin/Contents/MacOS/
    dd if=iPhoneOS\ Build\ System\ Support of=working bs=500 count=255
    printf "\xc3\x26\x00\x00" >> working
    /bin/mv -n iPhoneOS\ Build\ System\ Support iPhoneOS\ Build\ System\ Support.original
    /bin/mv working iPhoneOS\ Build\ System\ Support
    chmod a+x iPhoneOS\ Build\ System\ Support

    Si Xcode est ouvert, redémarrez-le pour que cette modification (et la dernière) prenne effet.

  5. Ouvrez "Projet> Modifier les paramètres du projet" (dans le menu). Cliquez sur l' onglet "Construire" . Recherchez «Identité de signature de code» et son enfant «Tout appareil iPhoneOS» dans la liste, et réglez les deux sur l'entrée «Ne pas signer de code» :

    texte alternatif

    Après cela, n'hésitez pas à annuler l'étape 3. Au moins dans mon cas, cela s'est très bien passé.

  6. Configurer Xcode sur code sign avec notre certificat auto-signé personnalisé (le premier guide pratique). Cette étape peut probablement être ignorée si vous ne voulez pas pouvoir déboguer:

    mkdir /Developer/iphoneentitlements401
    cd /Developer/iphoneentitlements401
    curl -O http://www.alexwhittemore.com/iphone/gen_entitlements.txt
    mv gen_entitlements.txt gen_entitlements.py
    chmod 777 gen_entitlements.py

    Branchez votre iPhone et ouvrez Xcode. Ouvrez Fenêtre> Organiseur. Sélectionnez l'appareil dans la liste sur le côté gauche, puis cliquez sur «Utiliser pour le développement». Vous serez invité à vous connecter au site Web d'approvisionnement, cliquez sur Annuler. Il est là pour faciliter le provisionnement légitime, mais ne rend pas le non-provisionnement illégitime plus difficile.

    Vous devez maintenant faire cette dernière partie pour chaque nouveau projet que vous faites . Allez dans le menu Projet> Nouvelle phase de construction> Nouvelle phase de création de script d'exécution. Dans la fenêtre, copiez / collez ceci:

    export CODESIGN_ALLOCATE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate
    if [ "${PLATFORM_NAME}" == "iphoneos" ]; then
    /Developer/iphoneentitlements401/gen_entitlements.py "my.company.${PROJECT_NAME}" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent";
    codesign -f -s "iPhone Developer" --entitlements "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/"
    fi

.

.


.

.

Désinstallation

Pour la 1ère partie:

sudo mv -f /Developer/Platforms/iPhoneOS.platform/Info.plist.bak /Developer/Platforms/iPhoneOS.platform/Info.plist

Pour la 2ème partie:

sudo mv -f /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/SDKSettings.plist.bak /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/SDKSettings.plist
sudo mv -f iPhoneOS\ Build\ System\ Support.original iPhoneOS\ Build\ System\ Support

Si vous avez fait l'étape 3 au lieu de 2, modifiez-la simplement en conséquence:

sudo mv -f /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/SDKSettings.plist.bak /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/SDKSettings.plist

pour le reste, c'est simplement revenir sur ce que vous avez fait sur XCode et supprimer /Developer/iphoneentitlements401/gen_entitlements.pysi vous le souhaitez:

sudo rm -f /Developer/iphoneentitlements401/gen_entitlements.py
cregox
la source
J'ai essayé de suivre ces instructions, mais maintenant 'Scheme' est du type My Mac 64 bit, et je n'ai plus d'option pour exécuter un simulateur ou un vrai iPhone, donc je ne peux même pas tester le code. J'utilisais le SDK 4.3, je ne sais pas si cela compte
nosatalian
1
En fait, mise à jour: après avoir changé le SDK de base dans les paramètres du projet d'iphoneos à iOS 4.3, les choses fonctionnent. Bien que xcode dise «Erreur lors du lancement du programme distant: échec de l'obtention de la tâche pour le processus», je peux lancer l'application en cliquant dessus.
nosatalian
1
J'obtiens cette erreur: The identity used to sign the executable is no longer valid. ... (0xE8008018) même lorsque j'ai mis 3650 jours à expirer. Il semble que le téléphone lui-même effectue une vérification.
Stephen
Est-ce que cette astuce "patcher XCode" fonctionne pour 4.3.2 ou elle va la freiner
Gabor
1
Point 6. Dans mon cas, j'ai dû changer les permissions du fichier /Developer/iphoneentitlements401/gen_entitlements.py pour que l'utilisateur normal l'exécute. Avec cela, la procédure fonctionne parfaitement.
abidibo
43

Provisioning gratuit après Xcode 7

Afin de tester votre application sur un appareil réel plutôt que de payer les frais de développeur Apple (ou de jailbreaker votre appareil), vous pouvez utiliser le nouveau provisionnement gratuit pris en charge par Xcode 7 et iOS 9.

Voici les étapes plus ou moins suivies de la documentation (ce qui est plutôt bien, alors lisez-la):

1. Ajoutez votre identifiant Apple dans Xcode

Allez dans XCode> Préférences> onglet Comptes> bouton Ajouter (+)> Ajouter un identifiant Apple. Consultez la documentation pour obtenir de l'aide.

entrez la description de l'image ici

2. Cliquez sur l'onglet Général dans le navigateur de projet

entrez la description de l'image ici

3. Choisissez votre identifiant Apple dans le menu contextuel Team.

entrez la description de l'image ici

4. Connectez votre appareil et choisissez-le dans le menu Schéma.

entrez la description de l'image ici

5. Cliquez sur le bouton Résoudre les problèmes

entrez la description de l'image ici

Si vous obtenez une erreur indiquant que le nom du groupe n'est pas valide, remplacez-le par quelque chose d'unique.

6. Exécutez votre application

Dans Xcode, cliquez sur le bouton Créer et exécuter.

entrez la description de l'image ici

7. Faites confiance au développeur de l'application dans les paramètres de l'appareil

Après avoir exécuté votre application, vous obtiendrez une erreur de sécurité car l'application que vous souhaitez exécuter ne provient pas de l'App Store.

entrez la description de l'image ici

Sur votre appareil , accédez à Paramètres> Général> Profil> votre-nom-identifiant-Apple > Faites confiance à votre-nom-identifiant-Apple > Confiance.

8. Exécutez à nouveau votre application sur votre appareil.

C'est tout. Vous pouvez maintenant exécuter la vôtre (ou toute autre application pour laquelle vous avez le code source) sans avoir à débourser 99 dollars. Merci, Apple, d'avoir enfin permis cela.

Suragch
la source
1
Merci beaucoup. cela fonctionnait parfaitement sans la licence de développeur Apple payée.
kishorer747
Cela pose cependant quelques problèmes: vous ne pouvez installer que 3 applications à la fois et vous devez renouveler le certificat chaque semaine.
SilverWolf
@seaturtle, merci pour la mise à jour. J'ai finalement déboursé l'argent pour la licence de développeur, donc je ne suis pas resté au courant de cette réponse. C'est dommage pour les limitations. Il y a des choses sur Android qui sont beaucoup plus agréables qu'Apple.
Suragch le
9

Vous ne pouvez pas, pas si vous parlez d'applications créées avec le SDK officiel et déployées directement à partir de xcode.

micmcg
la source
8

Vous devrez jailbreaker votre appareil.

Can Berk Güder
la source
1
Suivez la méthode de @ rpetrich et SSH l'exécutable dans le dossier / Applications de l'appareil, cela devrait fonctionner après un redémarrage / respring.
esqew
6

Il existe un moyen de déployer des applications iPhone sans payer à Apple. Vous devrez jailbreaker votre appareil et suivre les instructions sur http://www.alexwhittemore.com/?p=398

Leo
la source
aussi un guide parfait, avec une approche différente de @Dan ... J'ai utilisé les deux, tho.
cregox
5

Rien de ce que j'ai vu nulle part n'indique que vous pouvez déployer ad-hoc sur un vrai iPhone sans certificat (payant).

Matthew Phillips
la source
4

J'étais en train de passer par le développeur Apple hier soir et là, dans le certificat d'approvisionnement, j'ai trouvé quelque chose comme - "Signing Team Members". Je pense qu'il existe un moyen d'ajouter des membres de l'équipe au profil payant. Vous pouvez simplement demander au propriétaire de l'identifiant d'application (payant) de vous ajouter en tant que membre de l'équipe. Je ne suis pas sûr. Toujours à la recherche de ça.

Akshay
la source
Oui, vous pouvez ajouter les membres de l'équipe. Il y a une limite de 200 appareils par an.
cregox
Cawas - Savez-vous comment ajouter un membre à votre identifiant Apple?
Akshay
nous ne recevons des notifications que si vous ajoutez le @ avant le nom. Comme vous l'avez dit vous-même, vous devez d'abord obtenir un compte payant. Ensuite, cela devrait être très simple car je n'ai trouvé aucun tutoriel sur la façon de le faire. Je ne l'ai jamais fait moi-même, tho.
cregox
3

Non, c'est facile à faire. Dans Xcode, définissez la configuration active sur Release. Changez l'appareil de Simulator en Device - quel que soit le SDK. Si vous souhaitez exporter directement vers votre iPhone, connectez-le à votre ordinateur. Appuyez sur Build and Go. Si votre iPhone n'est pas connecté à votre ordinateur, un message apparaîtra indiquant que votre iPhone n'est pas connecté.

Si cela s'applique à vous: (l'iPhone n'était pas connecté)

Accédez au dossier de vos projets, puis au dossier de construction à l'intérieur. Accédez au dossier Release-iphoneos et emportez l'application à l'intérieur, glissez-déposez sur l'icône iTunes. Lorsque vous synchronisez votre appareil iTouch, il le copie sur votre appareil. Il apparaîtra également dans iTunes en tant qu'application pour l'iPhone.

J'espère que cela t'aides!

PS: Si cela dit quelque chose sur un certificat non valide, cliquez simplement sur le projet dans Xcode, la petite icône de projet dans la pile de fichiers à gauche, et appuyez sur Apple + I, ou faites Obtenir des informations dans la barre de menu. Cliquez sur Construire en haut. Sous Signature du code, modifiez Identité de signature de code - Tout appareil iPhone OS en Ne pas signer.

cdespinosa
la source
7
L'OP n'a pas de certificat de signature ni de profil d'approvisionnement. Ces instructions sont destinées aux membres du programme pour développeurs iPhone à 99 $, mais n'abordent pas la question de savoir comment s'exécuter sur l'appareil sans s'inscrire au programme.
cdespinosa
2

Tout dépend vraiment de la version de Xcode que vous utilisez, car différentes versions utilisent différentes méthodes pour se déployer sur votre iPhone sans profil d'approvisionnement.

Xcode 3.2.1 est une bonne version et est facile à trier, mais nous devons savoir quelle version vous utilisez.

Magnatek
la source
2

La solution publiée par Cawas fonctionne également parfaitement avec XCode4. Cependant, il y a quelques changements dans l'interface utilisateur de l'IDE, vous devez donc faire quelques recherches pour trouver Run Script :)

Dans la vue Navigateur de projet, cliquez sur l'élément racine du projet, puis dans la fenêtre du milieu, sélectionnez Cible, puis cliquez sur l'onglet Phases de construction et en bas, vous verrez le bouton Ajouter une phase de construction, cliquez et sélectionnez Ajouter un script d'exécution, puis collez "codesign "scénario posté par Cawas.

Gobol
la source
1

Il n'y a pas de solution de contournement. Vous ne pouvez déployer des applications ad hoc que si elles sont enregistrées sur votre appareil. Cela vous empêche de créer votre propre boutique d'applications.


la source