Zum Inhalt springen

Entwicklungsleitfaden

Willkommen zum ELRS Mobile Entwicklungsleitfaden! Dieses Projekt ist eine native Flutter-Implementierung der ExpressLRS Kompilierungs- und Flash-Pipeline, die vollständig offline funktioniert.

Um zu diesem Projekt beitragen zu können, müssen die folgenden Tools installiert sein:

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

  1. Repository klonen:

    Terminal-Fenster
    git clone https://github.com/wbhinton/ELRS-Mobile.git
    cd ELRS-Mobile
  2. Abhängigkeiten installieren:

    Terminal-Fenster
    flutter pub get
  3. Anwendung ausführen:

    Terminal-Fenster
    # Für Android
    flutter run
    # Für iOS (erfordert einen Mac und ein physisches Gerät/Simulator)
    flutter run

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).

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.


Für detailliertere technische Informationen beachten Sie bitte die folgenden Anleitungen:

  • Technical Architecture: Ein tiefer Einblick in den FirmwareAssembler und den nativen Netzwerk-Stack.
  • Firmware Validation: Wie man die Dart- und Python-Tools zur Überprüfung der binären Integrität verwendet.

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.