Hoppa till innehåll

Utvecklingsguide

Välkommen till ELRS Mobile utvecklingsguide! Detta projekt är en nativ Flutter-implementation av ExpressLRS kompilations- och flashningspipeline, designad att fungera helt offline.

För att bidra till detta projekt behöver du följande verktyg installerade:

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

  1. Klona repositoryt:

    Terminal window
    git clone https://github.com/wbhinton/ELRS-Mobile.git
    cd ELRS-Mobile
  2. Installera beroenden:

    Terminal window
    flutter pub get
  3. Kör applikationen:

    Terminal window
    # För Android
    flutter run
    # För iOS (kräver en Mac och fysisk enhet/simulator)
    flutter run

Kodbasen följer en funktionsfokuserad struktur som finns i lib/src/.

Funktioner

  • flashing/ Kärnlogiken och UI för flashing-pipelinen.
  • firmware_manager/ Hanterar nedladdning och cachning av firmware från artifactoryt.
  • configurator/ UI för att ställa in användaralternativ som Binding Phrases och WiFi.

Kärna

  • networking/ Plattformsspecifik logik för processbindning till hårdvaru-hotspots.
  • storage/ Lokal cachehantering och SQLite-persistens.
  • analytics/ Integritetsfokuserad observerbarhet (Sentry och Aptabase).

Vi använder Riverpod för global tillståndshantering och Flutter Hooks för lokal widget-nivå tillstånd. Denna kombination säkerställer ett mycket reaktivt användargränssnitt utan det tunga standardarbetet med StatefulWidgets.


För mer detaljerad teknisk information, se följande guider:

  • Teknisk Arkitektur: En fördjupning i FirmwareAssembler och den nativa nätverksstacken.
  • Firmware-validering: Hur man använder Dart- och Python-verktygen för att verifiera binär integritet.

Vid granskning av binärer kan du märka små byte-förskjutningar jämfört med den standardiserade Python Configurator. Detta beror på JSON-minifiering.

Python Configurator injicerar ofta mellanslag efter kolon (t.ex. {"uid": [1,2,3]}), medan ELRS Mobile genererar tät JSON (t.ex. {"uid":[1,2,3]}). Båda är funktionellt identiska på hårdvara, eftersom ESP32:s interna parser ignorerar detta mellanslag.