Outils pour utilisateurs

Outils du site


informatique:flutter:tips_tutos_examples

Ceci est une ancienne révision du document !


Tips, Tutos, Examples Flutter

Build optimisation

kDebugMode

kDebugMode étant un constante, le compilateur peut supprimer du code: Tree Shaking. Il faut donc l'utiliser pour réduire la taille de la compilation release.

J'ai vérifié en recherchant des chaînes de caractères dans app-release.apk/lib/x86_64/libapp.so : elles ne sont pas présentent si encapsulées dans un if( kDebugMode ){}

--split-debug-info

Pour compiler une release un peu plus légère

$ flutter build apk
23M app-release.apk
# installed: 43.19 MB
 
$ flutter build apk --split-debug-info=/tmp
22M app-release.apk
# installed: 42.17 MB
 
$ flutter build appbundle
42M app-release.aab
$ flutter build appbundle --split-debug-info=/tmp
40M app-release.aab

Secret Data in App

On ne peut pas avoir de secret stocké dans l'App, c'est certain. 😉

Par contre on peut le cacher pour le rendre plus difficile à découvrir.

flutter build apk \
  --release \
  --obfuscate \
  --split-debug-info=./debug_info \
  --dart-define=API_URL=https://myapi.com \
  --dart-define=API_KEY=super_secret_key
const apiUrl = String.fromEnvironment('API_URL');
const apiKey = String.fromEnvironment('API_KEY');

Mais dans la vraie vie on préférera mettre les secrets dans un fichier, en oubliant pas d'informer git de l'ignorer.

flutter build apk \
  --release \
  --obfuscate \
  --split-debug-info=./debug_info \
  --dart-define-from-file=config.prod.json

Et le fichier config.prod.json

{
  "API_URL": "https://myapi.com",
  "API_KEY": "super_secret_key",
  "FEATURE_X": "true",
  "CLIENT_ID": "xyz-123"
}

Notifications

Les notifications locales sont basées sur un tâche de fond périodique (Workmanager).

  • La programmation de la tâche est faite au démarrage de l'App.
  • Quand on tue l'App avec “Settings → Applications → MyApp → Force stop (Forcer l'arrêt)”, la programmation est annulée
    • TODO confirmer (ou pas) qu'après un long temps sans utilisation de l'App et que le système la tue la programmation n'est pas conservée …
  • Quand on reboot le device, la programmation est activée automatiquement, sans besoin de relancer l'App

Adaptative design

MediaQuery size

Device width height
iPhone SE 375.00 667.0
Galaxy A41 411.43 866.29
AVD small phone 360.0 592.00
AVD medium phone 411.43 866.29
AVD Pixel 8 Pro 448.00 949.33
AVD Pixel Tablet 1280.00 800.00

ListView

Async

Différence entre Future et Microtask : Mastering Flutter Microtasks for Optimal Performance. En conclusion, dans l' Event loop la Microtask est prioritaire par rapport à la Future.

Play Store

Voir Déploiement Play Console

Pour notamment:

  • com.android.vending.CHECK_LICENSE
  • Protection automatique désactivé

Voir aussi

App Store Connect

testeurs externes

Les “testeurs externes” voient les nouvelles versions après plusieurs heures/jours, tant que le build est “En attente de vérification” il ne les voient pas … 😩

iOS dev

Codemagic Remmina remote access

Codemagic.io

How to use remote access to Codemagic virtual MacOS build machine, la VM reste allumée 20 minutes. 🚀 500 minutes gratuites. 🍀

clients VNC : Remmina

Android dev

3 méthodes pour Android emulator access to local server. Le plus simple est d'utiliser https://10.0.2.2:3000.

informatique/flutter/tips_tutos_examples.1756713690.txt.gz · Dernière modification : de cyrille

Sauf mention contraire, le contenu de ce wiki est placé sous les termes de la licence suivante : CC0 1.0 Universal
CC0 1.0 Universal Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki