Guia de Desenvolvimento
Bem-vindo ao guia de desenvolvimento ELRS Mobile! Este projeto é uma implementação Flutter nativa do pipeline de compilação e flashing do ExpressLRS, projetado para funcionar inteiramente offline.
Pré-requisitos
Seção intitulada “Pré-requisitos”Para contribuir com este projeto, você precisará das seguintes ferramentas instaladas:
Primeiros Passos
Seção intitulada “Primeiros Passos”-
Clonar o repositório:
Terminal window git clone https://github.com/wbhinton/ELRS-Mobile.gitcd ELRS-Mobile -
Instalar dependências:
Terminal window flutter pub get -
Executar a aplicação:
Terminal window # Para Androidflutter run# Para iOS (requer um Mac e dispositivo físico/simulador)flutter run
Arquitetura do Projeto
Seção intitulada “Arquitetura do Projeto”A base de código segue uma estrutura focada em funcionalidades localizada em lib/src/.
Funcionalidades
- flashing/ A lógica central e a UI para o pipeline de flashing.
- firmware_manager/ Gerencia o download e o cache de firmware do artifactory.
- configurator/ UI para configurar opções do usuário como Binding Phrases e WiFi.
Núcleo
- networking/ Lógica específica da plataforma para vinculação de processo a hotspots de hardware.
- storage/ Gerenciamento de cache local e persistência SQLite.
- analytics/ Observabilidade com privacidade em primeiro lugar (Sentry e Aptabase).
Gerenciamento de Estado
Seção intitulada “Gerenciamento de Estado”Utilizamos Riverpod para gerenciamento de estado global e Flutter Hooks para estado local a nível de widget. Esta combinação garante uma UI altamente reativa sem a repetição de código (boilerplate) dos StatefulWidgets padrão.
Aprofundamentos
Seção intitulada “Aprofundamentos”Para informações técnicas mais detalhadas, consulte os seguintes guias:
- Arquitetura Técnica: Um aprofundamento no
FirmwareAssemblere na pilha de rede nativa. - Validação de Firmware: Como usar as ferramentas Dart e Python para verificar a integridade binária.
Nota sobre Minificação JSON
Seção intitulada “Nota sobre Minificação JSON”Ao auditar binários, você pode notar pequenas diferenças de byte em comparação com o Python Configurator padrão. Isso se deve à minificação JSON.
O Python Configurator frequentemente injeta espaços após os dois pontos (por exemplo, {"uid": [1,2,3]}), enquanto o ELRS Mobile gera JSON denso (por exemplo, {"uid":[1,2,3]}). Ambos são funcionalmente idênticos no hardware, pois o parser interno do ESP32 ignora este espaço em branco.