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.
Prérequis
Section intitulée « Prérequis »Pour contribuer à ce projet, vous aurez besoin des outils suivants installés :
Pour commencer
Section intitulée « Pour commencer »-
Cloner le dépôt :
Fenêtre de terminal git clone https://github.com/wbhinton/ELRS-Mobile.gitcd ELRS-Mobile -
Installer les dépendances :
Fenêtre de terminal flutter pub get -
Exécuter l’application :
Fenêtre de terminal # Pour Androidflutter run# Pour iOS (nécessite un Mac et un appareil physique/simulateur)flutter run
Architecture du projet
Section intitulée « Architecture du projet »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).
Gestion d’état
Section intitulée « Gestion d’état »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.
Plongées techniques
Section intitulée « Plongées techniques »Pour des informations techniques plus détaillées, veuillez consulter les guides suivants :
- Architecture Technique : Une plongée approfondie dans le
FirmwareAssembleret la pile réseau native. - Validation du Firmware : Comment utiliser les outils Dart et Python pour vérifier l’intégrité binaire.
Remarque sur la minification JSON
Section intitulée « Remarque sur la minification JSON »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.