智元机器人 Agibot Go APP 技术架构分析报告
基于
Agibot_Go_0.9.1.zip解包后的 Manifest、DEX、so 库与flutter_assets静态分析。未做二进制逆向或运行时验证。
目录
- 一、核心结论
- 二、应用格式与构建信息
- [三、Flutter 架构分析](#三、Flutter 架构分析)
- 四、产品线与功能模块
- [五、动作控制与 mc_action](#五、动作控制与 mc_action)
- 六、地图与导航(agi_map)
- 七、连接与安全
- 八、原生库技术栈
- [九、第三方 SDK 集成](#九、第三方 SDK 集成)
- 十、技术架构总结
- 十一、总结
一、核心结论
智元机器人 Agibot Go(com.agibot.x.go v0.9.1)采用 Flutter 跨端 UI 架构,业务逻辑以 Dart AOT 编译进 libapp.so,并非 WebView + H5 方案。App 同时覆盖 D1 四足与 X2 人形两条产品线,集成 BLE/WiFi 配网、遥控、动作库、地图导航(agi_map)、图传(FFmpeg/MDK)及智元 PKI 证书链,通信侧可见 DDS/ROS/Protobuf 等机器人中间件痕迹。
技术栈概览
- Flutter ---
libflutter.so+libapp.so(Dart AOT),单 Activity 入口 - Kotlin 宿主 --- Kotlin 2.1.10 + AGP 8.9.1 + Java 8
- 产品线 --- D1 四足、X2 人形(资源目录与 UI 素材明确区分)
- 连接 --- BLE(含 Android 12+
BLUETOOTH_CONNECT/SCAN)、WiFi/AP 配网 - 地图 --- 自研 Flutter 包
agi_map(工作区、虚拟墙、清扫路线、导航点) - 动作 ---
mc_action.yaml定义 82 组动作 ID → CSV 轨迹资源路径 - 媒体 --- FFmpeg + MDK +
fvp_plugin(Flutter 视频播放) - 安全 --- 内置 AGIBOT 根 CA / 证书链 PEM,用于与机器人 TLS/mTLS
- 监控 --- 腾讯 Bugly Native
- 无 WebView 主 UI --- 操控界面由 Flutter 原生绘制,非 H5 套壳
二、应用格式与构建信息
| 维度 | 值 |
|---|---|
| 应用名(样本目录) | Agibot Go 0.9.1 |
| 包名 | com.agibot.x.go |
| 版本 | 0.9.1 |
| APK 体积(zip) | ~58 MB |
| DEX | 1 个 classes.dex(~3.83 MB) |
| 主 Activity | com.agibot.x.go.MainActivity |
| 架构 | arm64-v8a(样本仅见 arm64 so) |
构建配置:
androidGradlePluginVersion=8.9.1
Kotlin 2.1.10
Java source/targetCompatibility=1.8
说明: 单 DEX、APK 约 58 MB,无 multidex 压力;UI 与业务逻辑集中在 Flutter AOT,静态资源以 WebP/PNG 为主。
三、Flutter 架构分析
3.1 Flutter 核心证据
原生库(lib/arm64-v8a):
libflutter.so # Flutter 引擎 (~10.5 MB)
libapp.so # Dart AOT 编译产物 (~15.9 MB)
libdartjni.so # Dart JNI 桥
Flutter 资源:
assets/flutter_assets/
├── AssetManifest.json
├── FontManifest.json
├── NativeAssetsManifest.json
├── fonts/
└── assets/ + packages/
DEX / Manifest:
- 存在
io/flutter相关类与 FlutterActivity 模式 - 仅 1 个
com.agibot.x.go.MainActivity,典型 Flutter 单入口 - 无
assets/dist/、无 Vite/Vue Web 主界面
3.2 跨端框架排除
| 框架 | 结论 |
|---|---|
| Flutter | 是(主 UI) |
| React Native | 未发现 |
| Hippy / Weex | 未发现 |
| Unity | 未发现 |
| WebView 主 UI | 否(Dex 无 AgentWeb/WebActivity 主导痕迹) |
3.3 Flutter 依赖包(可见部分)
| 包 | 说明 |
|---|---|
agi_map |
智元自研地图/导航 Flutter 插件(53+ 资源) |
cupertino_icons |
iOS 风格图标 |
simple_circular_progress_bar |
圆形进度条 UI |
AssetManifest 规模: 276 个资源条目;以 .webp(154)、.png(109)为主,偏移动端 UI 素材。
四、产品线与功能模块
从 assets/flutter_assets/assets/image/ 目录结构可还原 两大产品线 与 功能域:
4.1 产品线
| 产品线 | 资源路径 | 推断机型 |
|---|---|---|
| D1 | assets/image/d1/ |
四足机器狗(动作:后空翻、前跳、起立、阻尼、爬楼等) |
| X2 | assets/image/x2/ |
人形机器人(姿态、转腰、转头、越野、挥手、握手等) |
背景图亦区分:bg_d1_* vs bg_x2_*。
4.2 功能模块(按资源目录)
| 模块 | 路径/证据 | 能力推断 |
|---|---|---|
| 启动/登录 | launch/、login/ |
启动页、密码显隐 |
| 连接配网 | connect/ |
BLE 扫描、WiFi/AP、锁、引导、机型选择(D1 型号图) |
| 机器管理 | robot_manager/ |
多机列表、电量、心跳、消息、添加机器人 |
| D1 遥控 | d1/control/ |
摇杆、急停、速度、图传、模式切换、动作面板 |
| X2 遥控 | x2/、x2/motion/ |
摇杆、姿态、动作库 UI |
| 摇杆组件 | joystick/ |
通用虚拟摇杆素材 |
| 地图 | map/ + packages/agi_map/ |
点导航、多边形/折线、虚拟墙(见 §6) |
| 机器人设置 | robot_setting/ |
蓝牙、网络、校准、升级、语速、腰锁、恢复出厂 |
| 动画 | lottie/bone、lottie/footprint |
Lottie 骨骼/足迹动画 |
| 动作配置 | yaml/mc_action.yaml |
动作 ID 与 CSV 轨迹映射(见 §5) |
| 安全 | security/*.pem |
智元 CA 证书(见 §7) |
4.3 D1 遥控 UI 证据(节选)
assets/image/d1/control/ 含:
ic_joystick_show/ic_joystick_dismiss--- 摇杆显隐ic_d1_back_flip、ic_d1_jump_forward、ic_d1_climb_stairs--- 特技动作estop.png、stop.webp--- 急停video.png、pause_video.webp--- 图传/视频wifi.png、battery.png--- 状态
分析: D1 控制面为 Flutter 原生 UI,摇杆、急停、图传与动作面板均在 Dart 层实现,无 WebView 主界面。
五、动作控制与 mc_action
5.1 mc_action.yaml
内置 assets/yaml/mc_action.yaml ,定义 82 组 animation ID (如 1001 举手、1002 挥手、1003 握手...),每组映射到一条或多条 CSV 轨迹文件路径:
yaml
ani_table:
- animation: 1001 # raise hand
resources:
- area: 1
path: "./classic/animation/SM_raise_left_hand.csv"
- area: 2
path: "./classic/animation/SM_raise_right_hand.csv"
命名规律:
SM_*--- 单臂/分区动作(area 1/2)NM_*--- 全身/合并动作(area 3)
5.2 与 APK 资源关系
- YAML 中引用
./classic/animation/*.csv(约 120 条路径) - 当前 APK 的 AssetManifest 未打包这些 CSV → 轨迹文件可能在 首次连接后从机器人下载,或由 OTA/资源包下发
- App 侧重 预定义动作 ID + 轨迹 CSV 的分发与触发,而非可视化编程或脚本下发
六、地图与导航(agi_map)
自研 Flutter 包 packages/agi_map/ ,资源与图标表明具备 室内地图编辑与导航 能力:
| 能力 | 图标/资源证据 |
|---|---|
| 工作区 / 虚拟墙 | ic_area_work、ic_area_virtual_wall |
| 清扫路线 | ic_clean_route、ic_edit_left_clean_route |
| 导航点类型 | 充电点、HR 点、QR 点、工位点(ic_point_charge、ic_point_qr 等) |
| 地图编辑 | 多边形、折线、矩形、手绘(polygon_icon、polyline_icon、ic_edit_paint) |
| 图层/旋转 | ic_layer_grid、ic_rotate |
主工程 assets/image/map/ 亦有点导航、虚拟墙、机器人图标等,与 agi_map 配合。
分析: 智元将 地图/任务 做进 Flutter 插件 agi_map ,具备消费/商用机器人常见的 建图 + 虚拟墙 + 清扫路线 + 导航点 产品形态。
七、连接与安全
7.1 连接方式
资源与权限共同表明:
| 方式 | 证据 |
|---|---|
| BLE | connect/ic_ble_*、ic_scan_ble_*;DEX 含 flutter_blue/BLE;权限含 BLUETOOTH_CONNECT/SCAN/ADVERTISE |
| WiFi / AP | ic_wifi_*、ic_ap_*、ic_background_wifi |
| 二维码 | journeyapps.barcodescanner.CaptureActivity --- 扫码配网/绑定 |
7.2 智元 PKI 证书
assets/security/General-Purpose_AGIBOT_CA.pem
assets/security/certificate_chain_CA1.pem
证书 Subject 含 AGIBOT RSA ROOT CA 、General-Purpose AGIBOT CA(CN,2025 年起效)。
分析: App 内置企业 CA,用于与机器人或云端建立 TLS/mTLS 信任链,属机器人厂商常见安全设计;DEX 中亦有 ssl、tls、certificate、crypto 等字符串。
7.3 通信中间件(DEX 字符串)
可见 DDS 、ROS 、Protobuf 等关键字 → 与智元/Agibot 机器人 DDS 数据总线 生态一致;具体 topic/API 需运行时或 SDK 文档进一步确认。
八、原生库技术栈
8.1 完整 so 列表(11 个,arm64-v8a)
| so | 类型 | 在 App 中的作用 |
|---|---|---|
libflutter.so |
Flutter 引擎 | UI 渲染、Dart 运行时宿主 |
libapp.so |
Dart AOT | 全部 Flutter 业务逻辑(编译后) |
libdartjni.so |
Dart JNI | Java/Kotlin ↔ Dart 互调 |
libffmpeg.so |
FFmpeg | 音视频编解码 |
libmdk.so |
MDK 媒体框架 | 高性能媒体播放(常与 fvp 配合) |
libfvp_plugin.so |
fvp Flutter 插件 native | Flutter 侧视频播放桥接 |
libass.so |
libass | 字幕/ASS 渲染(图传 OSD 或字幕) |
libsqlite3.so |
SQLite | 本地数据库 |
libBugly_Native.so |
腾讯 Bugly | 崩溃采集 |
libc++_shared.so |
C++ 运行时 | 原生库共用 |
libdatastore_shared_counter.so |
AndroidX DataStore | 计数/偏好存储辅助 |
未出现: Unity、libreactnative*、典型加固 so、专用图传芯片 so;图传更可能走 WiFi + FFmpeg/MDK 通用媒体栈。
8.2 原生能力归纳
| 能力 | 实现 |
|---|---|
| UI 引擎 | libflutter.so + libapp.so |
| 视频/图传 | FFmpeg + MDK + fvp |
| 语音 | 未见专用语音 SDK so |
| 崩溃 | Bugly |
| 加固 | 未见典型加固 so |
| 本地存储 | SQLite + DataStore |
九、第三方 SDK 集成
| 类别 | 选型 | 证据 |
|---|---|---|
| UI 框架 | Flutter | so + flutter_assets |
| 地图 | agi_map(自研插件) | packages/agi_map |
| 媒体 | FFmpeg + MDK + fvp | so + DEX 字符串 |
| 动画 | Lottie | bone/footprint JSON |
| 蓝牙 | flutter_blue 等 | DEX + BLE 权限 |
| 定位 | Google Play Services Location | play-services-location |
| 网络 | Cronet | play-services-cronet |
| 扫码 | ZXing / journeyapps | CaptureActivity |
| 崩溃 | 腾讯 Bugly | libBugly_Native.so |
| 存储 | SQLite + DataStore | so + androidx datastore META-INF |
| 权限 | permission_handler 类插件 | DEX 声明大量 Android 权限 |
权限说明: DEX 中含 44 项 android.permission.*(含蓝牙、定位、存储、相机、录音等),部分为 Flutter 权限插件 合并声明,实际运行时按需申请。
十、技术架构总结
10.1 架构特点
- Flutter 为主 --- 业务 UI 全在 Dart,非 WebView 套壳
- 双产品线合一 --- D1 四足 + X2 人形共用同一 Agibot Go
- 自研地图插件 ---
agi_map承载导航/编辑/清扫逻辑 - 动作数据外置 --- mc_action 引用 CSV,可能运行时从机载拉取
- 安全内置 CA --- 面向机器人通信的 PKI 体系
- 媒体栈现代 --- FFmpeg + MDK + fvp,适合图传/low-latency 播放
10.2 技术选型分析
| 技术领域 | 选型 | 原因推断 |
|---|---|---|
| UI | Flutter | 跨平台、性能、复杂控件(地图/摇杆)原生绘制 |
| 地图 | agi_map 自研插件 | 工作区/虚拟墙/路线与智元业务深度绑定 |
| 动作 | YAML + CSV 轨迹 | 动作库版本化、分区(SM/NM)清晰 |
| 视频 | MDK + FFmpeg + fvp | Flutter 内高性能播放 |
| 连接 | BLE + WiFi + QR | 消费级配网体验 |
| 安全 | 内置 AGIBOT CA | 机器人链路可信 |
| 监控 | Bugly | 国内常用崩溃平台 |
10.3 潜在挑战
- libapp.so 体积 --- AOT 产物 ~16 MB,随功能增长需关注分包
- CSV 轨迹未随 APK 下发 --- 首连/OTA 依赖网络与机载资源完整性
- 权限声明偏多 --- 需关注商店审核与实际使用是否一致
- 逆向 --- Dart AOT 比 H5 难读,但 libapp.so 仍可被专业逆向
十一、总结
智元 Agibot Go v0.9.1 是一款 Flutter 驱动的机器人控制 App ,包名 com.agibot.x.go,在单包内支持 D1 四足 与 X2 人形 的连接、遥控、动作、地图与图传。原生层提供 Flutter 引擎、FFmpeg/MDK 媒体、Bugly 与 SQLite;业务与 UI 几乎全部由 libapp.so + flutter_assets 承载,采用 Flutter 原生 UI,而非 WebView H5 套壳。
核心优势:
- Flutter 统一 UI,地图/摇杆/多机型体验一致
- 自研
agi_map与 mc_action 动作体系,产品化程度高 - 内置 PKI,机器人通信安全设计完整
- 单 DEX、结构相对清晰
待运行时进一步验证:
- WebEvent/ DDS 具体 API 与 topic
- CSV 轨迹资源的下载时机与存储路径
- 图传协议(WebRTC / RTSP / 自建)与 MDK 播放链路
附录:分析环境与数据来源
- 样本:
Agibot_Go_0.9.1/、Agibot_Go_0.9.1.zip(v0.9.1) - 主要依据:
AndroidManifest.xml(UTF-16 字符串)、classes.dex、lib/arm64-v8a/*.so、assets/flutter_assets/(AssetManifest.json、mc_action.yaml、security PEM)、kotlin-tooling-metadata.json - 说明: 结论来自可读包结构;Dart 业务逻辑在
libapp.so内,未反编译
分析基于 Agibot Go v0.9.1 解包样本