智元机器人 Agibot Go APP 技术架构分析报告

智元机器人 Agibot Go APP 技术架构分析报告

基于 Agibot_Go_0.9.1.zip 解包后的 Manifest、DEX、so 库与 flutter_assets 静态分析。未做二进制逆向或运行时验证。

目录


一、核心结论

智元机器人 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 等机器人中间件痕迹。

技术栈概览

  1. Flutter --- libflutter.so + libapp.so(Dart AOT),单 Activity 入口
  2. Kotlin 宿主 --- Kotlin 2.1.10 + AGP 8.9.1 + Java 8
  3. 产品线 --- D1 四足、X2 人形(资源目录与 UI 素材明确区分)
  4. 连接 --- BLE(含 Android 12+ BLUETOOTH_CONNECT/SCAN)、WiFi/AP 配网
  5. 地图 --- 自研 Flutter 包 agi_map(工作区、虚拟墙、清扫路线、导航点)
  6. 动作 --- mc_action.yaml 定义 82 组动作 ID → CSV 轨迹资源路径
  7. 媒体 --- FFmpeg + MDK + fvp_plugin(Flutter 视频播放)
  8. 安全 --- 内置 AGIBOT 根 CA / 证书链 PEM,用于与机器人 TLS/mTLS
  9. 监控 --- 腾讯 Bugly Native
  10. 无 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/bonelottie/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_flipic_d1_jump_forwardic_d1_climb_stairs --- 特技动作
  • estop.pngstop.webp --- 急停
  • video.pngpause_video.webp --- 图传/视频
  • wifi.pngbattery.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_workic_area_virtual_wall
清扫路线 ic_clean_routeic_edit_left_clean_route
导航点类型 充电点、HR 点、QR 点、工位点(ic_point_chargeic_point_qr 等)
地图编辑 多边形、折线、矩形、手绘(polygon_iconpolyline_iconic_edit_paint
图层/旋转 ic_layer_gridic_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 CAGeneral-Purpose AGIBOT CA(CN,2025 年起效)。

分析: App 内置企业 CA,用于与机器人或云端建立 TLS/mTLS 信任链,属机器人厂商常见安全设计;DEX 中亦有 ssltlscertificatecrypto 等字符串。

7.3 通信中间件(DEX 字符串)

可见 DDSROSProtobuf 等关键字 → 与智元/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 架构特点

  1. Flutter 为主 --- 业务 UI 全在 Dart,非 WebView 套壳
  2. 双产品线合一 --- D1 四足 + X2 人形共用同一 Agibot Go
  3. 自研地图插件 --- agi_map 承载导航/编辑/清扫逻辑
  4. 动作数据外置 --- mc_action 引用 CSV,可能运行时从机载拉取
  5. 安全内置 CA --- 面向机器人通信的 PKI 体系
  6. 媒体栈现代 --- 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 潜在挑战

  1. libapp.so 体积 --- AOT 产物 ~16 MB,随功能增长需关注分包
  2. CSV 轨迹未随 APK 下发 --- 首连/OTA 依赖网络与机载资源完整性
  3. 权限声明偏多 --- 需关注商店审核与实际使用是否一致
  4. 逆向 --- 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.dexlib/arm64-v8a/*.soassets/flutter_assets/AssetManifest.jsonmc_action.yaml、security PEM)、kotlin-tooling-metadata.json
  • 说明: 结论来自可读包结构;Dart 业务逻辑在 libapp.so 内,未反编译

分析基于 Agibot Go v0.9.1 解包样本