Guide technique pour la compilation d'applications Flet en format APK

Configuration de l'environnement Flutter

La première étape consiste à préparer l'écosystème Flutter, indispensable au fonctionnement de Flet pour mobile. Téléchargez le SDK Flutter officiel et configurez vos variables d'environnement système pour inclure le chemin vers le dossier bin.

Pour optimiser le téléchargement des dépendances dans certaines régions, il est parfois nécessaire de modifier les sources de téléchargement au sein du SDK. Localisez le fichier suivant dans votre installation :

flutter/packages/flutter_tools/lib/src/http_host_validator.dart

Vous pouvez ajuster les constantes d'hôtes pour pointer vers des miroirs plus rapides si le réseau standard est instable :

// Exemple de modification des constantes d'hôtes
const String kBaseCloudHost = 'https://storage.googleapis.com/';
const String kPubDevHost = 'https://pub.dev/';
const String kGitHubMirror = 'https://kkgithub.com/'; // Miroir alternatif
const String kMavenCentralAlt = 'https://maven.aliyun.com/nexus/content/groups/public/';

Après toute modification interne du SDK, purgez le cache des outils Flutter et vérifiez l'état de l'installation :

# Nettoyage du cache
rm flutter/bin/cache/flutter_tools.*

# Vérification globale
flutter doctor

Préparation de l'environnement Android

L'installation d'Android Studio est requise pour obtenir les outils de construction nécessaires. Via le SDK Manager, installez les composants spécifiques suivants :

  • Android SDK Platform (versions 31, 33 et 34 recommandées).
  • SDK Build-Tools.
  • NDK (version 25.1.8937393 ou supérieure).
  • CMake 3.22.1.
  • Android SDK Command-line Tools.

Une fois l'installation terminée, validez les licences Android via votre terminal :

flutter doctor --android-licenses

Personnalisation du pipeline de build Flet

Par défaut, Flet utilise le package serious_python pour intégrer l'interpréteur Python dans l'APK. Pour un contrôle total sur le processus de compilation, notamment en cas d'échec de téléchargement des ressources distantes, il est préférable de travailler avec une copie locale du template.

Récupérez le dossier de template situé généralement dans ~/.cookiecutters/flet-build-template. Si vous devez modifier les versions de serious_python, éditez le fichier pubspec.yaml à l'intérieur du template :

# flet-build-template/{{cookiecutter.out_dir}}/pubspec.yaml
dependencies:
  serious_python:
    path: /votre/chemin/local/vers/serious_python_package

De même, pour accélérer la résolution de Gradle, modifiez le fichier de configuration des propriétés du wrapper :

# android/gradle/wrapper/gradle-wrapper.properties
distributionUrl=https://mirrors.cloud.tencent.com/gradle/gradle-8.7-bin.zip

Gestion des archives Python natives

Le module serious_python_android doit récupérer une archive contenant l'environnement Python compilé pour Android. Si la connexion vers GitHub est lente, modifiez le script de téléchargement dans le fichier build.gradle du plugin :

// serious_python_android/android/build.gradle
task fetchPythonRuntime(type: Download) {
    def targetUrl = "https://miroir-local.org/flet-dev/serious-python/releases/download/v${version}/python-android-dist-v${version}.tar.gz"
    src targetUrl
    dest new File(buildDir, "python-dist.tar.gz")
}

Pour le packaging des dépendances Python lors de la phase de pré-build, vous pouvez également spécifier un miroir pour les releases de python-build-standalone dans le fichier package_command.dart :

// Localisation du fichier : bin/package_command.dart
// Modification de l'URL de base pour l'archive Python
final String pythonReleaseUrl = "https://github.com/indygreg/python-build-standalone/releases/download/20231002/$archiveName";

Exécution de la compilation finale

Une fois l'environnement et les templates configurés, lancez la commande de build en pointant vers votre dossier de template personnalisé. L'utilisation du mode verbeux (-vv) est fortement recommandée pour identifier les blocages potentiels lors du premier build.

# Commande de compilation avec template personnalisé
flet build apk --template "/chemin/vers/flet-build-template-local" -vv

Le fichier APK généré se trouvera dans le répertoire build/apk de votre projet. Notez que la première compilation est significativement plus longue car elle nécessite le téléchargement et la mise en cache de toutes les dépendances Maven, Gradle et des runtimes Python.

Étiquettes: Flet Flutter Android Python APK

Publié le 2 septembre à 23h01