Dans le cadre d’un projet avec une forte composante Smartphone/Tablette, on se doit de tester différentes solutions techniques.
3 Solutions sont à l’étude:
- Développer pour le Web mobile avec javascript et svg/html
- Développer en natif avec Android et IOS
- Développer avec un générateur de code style phonegap et/ou JavaFX
Cette dernière solution est donc le sujet de cet article. Après une rapide étude de phonegap, je ne vois pas bien l’intérêt dans mon démonstrateur d’une solution phonegap. En effet, autant développer directement dans notre cas avec une application Web mobile.
La solution JavaFX semble enfin mature dans Java8. Une intégration directe avec le JDK 8 sans installation additionnel est enfin opérationnelle. Eclipse avec e(fx)clipse intègre le JavaFX au sein de cet IDE utilisé classiquement en développement Java.
Les premiers développements sous JavaFx montrent une facilité dans les interactions avec l’interface graphique. Swing et Awt semblent bien partis pour être remplacés à plus ou moins long terme.
La problématique est de basculer une application JavaFX vers un fichier apk.
En m’appuyant sur le tutoriel suivant : (https://bitbucket.org/javafxports/android/wiki/Building%20and%20deploying%20JavaFX%20Applications), l’on peut arriver à ses fins.
Je me permet juste quelques remarques comme retour d’expérience sur mon portage d’application.
En premier lieu, les chemins des outils principaux que l’on indique d’ailleurs en variable d’environnement:
- JAVA_HOME=C:\Program Files\Java\jdk1.8.0_25
- PATH=C:\Program Files\Java\jdk1.8.0_25\bin;C:\Developpement\gradle-2.2.1-all\bin;C:\Developpement\android-sdk_r24.0.2-windows\tools;C:\Developpement\apache-ant-1.9.4-bin\bin;
Voici une copie d’écran de mon disque dur, je ne travaille jamais dans le dossier c:\Programme Files\ ou sur le bureau, tous mes outils sont dans un dossier Developpement (sans accent, sans espace ou caractères autre que [A-Za-z0-9.-]):
Après le développement de l’application de manière classique dans Eclipse, il faut faire un export en « Runnable JAR file »:
Le fichier final est dans le dossier PierreFX du dossier sample de l’outil de portage javafxport. Dans cet outil de portage, il y a un script pour déployer l’application d’exemple (qui ne fonctionne pas d’ailleurs dans ma configuration) : createHelloworld.bat, voici donc la version pour ma configuration et mon projet PierreFX.jar:
Notez les / au lieu des \ plus classique sous Windows. D’avance j’avais installé dans le SDK les packages pour le développement en Android 4.4.2 et 5.0, d’ailleurs je ne sais pas comment il fait le choix de la version…
L’exécution de ce programme createPierre.bat va produire un dossier: C:\Developpement\dalvik-sdk-8u40-ea3\samples\PierreFX\PierreFX contenant tout le projet préparé pour android.
Un ant debug dans le dossier C:\Developpement\dalvik-sdk-8u40-ea3\samples\PierreFX\PierreFX va produire ensuite dans C:\Developpement\dalvik-sdk-8u40-ea3\samples\PierreFX\PierreFX\bin le fichier apk: PierreFX-debug.apk
Nota important: si vous travailler avec un émulateur, vous pouvez avoir l’impression que le JavaFX produit une application avec écran noir (c’est aussi le cas si vous avez une erreur, logcat est à ce moment là votre meilleur ami). L’écran noir peut aussi venir que l’application dans l’émulateur est très lente, elle peut prendre 30 secondes même pour une application classique et même sur un ordinateur Core i7, ce n’est peut être pas planté, juste très lent….
Nota: l’affichage de png a posé un problème sur l’émulateur Android, « Pixel format BYTE_BGRA_PRE not supported on this device », il semblerait que le support de la transparence soit la cause du problème. La conversion de l’image en jpg a contourné le problème mais sans donné l’effet de la transparence bien sûr.