Посібник розробника
Ласкаво просимо до посібника з розробки ELRS Mobile! Цей проєкт є нативною Flutter реалізацією конвеєра компіляції та прошивки ExpressLRS, розробленою для роботи повністю офлайн.
Передумови
Section titled “Передумови”Щоб зробити внесок у цей проєкт, вам знадобляться встановлені наступні інструменти:
Початок роботи
Section titled “Початок роботи”-
Клонуйте репозиторій:
Terminal window git clone https://github.com/wbhinton/ELRS-Mobile.gitcd ELRS-Mobile -
Встановіть залежності:
Terminal window flutter pub get -
Запустіть застосунок:
Terminal window # Для Androidflutter run# Для iOS (потрібен Mac та фізичний пристрій/симулятор)flutter run
Архітектура проєкту
Section titled “Архітектура проєкту”Кодова база дотримується структури, орієнтованої на функції, розташованої в lib/src/.
Функції
- flashing/ Основна логіка та інтерфейс користувача для конвеєра прошивки.
- firmware_manager/ Керує завантаженням та кешуванням прошивок з artifactory.
- configurator/ Інтерфейс користувача для встановлення користувацьких опцій, таких як Binding Phrases та WiFi.
Ядро
- networking/ Платформно-специфічна логіка для прив'язки процесів до апаратних точок доступу.
- storage/ Управління локальним кешем та збереженням даних у SQLite.
- analytics/ Observability з пріоритетом на конфіденційність (Sentry та Aptabase).
Управління станом
Section titled “Управління станом”Ми використовуємо Riverpod для глобального управління станом та Flutter Hooks для локального стану на рівні віджетів. Ця комбінація забезпечує високореактивний інтерфейс користувача без шаблонного коду стандартних StatefulWidgets.
Поглиблені огляди
Section titled “Поглиблені огляди”Для отримання більш детальної технічної інформації, будь ласка, зверніться до наступних посібників:
- Технічна архітектура: Детальний огляд
FirmwareAssemblerта нативного мережевого стека. - Перевірка прошивки: Як використовувати інструменти Dart та Python для перевірки цілісності бінарних файлів.
Примітка щодо мініфікації JSON
Section titled “Примітка щодо мініфікації JSON”Під час аудиту бінарних файлів ви можете помітити невеликі зміщення байтів порівняно зі стандартним Python Configurator. Це пов’язано з мініфікацією JSON.
Python Configurator часто вставляє пробіли після двокрапок (наприклад, {"uid": [1,2,3]}), тоді як ELRS Mobile генерує ��ільний JSON (наприклад, {"uid":[1,2,3]}). Обидва функціонально ідентичні на апаратному рівні, оскільки внутрішній парсер ESP32 ігнорує ці пробіли.