開発ガイド
ELRS Mobile開発ガイドへようこそ!このプロジェクトは、ExpressLRSのコンパイルおよびフラッシュパイプラインをネイティブのFlutterで実装したもので、完全にオフラインで動作するように設計されています。
このプロジェクトに貢献するには、以下のツールをインストールする必要があります。
Flutter SDK (Stable)
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 # For Androidflutter run# For iOS (requires a Mac and physical device/simulator)flutter run
プロジェクトアーキテクチャ
Section titled “プロジェクトアーキテクチャ”コードベースは 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ツールを使用する方法。
JSONミニファイに関する注意
Section titled “JSONミニファイに関する注意”バイナリを監査する際、標準のPython Configuratorと比較してわずかなバイトオフセットに気づくかもしれません。これはJSONミニファイによるものです。
Python Configuratorはコロンの後にスペースを挿入することがよくありますが(例: {"uid": [1,2,3]})、ELRS Mobileは密なJSONを生成します(例: {"uid":[1,2,3]})。ESP32の内部パーサーはこの空白を無視するため、どちらもハードウェア上では機能的に同一です。