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

開發層與職責

從 App 套件到原生擴充,每一層都有清楚邊界。先使用 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 結構與穩定錯誤碼。