HoloCubic
开始创作

HoloCubic App SDK

从 Lua 与 LVGL 开始开发 HoloCubic App

App 包定义名称、入口和资源;Lua 处理生命周期、网络与设备逻辑;LVGL 构建界面。仅在需要原生性能时使用公开 C ABI。

查看开发流程
holo://appREADY
hello/
├── app.info
├── main.lua
├── main.png
├── assets/
└── modules/ # optional

$ app.rescan()
✓ Hello is ready
01

创建 App 包

准备 app.info、main.lua 与所需资源。

02

构建界面

使用 LVGL 控件或 Canvas 适配 320 × 240。

03

安装并扫描

上传到 /sd/apps/{app-id},然后执行 App 重扫。

SDK STACK

开发层与职责

从应用包到原生扩展,每一层都有明确边界。先使用 Lua 与 LVGL,只有确有性能需要时才进入 C ABI。

01
APP.INFO

App SDK

查看本层说明
+

目录、元信息、入口、生命周期、部署与资源释放。App 必须能独立启动,也必须在退出时停止任务并清理资源。

[app]
name = "Hello"
entry = "main.lua"
icon = "main.png"
02
LUA

Lua API

+

NodeMCU 风格的定时器、网络和文件模块,并提供 BLE Service、IPC、设备状态等 HoloCubic 能力。

local timer = tmr.create()
timer:alarm(1000, tmr.ALARM_AUTO, function()
  print("tick", tmr.time())
end)
03
LVGL 8.3

LVGL UI

+

控件、样式、事件、动画、图片、字体与 Canvas。所有界面围绕 320 × 240 屏幕和短回调设计。

local label = lv_label_create(lv_scr_act())
lv_label_set_text(label, "Hello, Holo.")
lv_obj_center(label)
04
C ABI

C ABI

+

版本化 Host API,用于音频、协议和持续计算等性能敏感模块;不暴露也不得依赖宿主固件内部符号。

const holo_host_api_v1 *host;
int holo_module_init(const holo_host_api_v1 *api) {
  host = api;
  return HOLO_OK;
}

PUBLIC BOUNDARY

公开 SDK 使用规则

  1. 01只依赖文档化的 API,不链接宿主固件内部符号。
  2. 02回调保持短小;定时器、事件与字体在退出时显式释放。
  3. 03原生模块使用 opaque handle、POD 结构和稳定错误码。