FAQ LazarusConsultez toutes les FAQ
Nombre d'auteurs : 17, nombre de questions : 88, dernière mise à jour : 31 décembre 2023 Ajouter une question
Bienvenue dans la FAQ Lazarus.
Cette base de connaissances a essentiellement été construite avec le contenu de l'ancien forum officiel francophone dédié à Lazarus. Elle sera régulièrement alimentée avec le contenu du forum actuel. Les aspects propres au langage Pascal lui-même se trouvent dans la FAQ Pascal.
Cette FAQ collaborative est avant tout la vôtre ! Pour participer à son développement, vous pouvez directement y ajouter de nouvelles questions/réponses ou encore poster des propositions de corrections sur le forum Contribuez.
Bonne lecture !
L'équipe Pascal.
- Comment installer Lazarus pour Android à l'aide de LAMW Manager ?
- Comment créer une nouvelle application Android ?
- À quelles versions d'Android correspondent les versions du SDK ?
- Comment utiliser un smartphone Android pour déboguer mes applications ?
- Où stocker les ressources dessinables de mon application ?
- Où stocker des fichiers qui doivent être empaquetés avec mon application ?
- Comment importer des images pour les utiliser dans mon application ?
- Comment changer l'icône de mon application ?
- Comment créer une icône adaptive pour mon application ?
- Comment déterminer les emplacements par défaut du système ?
- Comment désactiver la mise en veille de l'écran dans mon application ?
- Comment créer une notification ?
- Comment réagir à une notification ?
LAMW Manager est l'outil le plus commode pour installer et configurer le framework Lazarus Android Module Wizard (LAMW), qui permet de créer des applications pour Android dans l'environnement de développement Lazarus. Il prend en charge l'installation du SDK Android et de Java (OpenJDK), ce qui vous dispense de les installer vous-même.
Notez que ce sont les versions 2.0.12 de Lazarus et 3.2.2 du compilateur Free Pascal qui servent de support.
Sous Linux :
Téléchargez et décompactez ce fichier : https://github.com/DanielOliveiraSou...ive/master.zip.
Exécutez l'assistant :
Code shell : | Sélectionner tout |
./lamw_manager --sdkmanager
Pour les mises à jour ultérieures :
Code shell : | Sélectionner tout |
./lamw_manager --update-lamw
Pour une réinstallation conservant la configuration :
Code shell : | Sélectionner tout |
./lamw_manager --reinstall
Pour une réinstallation complète :
Code shell : | Sélectionner tout |
./lamw_manager --reset
Sous Windows :
Téléchargez et exécutez cet installeur : https://raw.githubusercontent.com/Da...ager_setup.exe.
Allez dans le dossier C:\lamw_manager et exécutez en tant qu'administrateur le fichier de commandes lamw_manager.bat.
Pour les mises à jour : allez dans le dossier C:\lamw_manager et exécutez en tant qu'administrateur le fichier de commandes lamw_manager.bat.
Pour créer une application Android, utilisez le menu Projet / Nouveau projet... puis sélectionnez le type de projet LAMW [GUI] Android Module.
Dans le dialogue qui apparaît, définissez au minimum les champs suivants (les autres sont facultatifs) :
- Path to workspace [your projects folder] : c'est l'emplacement de votre espace de travail, où sont stockés tous vos projets ;
- New Project Name [or Select] : c'est le nom de votre projet.
D'autres champs vous permettent de définir finement la plate-forme cible de votre projet :
- NdkApi : c'est la version minimale du NDK (Android Native Development Kit), qui est l'interface de programmation orientée vers le matériel-cible ;
- Min. Device Api : c'est la version minimale du SDK (Software Development Kit), qui est une abstraction en bytecode Java indépendante du matériel ;
- Architecture/Instructions : c'est l'architecture-cible (processeur ARM 6, ARM 7, Intel x86, etc.) ;
- Android Theme : vous pouvez sélectionner un autre thème que celui par défaut, mais certains thèmes nécessitent d'installer des bibliothèques supplémentaires.
Si vous souhaitez que votre application puisse être distribuée sur un maximum d'appareils, vous pouvez définir une version minimale du SDK (Software Development Kit), soit au moment de la création du projet (premier lien ci-dessous), soit via le menu Projet / Options du projet... / [LAMW] Android Project Options.
Versions d'Android supportées par le SDK :
- Android 14 "Upside Down Cake" : version 34 ;
- Android 13 "Tiramisu" : version 33 ;
- Android 12 "Snow Cone" : version 31 ;
- Android 11 "Red Velvet Cake" : version 30 ;
- Android 10 "Q" : version 29 ;
- Android 9 "Pie" : version 28 ;
- Android 8 "Oreo" : version 26 ;
- Android 7 "Nougat" : version 24 ;
- Android 6 "Marshmallow" : version 23 ;
- Android 5 "Lollipop" : version 21 ;
- Android 4.4 "Kitkat" : version 19 ;
- Android 4.1 "Jellybean" : version 16.
Il va de soi que plus la version d'Android minimale visée est ancienne, moins de composants disponibles sur les palettes Android Bridges seront fonctionnels.
Il est tout-à-fait possible d'exécuter une application sur un smartphone ou une tablette Android, directement depuis l'environnement de développement Lazarus.
Le prérequis est d'activer le mode développeur sur le téléphone dans les paramètres :
- cherchez l'option À propos du téléphone ;
- affichez les informations sur le logiciel ;
- pressez 7 fois sur le numéro de version.
Un nouveau menu Options de développement s'affiche désormais dans les paramètres du téléphone. Il faut activer les options suivantes :
- Rester activé ;
- Débogage USB ;
- Vérifier les applis via USB.
Connectez votre smartphone à votre PC via le câble USB.
Pour exécuter l'application sur le téléphone depuis Lazarus, allez dans le menu Exécuter / [LAMW] Build Android apk and run. L'application est installée sur votre téléphone et exécutée ; elle restera installée et vous pourrez donc par la suite l'exécuter sans que votre téléphone soit connecté à votre PC.
LAMW s'attend à trouver les éléments dessinables de l'interface de l'application dans les ressources, qui sont stockées dans le dossier res du répertoire du projet. Pour les éléments dessinables, il y a plusieurs sous-dossiers qui correspondent à différentes résolutions, de la plus basse à la plus élevée (à titre indicatif, la taille approximative des images est donnée par rapport à la plus faible résolution) :
- drawable-ldpi : (fichiers png) ;
- drawable-mdpi (fichiers png) - taille x 1,33 ;
- mipmap-mdpi (fichiers webp) - taille x 1,33 ;
- drawable-hdpi (fichiers png) - taille x 2 ;
- mipmap-hdpi (fichiers webp) - taille x 2 ;
- drawable-xhdpi (fichiers png) - taille x 2,66 ;
- mipmap-xhdpi (fichiers webp) - taille x 2,66 ;
- drawable-xxhdpi (fichiers png) - taille x 4 ;
- mipmap-xxhdpi (fichiers webp) - taille x 4 ;
- mipmap-xxxhdpi (fichiers webp) - taille x 5,33.
Selon la version d'Android et la résolution de l'écran-cible, c'est l'image qui donnera le meilleur rendu qui sera affichée. Mais vous pouvez aussi vous contenter de stocker vos images dans le dossier drawable (tout court) ; dans ce cas, la résolution des images sera identique quelle que soit celle de l'écran.
Si votre application est accompagnée de fichiers (texte, images, binaires...), vous pouvez les déposer dans le dossier assets de votre projet.
Allez dans le menu Outils / [LAMW] Android Module Wizard de Lazarus et sélectionnez Use/Import Image/Picture. Dans le dialogue qui apparaît, vous pouvez cocher plusieurs emplacements :
- assets, pour par exemple importer des images qui seront utilisées dans un jImageList ;
- plusieurs emplacements drawable-xxx, pour importer des images dans les ressources.
Toutes les applications possèdent une icône par défaut : c'est déjà le cas avec Lazarus, où par défaut c'est une patte de tigre, et c'est aussi le cas avec LAMW, où il s'agit soit d'un petit logo vert Android, soit d'un petit lémurien. Il est bien sûr possible de remplacer l'icône par défaut par l'icône de votre choix, mais attention : cela ne se fait pas du tout de la même façon que dans les applications classiques de Lazarus.
Tout d'abord, il faut savoir que votre icône devra obligatoirement porter le nom ic_launcher. Il existe deux type d'icônes, selon la résolution et la version d'Android visée :
- ic_launcher.png ;
- ic_launcher.webp et ic_launcher_round.webp (version ronde de l'icône).
Idéalement, il est bon de fournir plusieurs tailles d'icônes et de les stocker dans les ressources (dossier res du projet). Voyez à ce sujet la question de FAQ dont le lien figure ci-dessous. À titre indicatif, voici les tailles d'images attendues :
- drawable-ldpi : ic_launcher.png 36*36 ;
- drawable-mdpi : ic_launcher.png 48*48 ;
- mipmap-mdpi : ic_launcher.webp et ic_launcher_round.webp 48*48 ;
- drawable-hdpi : ic_launcher.png 72*72 ;
- mipmap-hdpi : ic_launcher.webp et ic_launcher_round.webp 72*72 ;
- drawable-xhdpi : ic_launcher.png 96*96 ;
- mipmap-xhdpi : ic_launcher.webp et ic_launcher_round.webp 96*96 ;
- drawable-xxhdpi : ic_launcher.png 144*144;
- mipmap-xxhdpi : ic_launcher.webp et ic_launcher_round.webp 144*144 ;
- mipmap-xxxhdpi : ic_launcher.webp et ic_launcher_round.webp 192*192.
Il est possible de laisser à Lazarus le soin de créer toutes les résolutions des icônes à partir d'une seule. Dans Lazarus, allez dans le menu Projet / Options du projet / [LAMW] Android Project Options puis dans l'onglet Application. Choisissez une résolution dans la liste figurant sous Launcher icon puis votre icône que vous aurez stockée dans le sous-dossier drawable (tout court). Par exemple, si vous avez placé une seule icône de 96*96 pixels et que vous la sélectionnez, les autres seront crées automatiquement ; toutefois, le rendu n'est pas toujours optimal et les icônes de plus hautes résolutions peuvent parfois apparaître pixellisées.
Plutôt que de simples images PNG ou WEBP, les versions récentes d'Android attendent une nouvelle génération d'icônes : les icônes adaptives. Il s'agit en réalité de fichiers XML permettant de composer l'icône de votre application à partir d'images contenues dans les ressources. Cela nécessite deux images :
- une image de fond, ic_launcher_background ;
- l'image principale, ic_launcher_foreground.
LAMW ne permet pas nativement de créer automatiquement des icônes adaptives. Voici comment le faire assez simplement à la main.
Répartissez, dans les différents dossiers res/mipmapxxx, vos icônes selon la résolution attendue (voyez à ce sujet le premier lien ci-dessous). Nommez-les toutes ic_launcher_foreground.png. Rajoutez, avec la même résolution, une image de fond (qui peut être une couleur unie, un dégradé, une image...) que vous appellerez ic_launcher_background.png.
Dans le dossier res/mipmap-anydpi-v26, éditez les fichiers ic_launcher.xml (et éventuellement ic_launcher_round.xml) :
Code xml : | Sélectionner tout |
1 2 3 4 5 | <?xml version="1.0" encoding="utf-8"?> <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> <background android:drawable="@mipmap/ic_launcher_background"/> <foreground android:drawable="@mipmap/ic_launcher_foreground"/> </adaptive-icon> |
Vous pouvez déterminer les dossiers par défaut du système sur lesquel tourne votre application à l'aide de la méthode GetEnvironmentDirectoryPath de la fenêtre principale, par exemple :
Code Pascal : | Sélectionner tout |
MyAppDirectory := Self.GetEnvironmentDirectoryPath(dirInternalAppStorage);
Voici les principaux emplacements qui peuvent être déterminés de cette manière :
- le dossier où se trouve l'application : dirInternalAppStorage (dans l'exemple ci-dessus) ;
- les téléchargements : dirDownloads ;
- les documents : dirDocuments - uniquement pour les versions récentes d'Android ;
- la musique : dirMusic ;
- les images : dirPictures ;
- les vidéos : dirMovies ;
- le stockage secondaire : dirSdCard ;
- les bases de données : dirDatabase.
Il peut être opportun de désactiver temporairement la mise en veille de l'écran du smartphone ou de la tablette pendant l'exécution de l'application. Pour ce faire, il suffit d'ajouter cette ligne (par exemple, lors de l'initialisation de l'application, dans la méthode AndroidModule1JNIPrompt) :
Code Pascal : | Sélectionner tout |
Self.SetKeepScreenOn(True);
Depuis la palette Android Bridges Extra, déposez un composant jNotificationManager n'importe où sur la fiche de travail.
Voici un exemple de code permettant de générer une notification. Sont successivement définis :
- le texte de la notification - il est à noter qu'il n'y a pas de retour à la ligne possible ;
- l'espace de nommage de l'application tel qu'attendu par Android : "domaine.éditeur.nomapplication" (le domaine et l'éditeur sont définis, à la création de l'application, dans le champ Default Package Name du dialogue de création) ;
- la classe d'activité (ici c'est bien entendu une application) ;
- une valeur personnalisée permettant à l'application de réagir à la notification (voir le lien ci-dessous) ;
- le titre de la notification.
Code Pascal : | Sélectionner tout |
1 2 3 | NotificationManager.Subject := 'Contenu de la notification'; NotificationManager.SetContentIntent('org.alcatiz.monapplication', 'App', 'Valeur personnalisée', 'Titre de la notification'); NotificationManager.Notify; |
Concrètement, la notification créée contiendra :
- l'icône et le nom de l'application ;
- le titre en gras ;
- le texte de la notification.
Pour permettre à une application ouverte par une notification d'éventuellement adopter un comportement particulier en fonction de la notification, il faut créer un gestionnaire répondant à l'événement OnActivityCreate de la fenêtre principale. Par exemple (voir la notification créée à la Q/R précédente - lien ci-dessous) :
Code Pascal : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 | procedure TfrmMain.frmMainActivityCreate(Sender : TObject; AIntentData : jObject); var LExtraString : String; begin LExtraString := IntentManager.GetExtraString(AIntentData, 'Valeur personnalisée'); if LExtraString <> '' then { . . . } end; |
Proposer une nouvelle réponse sur la FAQ
Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour çaLes sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.