开发环境与部署
本机跑起来(不需要板子)
设备端是个普通的 C++ 程序,可以直接在开发机上编一份跑,配置、前端页面、demo 脚本 都用仓库里的实体文件:
# 1. 前端(改了前端才需要)
cd frontend && npm i && npm run build # 产物写到仓库根 static/
# 2. 设备端(host 版,不会覆盖交叉编译产物)
cd cpp/capp && make # → bin/aka-capp-dev
AKA_HOME=cpp/board ./cpp/capp/bin/aka-capp-dev
AKA_HOME 一定要指向 cpp/board,否则找不到 config.toml 和 static/。
串口和摄像头拆掉也能启动(对应模块退化成 mock 并打日志),所以只写接口、调页面时
不用接硬件。
前端热更新:
cd frontend && npm run dev
vite 的 dev server 把
/api、/ws代理到localhost:5000,而 C++ 版 capp 默认监听 80(config.toml的[web] port)。要联调,要么改frontend/vite.config.ts里的 proxy target,要么临时把 capp 的端口设成 5000。
打包
正式构建统一走 cpp/Makefile(在 orb 里直接跑;在 macOS 上会自动经 orb run 转发
交叉编译):
cd cpp
make # 一条龙:libjpeg/mbedtls/lua → csrc → capp → package → ota
make noscreen # 不带屏版本(整个显示栈编译期裁掉)
make clean # 清理构建产物
产物两样:cpp/dist/AKA-00/(部署目录)与 cpp/dist/aka-00-server(自解压安装器)。
前端不参与 make:打包时直接拿仓库根 static/ 里已有的产物,所以改了前端要先
cd frontend && npm run build(不带屏版是 npm run build:noscreen),拿错版本打包
脚本会告警。
部署到控制板
# 首次部署:解包 + 配热点 + 开机自启
scp -O cpp/dist/aka-00-server root@<板子IP>:/root/
ssh root@<板子IP> '/root/aka-00-server --init'
# 升级:保配置换包 + 重启服务
scp -O cpp/dist/aka-00-server root@<板子IP>:/root/
ssh root@<板子IP> 'setsid /root/aka-00-server --update >/root/ota.log 2>&1 < /dev/null'
scp加-O(板载 sshd 不认新版 SFTP 协议);固件别放/tmp(那是 53MB 的内存盘, 20MB 的固件会把内存打爆)。--update默认保留板上的config.toml、speed_config.json、arm_angles.json、cert.pem、key.pem,以及 demo 卡片(板上优先)和用户上传的模型(取并集)。 想让包里带的新配置生效:AKA_OTA_RESET_CONFIG=1 ... --update。- 换包用 staging + 目录改名,旧目录留成
$AKA_HOME.old作回滚点;只解包不重启用--extract。 --update结尾是exec init.sh,服务会挂在当前 ssh 会话上,所以要setsid, 或者升级完reboot(开机由/etc/init.d/S99webstart拉起)。
更完整的说明见仓库根 README.md 的「📦 打包」与「🚀 部署」两节。