Guía de desarrollo
¡Bienvenido a la guía de desarrollo de ELRS Mobile! Este proyecto es una implementación nativa en Flutter del pipeline de compilación y flasheo de ExpressLRS, diseñado para funcionar completamente sin conexión.
Requisitos Previos
Sección titulada «Requisitos Previos»Para contribuir a este proyecto, necesitarás las siguientes herramientas instaladas:
Primeros Pasos
Sección titulada «Primeros Pasos»-
Clonar el repositorio:
Ventana de terminal git clone https://github.com/wbhinton/ELRS-Mobile.gitcd ELRS-Mobile -
Instalar dependencias:
Ventana de terminal flutter pub get -
Ejecutar la aplicación:
Ventana de terminal # Para Androidflutter run# Para iOS (requiere una Mac y un dispositivo físico/simulador)flutter run
Arquitectura del Proyecto
Sección titulada «Arquitectura del Proyecto»El código base sigue una estructura centrada en características, ubicada en lib/src/.
Características
- flashing/ La lógica central y la interfaz de usuario para el pipeline de flashing.
- firmware_manager/ Gestiona la descarga y el almacenamiento en caché del firmware desde el artifactory.
- configurator/ Interfaz de usuario para configurar opciones de usuario como Binding Phrases y WiFi.
Núcleo
- networking/ Lógica específica de la plataforma para la vinculación de procesos a puntos de acceso de hardware.
- storage/ Gestión de caché local y persistencia de SQLite.
- analytics/ Observabilidad centrada en la privacidad (Sentry y Aptabase).
Gestión de Estado
Sección titulada «Gestión de Estado»Utilizamos Riverpod para la gestión de estado global y Flutter Hooks para el estado local a nivel de widget. Esta combinación asegura una interfaz de usuario altamente reactiva sin la sobrecarga de los StatefulWidgets estándar.
Análisis Detallado
Sección titulada «Análisis Detallado»Para obtener información técnica más detallada, consulta las siguientes guías:
- Arquitectura Técnica: Un análisis detallado del
FirmwareAssemblery la pila de red nativa. - Validación de Firmware: Cómo usar las herramientas de Dart y Python para verificar la integridad binaria.
Nota sobre la Minificación de JSON
Sección titulada «Nota sobre la Minificación de JSON»Al auditar binarios, podrías notar ligeras diferencias de bytes en comparación con el Python Configurator estándar. Esto se debe a la minificación de JSON.
El Python Configurator a menudo inyecta espacios después de los dos puntos (por ejemplo, {"uid": [1,2,3]}), mientras que ELRS Mobile genera JSON denso (por ejemplo, {"uid":[1,2,3]}). Ambos son funcionalmente idénticos en el hardware, ya que el analizador interno del ESP32 ignora estos espacios en blanco.