Przejdź do głównej zawartości

技术架构

Ta treść nie jest jeszcze dostępna w Twoim języku.

ELRS Mobile 不仅仅是一个 web-wrapper;它是 ExpressLRS 编译和配置管道的原生 Dart 实现。

统一固件组装

应用程序不会依赖远程云编译器,而是会在您的设备上本地动态构建二进制文件。在烧录 ESP32/ESP8285 目标时,FirmwareAssembler 会执行精确的比特级修改序列:

1

从缓存的 firmware.zip 存档中提取基本通用固件。

2

通过寻找 ESP 0xE9 魔术字节签名来修剪基础填充。

3

hardware.json 中提取特定的目标引脚排列和运行时配置。

4

将产品名称 (128b)、Lua 名称 (16b)、options.json (512b) 和 hardware.json (2048b) 直接字节打包到二进制流中。

5

如果目标平台(例如 ESP8285 传统)需要,则将最终负载压缩为 .gz 流。

应用程序能准确处理频段之间复杂的差异。对于 900MHz/双频设备,它会将您选择的域(例如 FCC, EU868)主动注入到编译后的 JSON 负载中。对于标准 2.4GHz 目标,它会利用一个布尔标志,在组装过程中将提取过程静默路由到标准 FCC/ 或欧洲 LBT/ 基本固件文件夹。

强大的本地缓存系统使得离线烧录成为可能。当用户通过固件管理器下载发布时,FirmwareCacheService 会直接从 ExpressLRS Artifactory 拉取通用 firmware.zip 和设备特定的 hardware.zip。这些存档在设备上进行本地管理和存储,确保在现场无需任何活跃互联网连接即可立即进行组装和烧录。


原生网络绑定

移动操作系统(尤其是 Android 和 iOS)会降低缺乏互联网访问的 Wi-Fi 连接的优先级,而是静默地通过蜂窝网络路由流量。这会阻止标准应用程序访问位于 10.0.0.1 的 ELRS 硬件。

ELRS Mobile 通过 NativeNetworkService 解决了这个问题。当检测到硬件连接时,应用程序会调用一个特定于平台的 MethodChannel,在操作系统内核级别将整个 Flutter 进程绑定到 Wi-Fi 接口。这确保了所有 HTTP 和 mDNS ���量都能正确路由到硬件,无论蜂窝网络状态如何。