Vývojová příručka
Vítejte v průvodci vývojem ELRS Mobile! Tento projekt je nativní Flutter implementace pipeline kompilace a flashování ExpressLRS, navržená tak, aby fungovala zcela offline.
Předpoklady
Section titled “Předpoklady”Pro přispívání k tomuto projektu budete potřebovat nainstalované následující nástroje:
Začínáme
Section titled “Začínáme”-
Klonování repozitáře:
Terminál git clone https://github.com/wbhinton/ELRS-Mobile.gitcd ELRS-Mobile -
Instalace závislostí:
Terminál flutter pub get -
Spuštění aplikace:
Terminál # Pro Androidflutter run# Pro iOS (vyžaduje Mac a fyzické zařízení/simulátor)flutter run
Architektura projektu
Section titled “Architektura projektu”Kódová základna se řídí strukturou orientovanou na funkce, která se nachází v lib/src/.
Features
- flashing/ Základní logika a uživatelské rozhraní pro pipeline flashování.
- firmware_manager/ Spravuje stahování a ukládání firmwaru z úložiště (artifactory).
- configurator/ Uživatelské rozhraní pro nastavení uživatelských možností jako Binding Phrases a WiFi.
Core
- networking/ Logika specifická pro platformu pro vázání procesů k hardwarovým hotspotům.
- storage/ Správa lokální cache a perzistence SQLite.
- analytics/ Observabilita s důrazem na soukromí (Sentry a Aptabase).
Správa stavu
Section titled “Správa stavu”Pro správu globálního stavu využíváme Riverpod a pro lokální stav na úrovni widgetů Flutter Hooks. Tato kombinace zajišťuje vysoce reaktivní uživatelské rozhraní bez složitosti standardních StatefulWidgets.
Podrobné informace
Section titled “Podrobné informace”Pro podrobnější technické informace se prosím podívejte na následující průvodce:
- Technická architektura: Podrobný pohled na
FirmwareAssemblera nativní síťový zásobník. - Validace firmwaru: Jak používat nástroje Dart a Python k ověření integrity binárních souborů.
Poznámka k minifikaci JSONu
Section titled “Poznámka k minifikaci JSONu”Při auditu binárních souborů si můžete všimnout mírných posunů bajtů ve srovnání se standardním Python Configuratorem. To je způsobeno minifikací JSONu.
Python Configurator často vkl��dá mezery za dvojtečky (např. {"uid": [1,2,3]}), zatímco ELRS Mobile generuje hustý JSON (např. {"uid":[1,2,3]}). Oba jsou na hardwaru funkčně identické, protože interní parser ESP32 tyto mezery ignoruje.