menu
  Home  ==>  articles  ==>  delphi  ==>  delphi_xe5_android   

Delphi XE5 Android - John COLIBRI.

  • résumé : Delphi XE5 permet le développement d'applications pour Android. Le code généré peut fonctionner sur les mobiles Android, ainsi que sur l'émulateur Windows. Architecture de développement et de l'exécution, exemple simple, nouveautés.
  • mots clé : Android, Arm v7 NEON, pré requis, déploiement
  • logiciel utilisé : Windows XP personnel, Delphi XE5
  • matériel utilisé : Pentium 2.800 Mhz, 512 Meg de mémoire, 250 Giga disque dur
  • champ d'application : Delphi XE5 sur Windows
  • niveau : développeur Delphi
  • plan :


1 - Lancement Delphi Xe5

Delphi XE5 a été lancé le 12 Septembre 2013, et offre essentiellement le développement d'applications pour les téléphones est tablettes Android




2 - Delphi et Android

2.1 - Architecture

L'organisation générale est la suivante:

android_architecture

  • une nouvelle version du compilateur Delphi, DccAArm.exe permet de générer du code ARM pour l'émulateur android et pour les mobiles
  • l'installateur Delphi a ajouté les librairies nécessaires au développement Android:
    • le SDK Android (Software Development Kit) comprenant surtout
      • ADB.EXE (Android Debug Bridge), utilisé pour déployer et communiquer avec le matériel ou le simulateur
      • AVD.EXE (Android Virtual Device: l'émulateur Android)
    • le NDK Android (Native Development Kit) qui est utilisé pour gérer le mobile par le code Delphi ARM. JNI (Java Native Interface) permet à des applications Java de communiquer avec des applications ARM et réciproquement.
Le programme Delphi compilé est envoyé
  • soit vers l'émulateur Android du PC
  • soit vers un mobile Android, via un cable USB


Sur Android, le fonctionnement est le suivant:

android_application

et:

  • l'Operating System est Linux
  • les applications accessible sont encapsulées dans un fichier .APK, qui sont lancées et ensuite interprétés par la machine virtuelle Java appelée DALVIK
  • les applications générées par Delphi
    • sont encapsulées dans un .APK
    • comportent une fenêtre de lancement (appelée "Activity" dans le monde Android) minimale
    • cette fenêtre donne la main au code ARM constitué
      • des librairies en code natif ARM (FireMonkey et toutes les autres librairies nécessaires, comme Indy, la gestion des bases de données etc)
      • notre code applicatif en code ARM
Notez que dans le monde Android, il n'y a pas la même technique de .DLL qu'en Windows, et donc chaque application contient, par exemple, la librairie FireMonkey.



2.2 - Pré Requis

Côté PC
  • Windows 32. Nous avons utilisé notre XP de base, mais naturellement les versions Vista, Windows 7 et Windows 8 sont utilisables
  • Delphi fonctionne aussi sur les machines virtuelles (Mac en particulier), mais l'émulateur Android du PC virtuel n'est pas officiellement supporté
Côté Android
  • un mobile muni d'un GPU (accélérateur graphique)
  • version ArmV7 exigée, avec NEON (NEON: des instructions ARM additionnelles)
  • operating System ANDROID
    • GingerBread: Android 2.3.3+ (MR1 ou plus récent), soit API 10 (fin 2010)
    • Ice Cream Sandwich: Android 4.0.3+ (MR1 ou plus récent), soit API 15
    • Jelly Bean: Android 4.1+ (MR1, MR2 ou plus récent), soit les API 16, 17 et 18
    Ces contraintes correspondent à plus de 95 % des mobiles Android


2.3 - Installation

Côté Window et Delphi, l'installateur télécharge et installe
  • Delphi, naturellement
  • les outils Android nécessaires (le SDK, le NDK). Dans notre cas, ils ont été placés dans
        C:\Documents and Settings\All Users\Documents\RAD Studio\12.0\PlatformSDKs
    Si ces outils sont déjà présents sur le PC, nous pouvons les utiliser sans télécharger une autre version, mais il faudra configurer "Tools | Options | Environment Options | SDK Manager"
Côté du mobile
  • il faut que le mobile puisse communiquer avec le PC. De nombreux utilisateurs Android ont déjà fait le nécessaire. Si ce n'est pas le cas, il faut
    • installer sur le PC le pilote USB correspondant au(x) mobile(s) Android à utiliser
    • mettre le mobile en mode "USB Debug" ("Settings" etc)
    • et bien sûr, relier le mobile et le PC avec un cable USB


2.4 - Une première application Android

Voici les étapes pour afficher "Hello Android"
   connectez votre mobile au cable USB du PC
   le mobile demande d'accepter la connexion USB
   acceptez cette connexion
   le téléphone est affiché comme périphérique USB dans un explorateur Windows:

samsung_connected_thru_usb



Puis
   lancez Delphi Xe5
   sélectionnez "File | New | FireMonkey Mobile Application Delphi"

start_android_app

   un wizard présente plusieurs présentations :

select_android_app_type

   sélectionnez "Blank Application"

   le designer pour les mobiles est affiché, ici avec un dessin d'un iPhone 5

delphi_ide_mobile_designer

   sélectionnez la résolution correspondant à votre mobile dans combo-box en haut à droite du designer

mobile_resolution_selection

Nous avons sélectionné "Samsung Galaxy S4" correspondant à notre téléphone Samsung

   le designer est ajusté

   posez un tButton

hello_button

et dans OnClick, affichez un message

Procedure TForm2.Button1Click(SenderTObject);
  Begin
    ShowMessage('hello Android');
  End;

   sélectionnez la cible de déploiement dans le Project Manager en haut à gauche: cliquez le noeud "Project2 | Target Platform"

   les cibles potentielles sont affichées:

compiler_target_platform

   cliquez le noeud "Android | Target"

compiler_target_selection

Parmi les cibles possibles:

  • "Galaxy Nexus" qui correspond au téléphone Samsung que nous avons connecté au cable USB
  • rsxe5_android qui est la cible du modèle simulé par Delphi par défaut
  • les divers cibles que nous avions créées pour l'émulateur ("del_gal_nx4" etc)
   cliquez l'icône du téléphone physique, "Galaxy Nexus"

   compilez par Shift Ctrl F9 (la flèche verte)

   Delphi compile, lie (link), déploie l'application sur le téléphone et lance l'exécution dans la foulée. L'écran du téléphone affiche directement une fenêtre avec Button1, le clic sur le bouton affiche le message dans un dialogue

Voici un capture de l'écran d'accueil de mon Samsung:

galaxy_s3_screen

Parmi les applications, "Project2" (2/3 sud est) apparaît avec l'icône Firemonkey par défaut

phone_delphi_project2_app

Voici l'application qui apparaît après le déploiement et exécution par Delphi (ou le lancement depuis l'acran des applications):

delphi_app_execution

et le résultat du clic

delphi_app_execution_clic



Pour utiliser l'émulateur
   nous sélectionnons l'un des téléphones présenté dans "target", par exemple "del_gal_nex4_gpu" et compilons à nouveau

   si l'émulateur n'avait pas été lancé auparavant, Delphi nous demande s'il doit le lancer, en le lance. Le lancement de l'émulateur prend BEAUCOUP de temps la première fois (de l'ordre de la minute), et l'exécution d'une action sur l'émulateur sera très lente (un clic, un affichage etc)

Quoi qu'il en soit, voici notre émulateur affiché sur toute la hauteur de notre fenêtre Xp:

android_emulator

et voici l'image de notre application après avoir cliqué le bouton:

android_emulator_launch_click_



2.5 - Nouvelles fonctionnalités pour Android

  • "Tools | Options | Environment Options | Form Designer | Design Manager" permet de spécifier la cible par défaut:

    ide_option_device_manager

  • "Tools | Options | Environment Options | Sdk Manager" permet de désigner les chemins des outils Android (si vous n'utilisez pas les outils téléchargés par Delphi)

    ide_option_device_manager

  • chaque projet Android doit inclure les permissions concernant les traitements possibles. Par exemple une application a le droit d'envoyer un message SMS ou d'utiliser le téléphone. Delphi permet par défaut des traitements standards, mais nous pouvons en ajouter d'autres par "Project | Options | Uses Permissions":

    project_options_android_permissions

  • "Project | Options | Application" permet de définir les icônes, ou l'orientation

  • pour les bases de données locales
    • utilisation de SqLite et Interbase (IbTogo avec cryptage et IbLite)
    • connexion par dbExpress, Firedac, et Ibx (pour Interbase seulement)
  • connexions à des serveurs DataSnap distants (Tcp/Ip, Http, Https)
  • connexions aux serveurs Cloud Azure et Amazon

  • le code Pascal utilise la gestion mémoire ARC (Automatic Reference Counting)

  • les contrôles visuels sont
    • les contrôles FireMonkey usuels (boutons, listes etc)
    • quelques contrôles Java (calendrier, listes)



3 - Autres Nouveautés Delphi XE5

  • intégration de Firedac (la version Embarcadero de Any Dac)
  • une nouvelle librairie pour les clients service web REST
  • quelques refactorisation des classes Firemonkey
  • améliorations de IDE Insight
  • pour les développeurs Mac
    • support depuis l'IDE de MacInCloud (au lieu d'utiliser un Mac physique). MacInCloud est payant
    • style iOs7



4 - Commentaires

  • cette version est essentiellement centrée autour d'Android. Pas d'innovations majeures côté RTL / VCL pour les développeurs Windows
  • le développement Android est bien plus simple et moins contôlé que côté Apple (pas besoin d'un Mac pour compiler avant déploiement iOs, de contraintes sur le code, les vérfications avant acceptation dans la boutique etc).
  • la création d'une application simple (quelques boutons, listes etc) est très simple. Le développement d'applications plus complexes nécessitera une adaptation au monde du mobile (surface plus limitée, organisation par fenêtre plein écran, menu à une seule colonne etc). "Un seul source" est donc surtout valable pour le code non visuel. Et c'est là en général que se trouve la valeur métier des applications. Pour le code visuel, certaines factorisations sont possibles (tForm.FormFamily) ainsi que les mises à l'échelle offertes par le mode vectoriel FireMonkey, mais "un seul code Windows / Mac / iOs / Android téléphone / tablette" pour la partie interface graphique est naturellement illusoire
  • la polémique sémantique "natif" a été évoquée à nouveau ici ou là:
    • Embarcadero considère comme Natif leur utilisation de code du CPU ARM
    • d'autres mentionnent que la plateforme usuelle de développement Android est Java, et que sont "natifs" les outils qui fournissent du byte code Java (généré soit depuis le langage Java, soit depuis Delphi par certains outils)
    Avec l'accès à quelques composants Java (calendrier, listes) Delphi serait même partiellement natif selon cette seconde école.
    Mentionnons aussi que pour les tenants du "composants visuels java natifs", TMS a étendu l'accès aux composants java (par exemple leur listbox offre plus de propriétés, et plus de composants natifs sont disponibles).
  • comme Android ne factorise pas Firemonkey dans une .DLL commune à toutes nos applications, la taille d'un .APK Delphi est plus grande qu'un .APK Java (3 M pour une application Delphi minimale en mode "Release"). Notez que l'ajout de
      {$D1}
    avant
      {$R *.res}
    réduira la taille en mode "Debug".
  • les applications sur Android ont accès aux resources Android
    • téléphone et SMS
    • mails, internet (tWebBrowser Android), google maps etc
    • les capteurs (gyroscope, orientation, gps, accéléromètre)
    et des exemples simples figurent parmi les démos de base
  • Delphi offre, comme toujours, le source complet des librairies. Ce qui permet de se faire une idée de leur technique pour faire la passerelle avec Java en utilisant le JNI Bridge, et éventuellement accéder à d'autres composants et fonctionnalités d'Android, après pas mal de transpiration (BlueTooth)
  • pour les applications simples, un développement Delphi pur est suffisant. Pour les applications intensives, des notions minimales du monde Android seront utiles (utilisation d'ADB.EXE en mode commande, connaissance de l'organisation des répertoires Android, que fait réellement le bouton "back" etc)
  • pour le confort du développement, un matériel Android (un téléphone ou une tablette) est, à mon sens, impératif:
    • quelques soucis éventuellement pour connecter ce matériel au PC (les matériels bas de gamme n'ont pas toujours de driver USB officiel et fonctionnent éventuellement avec certains pilotes génériques). Google sera votre meilleur recours. Et ce n'est pas ici un problème Delphi mais un problème lié au périphérique. En revanche aucun souci pour les mobiles standard (Samsung, HTC etc)
    • mais quel gain de temps ensuite par rapport à l'émulateur. Déjà pour configurer un mobile particulier du configurateur il faut utilliser AVD.EXE (taille mémoire, utilisation du GPU etc). Ensuite, le lancement de l'émulateur est TRES lent (1 minute), chaque action (un clic) prend un temps considérable (10 secondes) et le retour arrière (back) réserve de temps en temps quelques surprises
    Vérifiez aussi que votre mobile utilise bien ArmV7 avec NEON. Les anciens mobiles ou les mobiles bas de gamme peuvent ne pas remplir les conditions. Pour le vérifier, après avoir connecté le mobile via USB, la frappe en mode commande (CMD.EXE) de
        adb -d shell cat /proc/cpuinfo
    fournit pour mon Samsung Galaxy
     
            Processor:        ARMv7 Processor rev 10 (v7l)      <=== ARMv7 
            processor:        0 
            BogoMIPS:         597.12 
            processor:        1 
            BogoMIPS:         597.12
    Features: swp half thumb fastmult vfp edsp thumbee neon vfpv3 <=== NEON CPU implementer: 0x41 CPU architecture: 7 CPU variant: 0x2 CPU part: 0xc09 CPU revision: 10
    Hardware: Tuna Revision: 0009 Serial: nnnnnnnnnnnnnnnn

  • côté packaging commercial, voyez le site Embarcadero. Pour faire bref, le développement Android sera possible avec les versions ProMobile ou Enterprise ou supérieur. Quant aux mises à jour entre les différentes versions, packages additionnels et niveau de produit, voyez aussi Embarcadero.

  • certaines personnes présentes aux présentations étaient un peu déçues par la concentration de l'effort sur Android pour cette version Xe5. Je préfère personnellement qu'Embarcadero ne se soit pas dispersé. Le manque de nouveautés WindowsVcl ne signifie pas du tout un abandon progressif de cette partie. Nombreux pensent aussi que les applications Android (ou les autres mobiles) seront souvent un complément à des familles d'application Desktop (fournir un moyen de consulter des données générées par une application Desktop, ou de saisir des données sur le terrain)
  • en sortant cette version Android si rapidement (initialement annoncée vers la fin de l'année) Embarcadero renoue avec son rythme annuel avec des sorties en Septembre. Il y aura vraissemblablement une certaine consolidation à attendre de cette partie "mobile". Et, compte tenu de la rapidité de lancement des produites mobiles (Android 4.3 KitKat, iOs7), peut être y aura-t-il aussi des versions intermédiaires.

  • sur un autre plan, j'ai été frappé par l'importance des services web REST. Jusqu'à présent je les avais surtout interprétés comme un moyen simplifié et plus flexible que SOAP utilisé par Google ou Amazon. La présentation de tous les clients accessibles par Tms Cloud Pack m'a un peu réveillé. REST d'une part, Cloud de l'autre sont à présent sur ma "todo list"


Comme d'habitude:
  • nous vous remercions de nous signaler toute erreur, inexactitude ou problème de téléchargement en envoyant un e-mail à jcolibri@jcolibri.com. Les corrections qui en résulteront pourront aider les prochains lecteurs
  • tous vos commentaires, remarques, questions, critiques, suggestion d'article, ou mentions d'autres sources sur le même sujet seront de même les bienvenus à jcolibri@jcolibri.com.
  • plus simplement, vous pouvez taper (anonymement ou en fournissant votre e-mail pour une réponse) vos commentaires ci-dessus et nous les envoyer en cliquant "envoyer" :
    Nom :
    E-mail :
    Commentaires * :
     

  • et si vous avez apprécié cet article, faites connaître notre site, ajoutez un lien dans vos listes de liens ou citez-nous dans vos blogs ou réponses sur les messageries. C'est très simple: plus nous aurons de visiteurs et de références Google, plus nous écrirons d'articles.


5 - Quelques Liens

Parmi les liens:

Et quelques articles de notre facture:
  • Première Application Delphi Xe3 FireDAC Embarcadéro offre depuis le 28 Février FireDAC, un ensemble de composants générique d'accès aux données (Multi-Device Data Access Library). Présentation de l'installation, première application utilisant tAdConnection et tAdQuery
  • Webminar Mobile Studio iOs Preview : résumé de la présentation - perspectives marketing des mobiles, démonstration de contrôles natifs, téléchargement et exécution sur Mac et le simulateur, bases de données (SqLite, Interbase, DataSnap), lecteur de flux RSS utilisant Indy et Rest pour DelphiFeeds
  • Roadmap Mobile Studio Delphi Xe3 : la feuille de route Mobile Studio a été publiée : compilateur ARM natif pour iOs et Android - calendrier prévisionnel (21 Sept 2012)
  • Delphi Xe4 iOs : le lancement de Delphi Xe4, la version de Delphi permettant le développement d'applications pour iOs (iPhone, iPad) depuis l'IDE Delphi : les compilateurs, le matériel nécessaire, les nouveautés du langage (ARC, Strings), les nouveaux composants FireMonkey, l'IDE, les bases de données. Liens vers les démos et les tutoriels. Android à l'horizon
  • Les versions Delphi principales nouveautés et identificateurs des versions Delphi

  • FireMonkey :
    • les animations FireMonkey : choix de la propriété à animer, vitesse, type d'interpolation entre les valeurs début et fin, répétition - Animation 3D. Que choisir: Vcl ou FireMonkey ?
    • Explorateur de Style FireMonkey : création d'objets tFmxObjects à partir de leur nom de classe, création de leur style défaut, affichage de la hiérarchie de style dans un tTreeView, présentation de chaque élément de style dans un Inspecteur d'Object qui peut être utilisé pour modifier les valeurs des propriétés.
    • Inspecteur d'Objet simple avec FireMonkey : création d'un Inspecteur d'Objet simple, présentant les composants présents sur la Forme et affichant les noms et valeurs de ses propriété, avec modifications possibles des propriétés à l'exécution. Utilisation de la RTTI, version pré et post Delphi 2010
    • Architecture FireMonkey : la hiérarchie tComponent <- tFmxObject <- Fmx.tControl <- tStyledControl. Diagramme de Classe UML avec les principaux composants et explication de l'emplacements des fonctionalités de base (le Canvas, la Souris, le Clavier).

  • nos formations incluent aussi la présentation FireMonkey



6 - L'auteur

John COLIBRI est passionné par le développement Delphi et les applications de Bases de Données. Il a écrit de nombreux livres et articles, et partage son temps entre le développement de projets (nouveaux projets, maintenance, audit, migration BDE, migration Xe_n, refactoring) pour ses clients, le conseil (composants, architecture, test) et la formation. Son site contient des articles avec code source, ainsi que le programme et le calendrier des stages de formation Delphi, base de données, programmation objet, Services Web, Tcp/Ip et UML qu'il anime personellement tous les mois, à Paris, en province ou sur site client.
Created: jan-04. Last updated: mar-2020 - 250 articles, 620 .ZIP sources, 3303 figures
Contact : John COLIBRI - Tel: 01.42.83.69.36 / 06.87.88.23.91 - email:jcolibri@jcolibri.com
Copyright © J.Colibri   http://www.jcolibri.com - 2001 - 2020
Retour:  Home  Articles  Formations  Développement Delphi  Livres  Pascalissime  Liens  Download
l'Institut Pascal

John COLIBRI

+ Home
  + articles_avec_sources
    + bases_de_donnees
    + web_internet_sockets
    + services_web_
    + prog_objet_composants
    + office_com_automation
    + colibri_utilities
    + uml_design_patterns
    + graphique
    + delphi
      – delphi_8_vcl_net
      – d8_windows_forms
      – turbo_delphi
      – les_versions_delphi
      – roadmap_delphi_6/7
      – ide_delphi_2006
      – rad_studio_2007
      – roadmap_delphi_4/8
      – raccourcis_clavier
      – delphi_prism
      – roadmap_delphi_8/10
      – demos_sourceforge
      – delphi_xe
      – migration_unicode
      – delphi_xe2
      – delphi_xe2_tour
      – roadmap_2011
      – maj_delphi_xe2_1
      – delphi_xe3_lancement
      – delphi_xe3_et_apres
      – delphi_xe3_infos
      – delphi_xe3_recap
      – roadmap_mobile_stu
      – delphi_xe4_ios
      – delphi_xe4_android
      – roadmap_delphi_2014
      – rachat_embarcadero
      + reunions_delphi
    + outils
    + firemonkey
    + vcl_rtl
    + colibri_helpers
    + colibri_skelettons
    + admin
  + formations
  + developpement_delphi
  + présentations
  + pascalissime
  + livres
  + entre_nous
  – télécharger

contacts
plan_du_site
– chercher :

RSS feed  
Blog