Runtime
Runtime 管理进程级 Chromium 生命周期。一个进程同一时间只有一个 LitheView Runtime。
版本查询
const uint32_t api_version = ltv_api_version();
const char* version = ltv_version_string();
ltv_version_string() 返回库持有的静态 UTF-8 字符串,不需要释放。
初始化
ltv_settings_t settings = {};
settings.struct_size = sizeof(settings);
settings.version = LTV_STRUCT_VERSION;
settings.width_dip = 1280;
settings.height_dip = 720;
settings.device_scale_factor = 1.0f;
settings.remote_debugging_enabled = 0;
ltv_error_t result = ltv_initialize(&settings);
| 字段 | 含义 |
|---|---|
width_dip, height_dip | 初始 View 的逻辑尺寸 |
device_scale_factor | 每个 DIP 对应的物理像素数,必须大于 0 |
remote_debugging_enabled | 非 0 时显式允许本进程开启远程调试;默认关闭 |
remote_debugging_port | remote_debugging_enabled 非 0 时使用的 loopback DevTools 端口 |
devtools_frontend_port | 允许连接 DevTools WebSocket 的本地前端来源端口,外置前端使用 |
传入 nullptr 会使用运行时默认值。重复初始化或在错误生命周期阶段初始化会返回 LTV_ERR_INVALID_STATE。
远程调试开关
远程调试默认关闭。发布产品不设置 remote_debugging_enabled 时,即使进程命令行带有
--remote-debugging-port,LitheView 也不会启动 DevTools 端口。
开发版或带用户授权的诊断版可以显式开启:
ltv_settings_t settings = {};
settings.struct_size = sizeof(settings);
settings.version = LTV_STRUCT_VERSION;
settings.width_dip = 1280;
settings.height_dip = 720;
settings.device_scale_factor = 1.0f;
settings.remote_debugging_enabled = 1;
settings.remote_debugging_port = 9222;
settings.devtools_frontend_port = 9223;
端口只监听 127.0.0.1。devtools_frontend_port 用于允许宿主提供的外置 DevTools 前端连接
目标 WebSocket;未设置时仍允许官方 DevTools 前端来源。创建 View 后可通过
ltv_view_get_devtools_target_url() 获取该 View 的调试 WebSocket URL。
运行循环
void LTV_CALLBACK OnReady(void* user_data) {
// 此时可以创建 View 和调用普通 SDK API。
}
const int exit_code = ltv_run(argc, argv, &OnReady, user_data);
ltv_run() 在当前线程启动浏览器任务循环并阻塞,直到 ltv_shutdown() 完成。ready callback 在该线程能够接受 SDK 调用后执行。
线程模型
- 调用
ltv_run()的线程是 LitheView UI 线程。 - 生命周期函数、View API 和所有客户端回调都在这条线程上执行。
- 不要从其他线程直接调用 View API;应将任务投递回 UI 线程。
- 同步策略回调中禁止销毁 View 或关闭 Runtime。
关闭顺序
- 停止每个 View 的 GPU output。
- 归还所有已交付的 GPU frame token。
- 调用
ltv_view_destroy()销毁全部 View。 - 调用
ltv_shutdown()。 - 等待
ltv_run()返回。
存在未销毁 View 或未归还 frame 时,关闭会返回 LTV_ERR_INVALID_STATE,不会静默丢弃资源。