Guida allo Sviluppo
Benvenuti nella guida allo sviluppo di ELRS Mobile! Questo progetto è un’implementazione nativa Flutter della pipeline di compilazione e flashing di ExpressLRS, progettata per funzionare interamente offline.
Prerequisiti
Sezione intitolata “Prerequisiti”Per contribuire a questo progetto, avrai bisogno dei seguenti strumenti installati:
Per iniziare
Sezione intitolata “Per iniziare”-
Clona il repository:
Terminal window git clone https://github.com/wbhinton/ELRS-Mobile.gitcd ELRS-Mobile -
Installa le dipendenze:
Terminal window flutter pub get -
Esegui l’applicazione:
Terminal window # Per Androidflutter run# Per iOS (richiede un Mac e un dispositivo fisico/simulatore)flutter run
Architettura del Progetto
Sezione intitolata “Architettura del Progetto”Il codice segue una struttura incentrata sulle funzionalità e si trova in lib/src/.
Funzionalità
- flashing/ La logica principale e l'UI per la pipeline di flashing.
- firmware_manager/ Gestisce il download e la cache del firmware dall'artifactory.
- configurator/ UI per impostare le opzioni utente come Binding Phrases e WiFi.
Core
- networking/ Logica specifica della piattaforma per il binding di processo a hotspot hardware.
- storage/ Gestione della cache locale e persistenza SQLite.
- analytics/ Osservabilità privacy-first (Sentry e Aptabase).
Gestione dello Stato
Sezione intitolata “Gestione dello Stato”Utilizziamo Riverpod per la gestione dello stato globale e Flutter Hooks per lo stato a livello di widget locale. Questa combinazione assicura un’interfaccia utente altamente reattiva senza il boilerplate dei StatefulWidgets standard.
Approfondimenti
Sezione intitolata “Approfondimenti”Per informazioni tecniche più dettagliate, fare riferimento alle seguenti guide:
- Architettura Tecnica: Un approfondimento sul
FirmwareAssemblere lo stack di networking nativo. - Validazione del Firmware: Come utilizzare gli strumenti Dart e Python per verificare l’integrità binaria.
Nota sulla Minificazione JSON
Sezione intitolata “Nota sulla Minificazione JSON”Quando si verificano i binari, si potrebbero notare leggere differenze di byte rispetto al Python Configurator standard. Ciò è dovuto alla minificazione JSON.
Il Python Configurator spesso inserisce spazi dopo i due punti (ad esempio, {"uid": [1,2,3]}), mentre ELRS Mobile genera JSON denso (ad esempio, {"uid":[1,2,3]}). Entrambi sono funzionalmente identici sull’hardware, poiché il parser interno dell’ESP32 ignora questo spazio bianco.