Publier une application iOS (iPhone / iPad) avec Adobe Flash CS5 ! EFFITEK a testé pour vous…
Etat des lieux de la programmation pour iOS…
Pour pouvoir publier une application vers l'iPhone et l'iPad, il est normalement nécessaire de suivre la procédure dictée par Apple. En voici un résumé :
- Posséder un Mac récent ;
- Disposer d'un compte développeur (il s'obtient moyennant $99 / an sur http://developer.apple.com) ;
- S'enregistrer et récupérer un certificat de Développement ;
- Coder son appli exclusivement sous Mac OSX, à l'aide de Xcode et du SDK d'Apple. Ces outils sont gratuits ;
- Signer l'appli à l'aide du certificat ;
- Enregistrer les ID de ses appareils, afin de pouvoir y tester l'appli. Cette étape aussi s'effectue sur http://developer.apple.com ;
- Compiler enfin l'appli, ce qui génère un .IPA ;
- Passer par iTunes afin d'y copier l'IPA, puis synchroniser les applications. iTunes installera donc l'appli.
C'est long, cher, et, autant le dire, il faut impérativement maîtriser la programmation objet en C++ pour trouver ses marques sous Xcode. Ce n'est pas un langage de script, il requiert une formation d'ingénieur.
Et Flash, dans tout ça ?
On se souvient que Steve Jobs n'a jamais voulu autoriser le flash sous iOS. Tant pis pour les pages web animées, du coup inconsultables depuis l'iPhone ou l'iPad. Sans rentrer dans la guerre des clochers, il faut bien admettre que c'est surtout la suprématie de l'App Store qui se sera trouvée préservée par cette fin de non-recevoir opposée à une technologie phare d'Adobe…
Quoi qu'il en soit, la dernière version du logiciel de création d'animations flash, à savoir Adobe Flash CS5, est désormais capable de créer des animations flash optimisées pour iOS, et de les compiler en IPA. Ces animations flash fonctionnent alors comme des applications ordinaires, et se déploient via l'App Store et iTunes, tout comme les applications écrites sous Xcode.
Nous avons voulu tester cela !
Voici les outils et logiciels dont nous avons disposé :
- Un PC sous Windows XP ;
- Cygwin (uniquement pour openssl ; ainsi, une version win32 stand-alone d'openssl aurait suffi) ;
- 7-Zip ;
- Adobe Flash CS5 ;
- Un compte développeur enregistré chez Apple (à $99 / an).
Nous avons globalement suivi les étapes décrites sur le site d'Adobe… à quelques détails près.
1. Génération du certificat iphone_dev.p12.
Le certificat sert à signer l'application avec le compte développeur. Nous aurions bien voulu nous passer de cette étape, puisque nous disposons d'appareils jailbreakés. Mais Adobe Flash CS5 ne compilera l'IPA qu'avec un certificat valide.
Nous nous sommes donc connectés sur le site d'Apple, http://developer.apple.com, nous sommes identifiés avec notre compte d'entreprise, et sommes allés sur la page « iOS Provisioning Portal » :

Nous sommes identifiés sur le site sous le nom de « Grégoire Banag », associé-fondateur d'EFFITEK. Il n'avait pas de certificat au début du test. Pour l'obtenir, il a fallu ouvrir un shell sous Cygwin, et saisir les commandes suivantes :
- openssl genrsa -out mykey.key 2048
- openssl req -new -key mykey.key -out CertificateSigningRequest.certSigningRequest -subj "/emailAddress=fscemama@effitek.fr, CN=EFFITEK, C=FR"

C'est ce fichier, CertificateSigningRequest.certSigningRequest, qui doit être envoyé sur le site d'Apple, pour demander un certificat. Il suffit alors de parcourir vers le C:\tmp que nous venons de créer. Dans les minutes qui suivent, le serveur d'Apple envoie par email une demande de validation, et il est ensuite possible de télécharger le certificat, comme illustré ci-dessus (voir le bouton Download à droite de « Grégoire Banag »).
Ce fichier qu'on peut télécharger s'appelle « developer_identity.cer ». On l'enregistre également dans C:\tmp.
Sur le site d'Apple, dans le menu Provisioning, on enregistrera également le fichier Team_Provisioning_Profile_.mobileprovision sous C:\tmp :

Retour sous Cygwin, il nous reste deux commandes à saisir :
- openssl x509 -in developer_identity.cer -inform DER -out developer_identity.pem -outform PEM
- openssl pkcs12 -export -inkey mykey.key -in developer_identity.pem -out iphone_dev.p12

(Le mot de passe saisi doit être conservé. Ignorer le message d'erreur à propos de « random state ».)
Tout ce que nous voulions, c'était le p12 et le fichier Team_Provisioning_Profile_.mobileprovision. On peut maintenant continuer.
2. Création des icônes :
Considérons que le dossier de travail de notre application sera le C:\tmp.
Il va nous falloir 4 icônes : (respecter la casse minuscules / majuscules) :
- C:\tmp\Default.png ; taille : 320×480 px.
- C:\tmp\icons\Icon29.png ; taille : 29×29 px
- C:\tmp\icons\Icon512.png ; taille : 512×512 px
- C:\tmp\icons\Icon57.png ; taille : 57×57 px
3. Création de l'appli sous Adobe Flash CS5 :
A partir d'ici, on suit les étapes mentionnées sur le site d'Adobe. Les voici résumées :

3.2 On y ajoute du texte. Propriétés du texte : « Classic Text », et non TLF Text.
3.3 On règle le positionnement du texte, et sa taille.
3.4 Ce qui donne :

3.5 Paramétrage de la compilation : File / iPhone OS Settings… :


Ne reste plus qu'à cliquer sur Publish. La compilation prend quelques minutes, même pour un « Hello Word », et génèrera finalement un IPA de 3 mo !
3.6 Au final, et après avoir tout enregistré, nous avons cette arborescence :

4. Test de l'appli !
Ici, deux possibilités s'ouvraient à nous : soit enregistrer l'iPhone de test sur le site d'Apple et copier l'IPA sous iTunes (c'est l'option Apple), soit éviter iTunes et profiter du fait que l'iPhone de test était jailbreaké pour tester l'IPA directement.
On a choisi la 2e option, et donc, il a fallu ôter les signatures de l'IPA. Dans une invite de commande, on a donc saisi ce qui suit :
- cd C:\tmp
- dir

- "C:\Program Files\7-Zip\7z.exe" x -y HelloWorld.ipa

- rd /s /q Payload\Untitled-1.app\_CodeSignature
- del HelloWorld.ipa
- "C:\Program Files\7-Zip\7z.exe" a -r -y -mx9 HelloWorld.ipa Payload
- rd /s /q Payload

Finalement, il a suffi d'uploader l'IPA vers notre iPhone et de l'installer avec Installous. En wifi, notre iPhone avait l'adresse 192.168.0.11. On a continué sous Cygwin :
- cd /cygdrive/c/tmp
- sftp root@192.168.0.11
- cd /private/var/mobile/Documents/Installous/Downloads
- put HelloWorld.ipa
- bye

La suite est triviale :

Et notre appli, une fois installée, fonctionne !


Nos conclusions… :
Nous ne débordons pas d'enthousiasme, mais apprécions l'outil bonus.
Clairement, les applis développées en Flash ne tirent pas pleinement parti des possibilités matérielles et logicielles de l'iPhone. Elles restent plutôt graphiques, et centrées sur la gestion des événements. En allant plus loin, avec ActionScript 3, il est possible d'étendre un projet Flash avec du C/C++. Et donc, je ne vois pas pourquoi les librairies du SDK d'Apple ne pourraient pas également être implementées. Mais cela deviendrait rapidement bien complexe.
La « culture » des professionnels de l'informatique habitués à travailler en Flash n'est pas celle des ingénieurs d'étude bilingues en C/C++. Les uns manient infographie, séquences et animations, et les seconds, la programmation objet. L'intérêt de la compilation Flash pour iOS, c'est d'ouvrir iPhone et iPad à la créativité des développeurs Flash, et de leur permettre de porter leurs travaux initialement conçus pour des stations de travail PC / Mac.
Pour les entreprises, c'est toute une gamme de métiers, portés par des collaborateurs, qui accède à l'iPhone, et surtout, à l'iPad. On peut penser aux fonctions marketing interne et externe, qui pourront transformer l'iPad en accessoire clé de la communication, sans formation ni recyclage, ni même nécessité d'investir dans des parcs Mac OSX. L'infrastructure des SI s'en trouvera moins exposée à l'hétérogénéité, et aux coûts inhérents.
Nous attendons donc avec impatience qu'Adobe intègre les fonctionnalités les plus utiles du SDK d'Apple dans son outil. Et la vraie question pour la fin… à quand un Microsoft Visual Studio capable d'en faire autant avec .NET ?
In: iOS, iPhone et iPad · Tagged with: adobe, compilation, flash, ipa, iPad, iPhone, programmation, xcode
