Aller au contenu

Guide de développement

Bienvenue dans le guide de développement ELRS Mobile ! Ce projet est une implémentation Flutter native du pipeline de compilation et de flashage ExpressLRS, conçu pour fonctionner entièrement hors ligne.

Pour contribuer à ce projet, vous aurez besoin des outils suivants installés :

Flutter SDK (Stable) Dart SDK Python 3.x Cocoapods (iOS/macOS)

  1. Cloner le dépôt :

    Fenêtre de terminal
    git clone https://github.com/wbhinton/ELRS-Mobile.git
    cd ELRS-Mobile
  2. Installer les dépendances :

    Fenêtre de terminal
    flutter pub get
  3. Exécuter l’application :

    Fenêtre de terminal
    # Pour Android
    flutter run
    # Pour iOS (nécessite un Mac et un appareil physique/simulateur)
    flutter run

La base de code suit une structure axée sur les fonctionnalités, située dans lib/src/.

Fonctionnalités

  • flashing/ La logique centrale et l'interface utilisateur pour le pipeline de flashage.
  • firmware_manager/ Gère le téléchargement et la mise en cache du firmware depuis l'artifactory.
  • configurator/ Interface utilisateur pour la configuration des options utilisateur comme les Binding Phrases et le WiFi.

Noyau

  • networking/ Logique spécifique à la plateforme pour la liaison de processus aux points d'accès matériels.
  • storage/ Gestion du cache local et persistance SQLite.
  • analytics/ Observabilité axée sur la confidentialité (Sentry et Aptabase).

Nous utilisons Riverpod pour la gestion d’état global et Flutter Hooks pour l’état local au niveau des widgets. Cette combinaison assure une interface utilisateur très réactive sans le code passe-partout des StatefulWidgets standards.


Pour des informations techniques plus détaillées, veuillez consulter les guides suivants :


Lors de l’audit des binaires, vous pourriez remarquer de légers décalages d’octets par rapport au Configurator Python standard. Cela est dû à la minification JSON.

Le Configurator Python injecte souvent des espaces après les deux-points (par exemple, {"uid": [1,2,3]}), tandis qu’ELRS Mobile génère du JSON dense (par exemple, {"uid":[1,2,3]}). Les deux sont fonctionnellement identiques sur le matériel, car l’analyseur interne de l’ESP32 ignore ces espaces blancs.