web-dev-qa-db-fra.com

Comment déployer une application iPhone de Xcode sur un véritable appareil iPhone?

Comment déployer une application iPhone de Xcode sur un appareil iPhone réel sans disposer d'un certificat de 99 $ USApple?

155
DFG

On dirait que l'application n'est pas signée. Téléchargez ldid à partir de Cydia puis utilisez-le comme suit: ldid -S /Applications/AccelerometerGraph.app/AccelerometerGraph

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

56
rpetrich

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 surtout copier les deux ci-dessous (et simplifier les alex):

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


1. Créer un certificat auto-signé

Corrigez votre kit de développement logiciel iPhone pour autoriser l'utilisation de ce certificat:

  1. Lancez le trousseau Access.app. Sans é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: Code Signing
    • Permettez-moi de remplacer les valeurs par défaut: Oui
  2. Cliquez sur Continuer

    • Validité: 3650 jours
  3. Cliquez sur Continuer

  4. Supprimez le champ d'adresse Email .

  5. Cliquez sur Continuer jusqu'à la fin .

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

  6. Configurez le kit de développement logiciel (SDK) de l’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 vous avez ouvert Xcode, redémarrez-le pour que cette modification soit prise en compte.

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

J'ai été très surpris par cela car, en tant que vous devriez le savoir , je n'ai aucune idée de la nature de tous ces piratages! Je n’ai fait qu’améliorer un peu ce que j’avais trouvé ailleurs, comme je le faisais remarquer.

Donc oui, la méthode entière ne fonctionne plus de la même façon et je ne pouvais pas en chercher une nouvelle ... Sauf pour ceci, qui utilise un outil appelé Theos mais je ne pouvais pas passer à travers tout le processus.

Enfin, si vous devez le désinstaller pour quelque raison que ce soit, vérifiez la fin de ce message. Dans mon cas, je le devais parce que je ne pouvais pas comprendre pourquoi tout le bleu de cette méthode avait cessé de fonctionner et je ne m'en souciais plus puisque nous avions déjà la licence attendue depuis longtemps. (Le numéro DUNS prend beaucoup de temps ...)

.

.


.

.

.

2. Activer Xcode pour construire sur un périphérique jailbreaké

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

  2. Supprimer les exigences du SDK pour le code et les droits d'accès (j'aime 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 à la partie iPhoneOS5.0.sdk. Si, par exemple, vous utilisez iOS 4.2 SDK, remplacez-le 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 des correctifs à Xcode. Cela signifie é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 vous avez ouvert Xcode, redémarrez-le pour que cette modification (et la dernière) prenne effet.

  5. Ouvrez "Projet> Modifier les paramètres du projet" (à partir du menu). Cliquez sur l'onglet "Construire" . Recherchez "Identité de signature de code" et son enfant "Tout périphérique iPhoneOS" dans la liste, puis définissez les deux à l'entrée "Ne pas utiliser le code" :

    alt text

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

  6. Paramétrer Xcode pour signer avec notre certificat 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. Fenêtre ouverte> Organiseur. Sélectionnez le périphérique dans la liste de gauche et cliquez sur "Utiliser pour le développement". Vous serez invité à vous connecter à un site Web d'approvisionnement, cliquez sur Annuler. Il est là pour faciliter le provisionnement légitime, mais ne rend pas plus difficile le non-provisionnement illégitime.

    Maintenant Vous devez faire cette dernière partie pour chaque nouveau projet que vous faites . Allez au menu Projet> Nouvelle phase de construction> Nouvelle phase de construction 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ésinstaller

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 effectué 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, il ne fait que revenir sur ce que vous avez fait sur XCode et supprimer /Developer/iphoneentitlements401/gen_entitlements.py si vous le souhaitez:

Sudo rm -f /Developer/iphoneentitlements401/gen_entitlements.py
91
cregox

Provisioning gratuit après Xcode 7

Afin de tester votre application sur un appareil réel au lieu de payer les frais de développeur Apple (ou de jailbreaker votre appareil), vous pouvez utiliser le nouvel approvisionnement gratuit pris en charge par Xcode 7 et iOS 9.

Voici la marche à suivre plus ou moins depuis la documentation (ce qui est plutôt bien, lisez-le donc):

1. Ajoutez votre Apple ID dans Xcode

Sélectionnez XCode> Préférences> onglet Comptes> bouton Ajouter (+)> Ajouter Apple ID. Voir la documentation pour plus d'aide.

enter image description here

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

enter image description here

3. Choisissez votre Apple ID dans le menu contextuel Équipe.

enter image description here

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

enter image description here

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

enter image description here

Si vous obtenez une erreur indiquant que le nom de l'ensemble n'est pas valide, remplacez-le par un élément unique.

6. Exécutez votre application

Dans Xcode, cliquez sur le bouton Build and run.

enter image description here

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.

enter image description here

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

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

C'est ça. Vous pouvez maintenant lancer votre propre application (ou toute autre application pour laquelle vous avez le code source) sans avoir à débourser 99 dollars. Merci, Apple, d’avoir finalement permis cela.

42
Suragch

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

9
micmcg

Vous devrez jailbreaker votre appareil.

8
Can Berk Güder

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

6
Leo

Rien de ce que j'ai vu nulle part n'indique que vous pouvez déployer de manière ad hoc sur un véritable iPhone sans certificat (payé).

5
Matthew Phillips

Hier soir, je parcourais le Apple Developer et, dans le certificat de provisioning, j'ai trouvé quelque chose comme: "Signature des membres de l'équipe". Je pense qu'il y a un moyen d'ajouter des membres de l'équipe au profil rémunéré. Vous pouvez simplement demander au propriétaire de l'identifiant de l'application (payant) de vous ajouter en tant que membre de l'équipe. Je ne suis pas sûr. Toujours à la recherche de ça.

4
Akshay

Non, c'est facile à faire. Dans Xcode, définissez Active Configuration sur Release. Modifiez le périphérique de Simulator en périphérique - 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 s'affichera vous indiquant que votre iPhone n'est pas connecté.

Si cela vous concerne: (l'iPhone n'était pas connecté)

Allez dans le dossier de vos projets puis dans le dossier de construction à l’intérieur. Allez dans le dossier Release-iphoneos et installez 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 iPhone.

J'espère que cela t'aides!

P.S.: Si un certificat n’est pas valide, il suffit de cliquer sur le projet dans Xcode, sur la petite icône de projet dans la pile de fichiers située à gauche, puis sur Pomme + I ou sur Obtenir des informations dans la barre de menus. Cliquez sur Construire en haut. Sous Signature du code, changez l'identité du signataire du code - Tous les appareils iPhone OS doivent ne pas signer.

3
Christian

Tout dépend 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 de provisionnement.

Xcode 3.2.1 est une bonne version facile à résoudre, mais nous devons savoir quelle version vous utilisez.

2
Magnatek

La solution publiée par Cawas fonctionne également parfaitement avec XCode4. Cependant, quelques modifications ont été apportées à l'interface utilisateur de l'EDI. Vous devez donc effectuer des 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. En bas, vous verrez le bouton Ajouter une phase de construction, cliquez sur et sélectionnez Ajouter un script d'exécution, puis collez "codesign "script posté par les Cawas.

2
Gobol

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

1
Thomas