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örutsättningar
Section titled “Förutsättningar”För att bidra till detta projekt behöver du följande verktyg installerade:
Kom igång
Section titled “Kom igång”-
Klona repositoryt:
Terminal window git clone https://github.com/wbhinton/ELRS-Mobile.gitcd ELRS-Mobile -
Installera beroenden:
Terminal window flutter pub get -
Kör applikationen:
Terminal window # För Androidflutter run# För iOS (kräver en Mac och fysisk enhet/simulator)flutter run
Projektarkitektur
Section titled “Projektarkitektur”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).
Tillståndshantering
Section titled “Tillståndshantering”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ördjupningar
Section titled “Fördjupningar”För mer detaljerad teknisk information, se följande guider:
- Teknisk Arkitektur: En fördjupning i
FirmwareAssembleroch den nativa nätverksstacken. - Firmware-validering: Hur man använder Dart- och Python-verktygen för att verifiera binär integritet.
Anmärkning om JSON-minifiering
Section titled “Anmärkning om JSON-minifiering”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.