跳到主要内容

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_portremote_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.1devtools_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。

关闭顺序

  1. 停止每个 View 的 GPU output。
  2. 归还所有已交付的 GPU frame token。
  3. 调用 ltv_view_destroy() 销毁全部 View。
  4. 调用 ltv_shutdown()
  5. 等待 ltv_run() 返回。

存在未销毁 View 或未归还 frame 时,关闭会返回 LTV_ERR_INVALID_STATE,不会静默丢弃资源。