개발 가이드
ELRS Mobile 개발 가이드에 오신 것을 환영합니다! 이 프로젝트는 ExpressLRS 컴파일 및 플래싱 파이프라인의 네이티브 Flutter 구현이며, 완전히 오프라인으로 작동하도록 설계되었습니다.
필수 조건
섹션 제목: “필수 조건”이 프로젝트에 기여하려면 다음 도구가 설치되어 있어야 합니다:
Flutter SDK (안정 버전)
Dart SDK
Python 3.x
Cocoapods (iOS/macOS)
시작하기
섹션 제목: “시작하기”-
저장소 클론:
Terminal window git clone https://github.com/wbhinton/ELRS-Mobile.gitcd ELRS-Mobile -
종속성 설치:
Terminal window flutter pub get -
애플리케이션 실행:
Terminal window # Android용flutter run# iOS용 (Mac과 실제 기기/시뮬레이터 필요)flutter run
프로젝트 아키텍처
섹션 제목: “프로젝트 아키텍처”코드베이스는 lib/src/에 있는 기능 중심 구조를 따릅니다.
기능
- flashing/ 플래싱 파이프라인의 핵심 로직 및 UI.
- firmware_manager/ 아티팩토리에서 펌웨어 다운로드 및 캐싱을 처리합니다.
- configurator/ Binding Phrases 및 WiFi와 같은 사용자 옵션을 설정하는 UI.
핵심
- networking/ 하드웨어 핫스팟에 프로세스 바인딩을 위한 플랫폼별 로직.
- storage/ 로컬 캐시 관리 및 SQLite 영속성.
- analytics/ 프라이버시 중심의 관찰 가능성 (Sentry 및 Aptabase).
상태 관리
섹션 제목: “상태 관리”우리는 전역 상태 관리를 위해 Riverpod를 사용하고, 로컬 위젯 수준 상태를 위해 Flutter Hooks를 활용합니다. 이 조합은 표준 StatefulWidgets의 상용구 없이도 고도로 반응적인 UI를 보장합니다.
심층 분석
섹션 제목: “심층 분석”더 자세한 기술 정보는 다음 가이드를 참조하십시오:
- 기술 아키텍처:
FirmwareAssembler및 네이티브 네트워킹 스택에 대한 심층 분석. - 펌웨어 유효성 검사: Dart 및 Python 도구를 사용하여 바이너리 무결성을 확인하는 방법.
JSON Minification에 대한 참고
섹션 제목: “JSON Minification에 대한 참고”바이너리를 감사할 때, 표준 Python Configurator와 비교하여 약간의 바이트 오프셋을 발견할 수 있습니다. 이는 JSON minification 때문입니다.
Python Configurator는 종종 콜론 ���에 공백을 삽입하지만(예: {"uid": [1,2,3]}), ELRS Mobile은 압축된 JSON을 생성합니다(예: {"uid":[1,2,3]}). ESP32의 내부 파서가 이러한 공백을 무시하므로, 둘 다 하드웨어에서는 기능적으로 동일합니다.