Salta ai contenuti

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.

Per contribuire a questo progetto, avrai bisogno dei seguenti strumenti installati:

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

  1. Clona il repository:

    Terminal window
    git clone https://github.com/wbhinton/ELRS-Mobile.git
    cd ELRS-Mobile
  2. Installa le dipendenze:

    Terminal window
    flutter pub get
  3. Esegui l’applicazione:

    Terminal window
    # Per Android
    flutter run
    # Per iOS (richiede un Mac e un dispositivo fisico/simulatore)
    flutter run

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

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.


Per informazioni tecniche più dettagliate, fare riferimento alle seguenti guide:


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.