Entwicklungsleitfaden
Willkommen zum ELRS Mobile Entwicklungsleitfaden! Dieses Projekt ist eine native Flutter-Implementierung der ExpressLRS Kompilierungs- und Flash-Pipeline, die vollständig offline funktioniert.
Voraussetzungen
Abschnitt betitelt „Voraussetzungen“Um zu diesem Projekt beitragen zu können, müssen die folgenden Tools installiert sein:
Erste Schritte
Abschnitt betitelt „Erste Schritte“-
Repository klonen:
Terminal-Fenster git clone https://github.com/wbhinton/ELRS-Mobile.gitcd ELRS-Mobile -
Abhängigkeiten installieren:
Terminal-Fenster flutter pub get -
Anwendung ausführen:
Terminal-Fenster # Für Androidflutter run# Für iOS (erfordert einen Mac und ein physisches Gerät/Simulator)flutter run
Projektarchitektur
Abschnitt betitelt „Projektarchitektur“Die Codebasis folgt einer Feature-First-Struktur und befindet sich in lib/src/.
Features
- flashing/ Die Kernlogik und UI für die Flash-Pipeline.
- firmware_manager/ Verwaltet das Herunterladen und Caching von Firmware aus dem Artifactory.
- configurator/ UI zum Festlegen von Benutzeroptionen wie Binding Phrases und WiFi.
Core
- networking/ Plattformspezifische Logik für die Prozessbindung an Hardware-Hotspots.
- storage/ Lokale Cache-Verwaltung und SQLite-Persistenz.
- analytics/ Datenschutzorientierte Beobachtbarkeit (Sentry und Aptabase).
Zustandsverwaltung
Abschnitt betitelt „Zustandsverwaltung“Wir verwenden Riverpod für die globale Zustandsverwaltung und Flutter Hooks für den lokalen, Widget-Level-Zustand. Diese Kombination sorgt für eine hochreaktive Benutzeroberfläche ohne den Boilerplate-Code von Standard-StatefulWidgets.
Detaillierte Einblicke
Abschnitt betitelt „Detaillierte Einblicke“Für detailliertere technische Informationen beachten Sie bitte die folgenden Anleitungen:
- Technical Architecture: Ein tiefer Einblick in den
FirmwareAssemblerund den nativen Netzwerk-Stack. - Firmware Validation: Wie man die Dart- und Python-Tools zur Überprüfung der binären Integrität verwendet.
Hinweis zur JSON Minifizierung
Abschnitt betitelt „Hinweis zur JSON Minifizierung“Bei der Prüfung von Binärdateien können Sie geringfügige Byte-Abweichungen im Vergleich zum Standard Python Configurator feststellen. Dies liegt an der JSON minification.
Der Python Configurator fügt oft Leerzeichen nach Doppelpunkten ein (z. B. {"uid": [1,2,3]}), während ELRS Mobile dichtes JSON generiert (z. B. {"uid":[1,2,3]}). Beide sind auf der Hardware funktional identisch, da der interne Parser des ESP32 diese Leerzeichen ignoriert.