Aller au contenu
Cheat Sheet
Android

Créer une application Android avec Flet

Voici un petit tutoriel pour faire une application Python qui pourra être utilisée sur toutes les plateformes (Windows, MacOS, Linux, Android, iOS).

Dans ce tutoriel, nous allons utiliser Python et la librairie Flet qui permet de créer une application avec Flutter, puis qui permettra de créer un exécutable ou un APK pour Android.

Prérequis

  • Python 3.11+

Création du projet

  • Dans le répertoire de notre projet, nous commençons par créer un environnement virtuel :
python -m venv venv
venv\Scripts\activate.bat
  • On installe les dépendances dont nous aurons besoin :
python -m pip install --upgrade pip
python -m pip install flet
  • On crée un nouveau projet :
flet create tuto
cd tuto

Cela a automatiquement créé un répertoire tuto dans lequel on retrouve :

  • assets : un répertoire avec la liste des dépendances.
  • main.py : le programme principal qui sera exécuté.
  • readme.md : un fichier de description.
  • requirements.txt : le fichier des dépendances.

Pour l’instant, le programme est très simple :

import flet as ft

def main(page: ft.Page):
    page.add(ft.SafeArea(ft.Text("Hello, Flet!")))

ft.app(main)

Exécuter le programme sous Windows

  • Pour exécuter le programme sous Windows, on exécute la commande suivante :
flet run

Exécuter le programme sous forme d’application web

  • Flet permet d’avoir un rendu web de notre application :
flet run --web

Tester l’application sous Android

  • Pour cela, il faut tout d’abord installer sur son appareil Android l’application Flet, disponible sur le Play Store.
  • On créé une instance distante avec la commande :
flet run --android

Sur son appareil Android, on utilise un lecteur de QR Code qui va ouvrir l’application Flet.

Créer un APK

Flet permet de créer un fichier de publication depuis une plateforme vers une plateforme selon la matrice suivante :

Depuis un ordinateur Windows, on peut créer un APK/AAB pour Android, un binaire Linux (en passant par WSL), un exécutable Windows ou une application web.

Prérequis

  • Le SDK Flutter doit être accessible dans le PATH : https://docs.flutter.dev/get-started/install
    • Télécharger et copier les fichiers dans un répertoire sans espace et ne nécessitant aucun privilège : https://docs.flutter.dev/get-started/install/windows/mobile?tab=download#download-then-install-flutter
    • Ajouter ce chemin dans la variable d’environnement PATH.
  • Si on ne souhaite pas s’embêter avec les versions de Java, Android SDK, etc… le plus simple est d’installer Android Studio.

Sinon, on peut installer les composants utiles uniquement :

  • JAVA_HOME doit contenir le chemin vers Java 17. Pour l’instant, Java 21 n’est pas supporté par la version de Gradle qui sera utilisée à la compilation.
  • Android Toolchain :
    • Android Command Line Tools : pour ne pas installer toute la suite « Android Studio », on peut se contenter d’installer les outils en ligne de commande : https://developer.android.com/studio#command-tools
      • Télécharger l’archive et décompresser.
      • Dans le répertoire cmdline-tools, créer un répertoire latest.
      • Déplacer tous les fichiers et répertoires qui étaient dans cmdline-tools pour les mettre dans cmdline-tools\latest\.
      • Dans le répertoire cmdline-tools\latest\bin\, exécuter sdkmanager --install "cmdline-tools;latest" et accepter les conditions d’utilisation.
    • Android SDK :
      • On peut voir la liste des SDK disponibles avec la commande sdkmanager --list.
      • On installe le SDK qu’on souhaite.
        Exemple pour la version 34 : sdkmanager "platform-tools" "platforms;android-34" "build-tools;34.0.0"
    • Licences Android acceptées :
      • On accepte toutes les licences avec sdkmanager --licenses.

Pour vérifier que toute la configuration est bonne, on peut utiliser la commande :

flutter doctor --verbose

Compilation

flet build apk

Et voilà ! Nous avons un fichier APK installable sur Android.

Pour aller plus loin

Flet propose plein de composant pour faire des application hyper personnalisées.

Pour plus d’informations, la documentation est plutôt bien faite : https://flet.dev/docs/controls

Quelques difficultés rencontrées

Utiliser un webview

Attention, certains composants nécessitent d’être spécifiquement ajoutés lors de la compilation (audio, video, webview, …). Pour cela on utilisera l’option --include-packages.
Exemple :

flet build apk --include-packages flet_webview

Si le webview a pour objectif d’afficher des pages servies en local, il est impératif que le serveur local soit en HTTPS, sinon le webview retournera une erreur err_cleartext_not_permitted.
Pour cela, on peut se créer un certificat avec la commande suivante :

openssl req -x509 -nodes -days 36500 -newkey rsa:2048 -keyout key.pem -out cert.pem

Attention à bien préciser 127.0.0.1 en tant que Common Name (e.g. server FQDN or YOUR name) !

Le certificat devra être utilisé par le serveur.
Par exemple :

def get_ssl_context(certfile, keyfile):
    context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
    context.load_cert_chain(certfile, keyfile)
    return context


def start_server():
    with ThreadedTCPServer(("localhost", PORT), http.server.SimpleHTTPRequestHandler) as httpd:
        context = get_ssl_context("cert.pem", "key.pem")
        httpd.socket = context.wrap_socket(httpd.socket, server_side=True)
        httpd.serve_forever()

Quelques commandes utiles pour faire un émulateur Android

Mettre à jour les outils du SDK

sdkmanager --update

Liste des images disponibles

sdkmanager --list

Liste des périphériques disponibles

avdmanager list device

Installer une image système Android 10 (API 29)

sdkmanager "system-images;android-29;google_apis;x86"

Créer un AVD nommé « my_avd » avec le périphérique « pixel »

avdmanager create avd -n my_avd -k "system-images;android-29;google_apis;x86" -d "pixel"

Lister les AVD disponibles (optionnel)

avdmanager list avd

Démarrer l’AVD « my_avd »

emulator -avd my_avd

Vérifier que l’émulateur est disponible

adb devices

Installer un APK

adb install path/to/your/app.apk

Lancer l’application

adb shell am start -n com.example.yourapp/.MainActivity

Voir les message de débogage

adb logcat
adb logcat | grep com.example.yourapp

Article rédigé par Yajusta.

Yajusta : Optimisez votre productivité avec des solutions sur-mesure.
💡 Vous avez une idée pour simplifier vos processus ?
⚙️ « Il y a juste à » la mettre en place ?
🚫 Mais vous n’avez pas les compétences techniques pour le faire ?
✅ Chez Yajusta, nous transformons vos défis en solutions concrètes.


https://www.yajusta.fr

Accéder à un serveur qui tourne sur Google Colab
Le serveur ADB ne démarre pas
adb advmanager android apk emulateur flet flutter gradle python sdkmanager

Articles similaires

Pylance / Pyright fait ramer…
Le serveur ADB ne démarre…
Accéder à un serveur qui…
[AndroidTV] Limiter l’utilisation de la…
[Python] Comment bien démarrer un…
[Python] Extraire une page PDF…
[Android] Désactiver une application built-in
[Python] Protocol
[Python] Liste de choix en…
[Python] Benedict : une autre…

Catégories

  • Android
  • Calibre
  • Docker
  • Excel
  • Git
  • Google Sheet
  • Knime
  • Linux
  • Logiciels
  • Matériel
  • Non classé
  • Notepad++
  • PHP
  • Power BI
  • Programmation
  • Python
  • Qlik
  • Service
  • Synology
  • Visual Studio Code
  • VSCode
  • Windows
  • Word
  • WordPress

Étiquettes

adb android apache audio calibre convertion css debian docker drivers excel fichiers firefox flask google grep html kobo linux manette markdown mp3 notepad++ office php pip portable privoxy python qlik qliksense qlikview realtek selenium synology tor venv vim virtualenv vscode web windows wordpress xargs youtube

Tags

adb android apache audio calibre convertion css debian docker drivers excel fichiers firefox flask google grep html kobo linux manette markdown mp3 notepad++ office php pip portable privoxy python qlik qliksense qlikview realtek selenium synology tor venv vim virtualenv vscode web windows wordpress xargs youtube
Thème par Colorlib Propulsé par WordPress