La procédure indiquée ici fonctionne correctement avec la version 2 du firmware. Elle ne fonctionne pas avec la version 3.0.

Jailbreak

La première étape consiste à débloquer l'iPhone ou l'iPod de manière à autoriser l'installation d'applications sans passer par l'AppStore. Cette opération appelée jailbreak est décrite à différents endroits sur la toile. Par exemple dans les tutoriels du site iClarified.

Télécharger et installer la chaîne de compilation

Les indications fournies sur le blog de Dread Pirate PJ m'ont servi de point de départ mais n'ont pas complètement abouti dans mon cas. L'auteur du blog fournit une chaîne de compilation directement installable sous Linux.

  • Télécharger le fichier iphone-toolchain-linux.tgz.
  • Décompressez ce fichier à la racine de votre système de fichiers sur votre poste de travail Linux. Les outils s'installent dans le dossier /usr/local.
cd /
sudo tar xzf chemin/vers/iphone-toolchain-linux.tgz

Installer les bibliothèques et les fichiers d'en-tête

Quand on possède un Mac, c'est assez facile

Il faut tout d'abord télécharger et installer le kit de développement gratuit d'Apple. Il faut ensuite récupérer le dossier iPhoneOS2.2.sdk (dans /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/) et le copier sur votre PC sous Linux (par exemple dans /usr/local).

Au passage, on peut s'interroger sur l'intérêt de toutes ces manœuvres lorsqu'on possède déjà un Mac avec le SDK installé dessus. Dans mon cas, le Mac est installé dans le salon : il sert surtout de téléviseur, lecteur DVD, chaîne Hi-Fi... Pour travailler ou bricoler, je préfère le PC installé dans la pièce qui sert de bureau.

Quand on ne possède pas de Mac

Une autre méthode consiste à extraire les bibliothèques des entrailles de l'iPhone. Il faut tout d'abord installer OpenSSH et RSync sur l'iPhone (en utilisant Cydia). RSync et SSH doivent également être installés sur le PC sous Linux.

Dans les commandes ci-dessous, remplacez <IP iPhone> par l'adresse IP de votre iPhone :

sudo mkdir -p /usr/local/iPhoneOS2.2.sdk/System/Library
cd /usr/local/iPhoneOS2.2.sdk/System/Library/
sudo rsync -azuv root@<IP iPhone>:/System/Library/Frameworks .
sudo rsync -azuv root@<IP iPhone>:/System/Library/PrivateFrameworks .
cd ../..
sudo mkdir usr
cd usr
sudo rsync -azuv root@<IP iPhone>:/usr/lib .

Téléchargez les fichiers d'en-tête : sdk-2.0-headers.tar.gz.

cd /usr/local/iPhoneOS2.2.sdk/usr
sudo tar xzf /chemin/vers/sdk-2.0-headers.tar.gz
sudo mv include-2.0-sdk-ready-for-iphone include

Modifier les bibliothèques de base

La procédure complète figure sur le site de Jay Freeman (saurik). En résumé, j'ai suivi ces indications :

cd /tmp
mkdir csu
cd csu
svn co http://iphone-dev.googlecode.com/svn/trunk/csu .
sudo cp *.o /usr/local/iPhoneOS2.2.sdk/usr/lib
cd /usr/local/iPhoneOS2.2.sdk/usr/lib
sudo ln -sf crt1.o crt1.10.5.o
sudo ln -sf dylib1.o dylib1.10.5.o

Essayer de construire une application exemple

Je me suis inspiré des indications fournies sur le blog antirez weblog. Le programme a été un peu simplifié et le Makefile a été modifié de manière à tenir compte des emplacements où sont installés les outils.

Cliquez ici pour télécharger le programme exemple

Pour compiler et installer l'exemple, vous devez effectuer les opérations suivantes :

  1. Décompressez l'archive. Vous devez obtenir un dossier Salut.
  2. Modifiez le Makefile en indiquant l'adresse IP de votre iPhone ou iPod (variable IPHONE_IP).
  3. Dans le dossier Salut, exécutez la commande make install. Vous devrez entrer trois fois votre mot de passe root (celui de l'iPhone, par défaut alpine si vous ne l'avez pas modifié).

Lors de la troisième étape, l'application est compilée et copiée sur l'iPhone/iPod. Ce dernier est redémarré de manière à faire apparaître l'icône de l'application Salut.

Apparition de l'icône de la nouvelle application Exécution de l'application Salut