Перейти до вмісту

Посібник розробника

Ласкаво просимо до посібника з розробки ELRS Mobile! Цей проєкт є нативною Flutter реалізацією конвеєра компіляції та прошивки ExpressLRS, розробленою для роботи повністю офлайн.

Щоб зробити внесок у цей проєкт, вам знадобляться встановлені наступні інструменти:

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

  1. Клонуйте репозиторій:

    Terminal window
    git clone https://github.com/wbhinton/ELRS-Mobile.git
    cd ELRS-Mobile
  2. Встановіть залежності:

    Terminal window
    flutter pub get
  3. Запустіть застосунок:

    Terminal window
    # Для Android
    flutter run
    # Для iOS (потрібен Mac та фізичний пристрій/симулятор)
    flutter run

Кодова база дотримується структури, орієнтованої на функції, розташованої в lib/src/.

Функції

  • flashing/ Основна логіка та інтерфейс користувача для конвеєра прошивки.
  • firmware_manager/ Керує завантаженням та кешуванням прошивок з artifactory.
  • configurator/ Інтерфейс користувача для встановлення користувацьких опцій, таких як Binding Phrases та WiFi.

Ядро

  • networking/ Платформно-специфічна логіка для прив'язки процесів до апаратних точок доступу.
  • storage/ Управління локальним кешем та збереженням даних у SQLite.
  • analytics/ Observability з пріоритетом на конфіденційність (Sentry та Aptabase).

Ми використовуємо Riverpod для глобального управління станом та Flutter Hooks для локального стану на рівні віджетів. Ця комбінація забезпечує високореактивний інтерфейс користувача без шаблонного коду стандартних StatefulWidgets.


Для отримання більш детальної технічної інформації, будь ласка, зверніться до наступних посібників:


Примітка щодо мініфікації JSON

Section titled “Примітка щодо мініфікації JSON”

Під час аудиту бінарних файлів ви можете помітити невеликі зміщення байтів порівняно зі стандартним Python Configurator. Це пов’язано з мініфікацією JSON.

Python Configurator часто вставляє пробіли після двокрапок (наприклад, {"uid": [1,2,3]}), тоді як ELRS Mobile генерує ��ільний JSON (наприклад, {"uid":[1,2,3]}). Обидва функціонально ідентичні на апаратному рівні, оскільки внутрішній парсер ESP32 ігнорує ці пробіли.