コンテンツにスキップ

開発ガイド

ELRS Mobile開発ガイドへようこそ!このプロジェクトは、ExpressLRSのコンパイルおよびフラッシュパイプラインをネイティブのFlutterで実装したもので、完全にオフラインで動作するように設計されています。

このプロジェクトに貢献するには、以下のツールをインストールする必要があります。

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
    # For Android
    flutter run
    # For iOS (requires a Mac and physical device/simulator)
    flutter run

コードベースは lib/src/ にあるフィーチャーファースト構造に従っています。

Features

  • flashing/ フラッシュパイプラインのコアロジックとUI。
  • firmware_manager/ アーティファクトリからファームウェアをダウンロードおよびキャッシュする処理を扱います。
  • configurator/ Binding PhrasesやWiFiなどのユーザーオプションを設定するためのUI。

Core

  • networking/ ハードウェアホットスポットへのプロセスバインディングのためのプラット���ォーム固有のロジック。
  • storage/ ローカルキャッシュ管理とSQLiteによる永続化。
  • analytics/ プライバシーを重視したオブザーバビリティ(SentryとAptabase)。

グローバルな状態管理にはRiverpodを、ローカルなウィジェットレベルの状態にはFlutter Hooksを利用しています。この組み合わせにより、標準のStatefulWidgetsのような定型コードなしに、高い反応性のUIが実現されます。


詳細な技術情報については、以下のガイドを参照してください。

  • Technical Architecture: FirmwareAssemblerとネイティブネットワークスタックの詳細な解説。
  • Firmware Validation: バイナリの整合性を検証するためのDartおよびPythonツールを使用する方法。

バイナリを監査する際、標準のPython Configuratorと比較してわずかなバイトオフセットに気づくかもしれません。これはJSONミニファイによるものです。

Python Configuratorはコロンの後にスペースを挿入することがよくありますが(例: {"uid": [1,2,3]})、ELRS Mobileは密なJSONを生成します(例: {"uid":[1,2,3]})。ESP32の内部パーサーはこの空白を無視するため、どちらもハードウェア上では機能的に同一です。