跳转到内容

开发指南

此内容尚不支持你的语言。

欢迎来到 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/ 烧录流程的核心逻辑和用户界面。
  • firmware_manager/ 处理从制品库下载和缓存固件。
  • configurator/ 用于设置用户选项(如 Binding Phrases 和 WiFi)的用户界面。

核心

  • networking/ 用于进程绑定到硬件热点的平台特定逻辑。
  • storage/ 本地缓存管理和 SQLite 持久化。
  • analytics/ 隐私优先的可观测性(Sentry 和 Aptabase)。

我们使用 Riverpod 进行全局状态管理,并使用 Flutter Hooks 进行局部小部件级状态管理。这种组合确保了高度响应式的用户界面,同时避免了标准 StatefulWidgets 的样板代码。


如需更详细的技术信息,请参阅以下指南:

  • 技术架构:深入探讨 FirmwareAssembler 和原生网络堆栈。
  • 固件验证:如何使用 Dart 和 Python 工具验证二进制文件的完整性。

在审计二进制文件时,您可能会注意到与标准 Python Configurator 相比存在细微的字节偏移。这是由于 JSON 最小化造成的。

Python Configurator 通常在冒号后注入空格(例如,{"uid": [1,2,3]}),而 ELRS Mobile 则生成紧凑的 JSON(例如,{"uid":[1,2,3]})。两者在硬件功能上是相同的,因为 ESP32 的内部解析器会忽略这些空格。