콘텐츠로 이동

개발 가이드

ELRS Mobile 개발 가이드에 오신 것을 환영합니다! 이 프로젝트는 ExpressLRS 컴파일 및 플래싱 파이프라인의 네이티브 Flutter 구현이며, 완전히 오프라인으로 작동하도록 설계되었습니다.

이 프로젝트에 기여하려면 다음 도구가 설치되어 있어야 합니다:

Flutter SDK (안정 버전) 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/ 플래싱 파이프라인의 핵심 로직 및 UI.
  • firmware_manager/ 아티팩토리에서 펌웨어 다운로드 및 캐싱을 처리합니다.
  • configurator/ Binding Phrases 및 WiFi와 같은 사용자 옵션을 설정하는 UI.

핵심

  • networking/ 하드웨어 핫스팟에 프로세스 바인딩을 위한 플랫폼별 로직.
  • storage/ 로컬 캐시 관리 및 SQLite 영속성.
  • analytics/ 프라이버시 중심의 관찰 가능성 (Sentry 및 Aptabase).

우리는 전역 상태 관리를 위해 Riverpod를 사용하고, 로컬 위젯 수준 상태를 위해 Flutter Hooks를 활용합니다. 이 조합은 표준 StatefulWidgets의 상용구 없이도 고도로 반응적인 UI를 보장합니다.


더 자세한 기술 정보는 다음 가이드를 참조하십시오:


바이너리를 감사할 때, 표준 Python Configurator와 비교하여 약간의 바이트 오프셋을 발견할 수 있습니다. 이는 JSON minification 때문입니다.

Python Configurator는 종종 콜론 ���에 공백을 삽입하지만(예: {"uid": [1,2,3]}), ELRS Mobile은 압축된 JSON을 생성합니다(예: {"uid":[1,2,3]}). ESP32의 내부 파서가 이러한 공백을 무시하므로, 둘 다 하드웨어에서는 기능적으로 동일합니다.