← 全部文档MOTEXA / DEVELOPER DOCUMENTATION

主题开发文档

通过标准展示数据开发 App 内主题,在浏览器中调试,再构建可导入的运行包。

SDK 1.5.0 API 1.11Demo 0.2.0

快速开始

目标是在浏览器中启动示例,再修改为自己的 App 内主题。无需 App 源码,也无需连接设备。

环境

需要 Node.js 22.12 或更高版本、pnpm 10.33.2 和现代浏览器。推荐 Node.js 22 LTS。Windows 使用 pnpm.cmd 可以避免 PowerShell 脚本执行策略影响。

在解压后的仓库根目录运行:

pnpm install --frozen-lockfile
pnpm dev

打开终端显示的开发服务器地址,在 /mock-host.html 进入调试器。正常状态会显示 Theme connected,右侧出现仪表。端口由 Vite 分配,以终端为准。

认识示例

文件 修改用途
theme/src/PartnerTheme.vue 仪表布局与展示
theme/src/useDashboard.ts 客户端订阅、缺失值处理、动作和配置
theme/src/ThemeSettings.vue 主题设置界面
theme/src/style.css 主题样式和适配
theme/ride-ui.json 身份、API、能力与运行要求
theme/submission.json 源码提交信息
theme/config.schema.json 设置字段和校验

示例 ID 为 partner.example-dashboard,版本 0.2.0。发布自己的主题时改为稳定、唯一的 ID,并同步清单、提交信息中的身份和运行声明。运行包 releaseId 应随发布版本保持一致。客户端从清单读取 ID,避免两处手写不同值。

最小订阅

import { createRideUiClient } from '@motexa/ride-ui-sdk/client'
import manifest from '../ride-ui.json'

const client = createRideUiClient(manifest.id)
const stop = client.subscribeSnapshot(snapshot => {
  const soc = snapshot.telemetry.soc
  const label = soc.value == null ? '--' : soc.displayValue
  // 将 label 写入你的组件状态。
  console.log(label)
})
client.ready()

// 在组件卸载时:
// stop()
// client.dispose()

先注册监听,再调用 ready()。不要自己发送桥接消息。直接打开主题 index.html 不会产生数据,浏览器必须通过模拟宿主加载它。

开发验证

pnpm theme:check
pnpm typecheck
pnpm theme:replay-check
pnpm theme:build

theme:check 检查清单与源码规则;类型检查验证公共 API 的使用;回放检查验证合成场景;构建生成包含调试器的 dist/development/。

至少手动查看横屏、竖屏、320px 宽度、明暗配色、缺失与过期数据、低功耗、设置保存和动作拒绝。详细步骤见 调试器;可安装包见 构建与 App 安装。