Delphi XE7 et Android


Embarcadero vient de sortir la nouvelle version de Delphi, la XE7 qui pourrait bien être une nouvelle version de référence après le mythique Delphi 7.

Les développeurs Delphi de la première heure utilisent la VCL depuis près de 20 ans sous Windows, alors revenons sur le fonctionnement de tout cela histoire d'avoir les idées claires.

Comment fonctionne Android


Le système Android repose sur un noyau Linux, mais ceci nous importe assez peu dans le sens ou le développement proposé au départ par Google se fait avec Android Studio (toujours en beta à ce jour) qui permet de développer en Java.

Mais Android n'exécute pas d'application Java. Google a estimé que la machine virtuelle Java n'était pas adaptée aux smartphones (notamment de première génération), ils ont donc conçu le système Dalvik (machine virtuelle) qui optimiserait les ressources de l'appareil.

Pourtant, le développement se fait bien en Java, les sources Java (extension .java) sont compilés en bytecode Java (extension .class), mais au lieu d'être regroupés avec les autres ressources de l'application dans une archive ZIP (extension .jar), ils sont recompilés pour Dalvik dans un seul fichier classes.dex. Ce fichier regroupe l'ensemble du code Dalvik de l'application. Cette opération permet notamment d'éviter les répétitions de chaînes de caractères (y compris les noms de classe) entre les différents fichiers .class puisqu'il est alors possible de créer une seule table de référence pour l'ensemble des sources.

Le fichier APK


L'application Android est ensuite présentée sous la forme d'un fichier unique à l'extension APK, c'est un fichier ZIP contenant le fichier classes.dex, les ressources de l'application et un fichier AndroidManifest.xml qui décrit l'application. Notez que là encore le fichier n'est pas un XML standard, il est encodé en binaire pour faciliter sa lecture par le smartphone.

Jusque là, nous obtenons un développement indépendant du processeur puisque nous sommes avec un bytecode Dalvik pour la machine virtuelle du système Android. On peut donc avoir un appareil équipé d'un processeur ARM (la plupart) ou d'un processeur Intel (le Galaxy Tab 3 par exemple).

Il est cependant possible de développer en "natif" sous Android, j'entends par là avec du code binaire directement interpréter par le processeur; pour cela, Google propose le Native Developpement Kit (NDK) qui permet de développer pour Android en C/C++. Ce NDK permet de créer des bibliothèques (comme les DLL de Windows, mais en .so car nous sommes sous Linux) qui sont exploitées obligatoirement par une application Dalvik; le point d'entrée d'une application - même native - est donc du code Dalvik.

Et Delphi dans tout cela ?


Depuis XE5, Delphi est doté d'un compilateur natif pour Android sous ARM. Le code Pascal est donc directement compilé en natif (comme avec le NDK) sous la forme d'une bibliothèque .so. Vous n'avez pas accès à la partie Dalvik que Delphi se charge d'ajouter à l'application. Ce code pris en charge par Delphi propose d'ailleurs depuis XE7 d'afficher un Splahscreen sous la forme d'une image à définir dans les options du projet.

Si vous avez bien suivi ce que je dis plus haut, les applications Delphi pour Android peuvent donc s'exécuter sur tout système Android doté d'un processeur ARM. Dans les prérequis du produit, il est aussi précisé que l'appareil doit être équipé de la technologie NEON, très exactement ARMv7 processor with NEON support. Par contre je ne sais pas si c'est un impératif du compilateur ou simplement un prérequis de Firemonkey, le framework multiplateform de Delphi.

Notez que Android supporte l'utilisation de plusieurs binaires dans un même APK afin d'exécuter l'application sur processeur ARM et Intel, mais à ce jour Delphi ne supporte que ARM...on peut cependant supposer (mais ça reste une supposition) que lorsque Delphi supportera de nouveau la compilation pour Linux (c'est toujours dans la roadmap), ils en profiteront pour proposer la compilation Android/Intel.

Conclusion


Delphi XE7 vous permet de développer, à partir d'un source unique, une application qui peut se compiler pour Windows 32 bits, Windows 64 bits, Mac OSX, iOS et Android. Jusque Delphi XE6 les environnements Desktop et Mobile étaient distincts, mais avec FireUI, Delphi XE7 permet de personnaliser les fiches Firemonkey (la VCL c'est pour Windows uniquement) en fonction du système cible.

Et pour savoir si Delphi fonctionnera avec votre Smartphone, le plus simple c'est encore d'essayer !
Date de dernière modification : 12/08/2015