Przewodnik deweloperski
Witaj w przewodniku rozwoju ELRS Mobile! Ten projekt to natywna implementacja Fluttera potoku kompilacji i flashowania ExpressLRS, zaprojektowana do działania całkowicie offline.
Wymagania wstępne
Dział zatytułowany „Wymagania wstępne”Aby przyczynić się do tego projektu, będziesz potrzebować zainstalowanych następujących narzędzi:
Rozpoczęcie pracy
Dział zatytułowany „Rozpoczęcie pracy”-
Sklonuj repozytorium:
Okno terminala git clone https://github.com/wbhinton/ELRS-Mobile.gitcd ELRS-Mobile -
Zainstaluj zależności:
Okno terminala flutter pub get -
Uruchom aplikację:
Okno terminala # Dla Androidaflutter run# Dla iOS (wymaga Maca i urządzenia fizycznego/symulatora)flutter run
Architektura projektu
Dział zatytułowany „Architektura projektu”Baza kodu ma strukturę zorientowaną na funkcje, zlokalizowaną w lib/src/.
Funkcje
- flashing/ Główna logika i interfejs użytkownika dla potoku flashowania.
- firmware_manager/ Zarządza pobieraniem i buforowaniem firmware z repozytorium artefaktów.
- configurator/ Interfejs użytkownika do ustawiania opcji użytkownika, takich jak Binding Phrases i WiFi.
Rdzeń
- networking/ Logika specyficzna dla platformy do wiązania procesów z hotspotami sprzętowymi.
- storage/ Zarządzanie lokalną pamięcią podręczną i trwałość SQLite.
- analytics/ Obserwowalność zorientowana na prywatność (Sentry i Aptabase).
Zarządzanie stanem
Dział zatytułowany „Zarządzanie stanem”Wykorzystujemy Riverpod do globalnego zarządzania stanem i Flutter Hooks do lokalnego stanu na poziomie widżetów. To połączenie zapewnia wysoce reaktywny interfejs użytkownika bez powtarzalnego kodu standardowych StatefulWidgets.
Szczegółowe Analizy
Dział zatytułowany „Szczegółowe Analizy”Aby uzyskać bardziej szczegółowe informacje techniczne, zapoznaj się z poniższymi przewodnikami:
- Architektura Techniczna: Szczegółowa analiza
FirmwareAssembleri natywnego stosu sieciowego. - Walidacja Firmware: Jak używać narzędzi Dart i Python do weryfikacji integralności binarnej.
Uwaga dotycząca minifikacji JSON
Dział zatytułowany „Uwaga dotycząca minifikacji JSON”Podczas audytu plików binarnych możesz zauważyć niewielkie różnice w liczbie bajtów w porównaniu ze standardowym Configuratorem Python. Wynika to z minifikacji JSON.
Configurator Python często wstawia spacje po dwukropkach (np. {"uid": [1,2,3]}), podczas gdy ELRS Mobile generuje gęsty JSON (np. {"uid":[1,2,3]}). Obie formy są funkcjonalnie identyczne na sprzęcie, ponieważ wewnętrzny parser ESP32 ignoruje te białe znaki.