跳到主要内容

版本与诊断

AiRuntime 版本常量与查询、AiDiagnostics.collect 环境自检。装包见 安装

属性

属性类型说明
VERSION_MAJORint头文件 DARRA_VERSION_MAJOR。NativeLoader 加载时已核对此值(1)
VERSION_MINORint与 DARRA_VERSION_MINOR 对齐
VERSION_PATCHint与 DARRA_VERSION_PATCH 对齐

当前 1.0.0。打包查询走 packedVersion() / versionString(),不要自己拼。

方法

AiRuntime.packedVersion()

public static int packedVersion()

打包版本 major*65536 + minor*256 + patch。对应 darra_version()

返回值:

  • int — 打包值。1.0.0 = 65536

示例:

int packed = AiRuntime.packedVersion();

AiRuntime.versionString()

public static String versionString()

形如 1.0.0+runtime / 1.0.0+authoring 的静态串。对应 darra_version_string()。客户机必须看到 +runtime。Java 侧拷贝,无需释放。

返回值:

  • String — 版本串

示例:

String ver = AiRuntime.versionString();

NativeLoader 加载时已核 darra_version major == HEADER_MAJOR(1)。库找不到或 major 不等 → 加载失败,禁止继续调用。

AiDiagnostics.collect()

public static String collect()

采集本机环境诊断,输出统一 JSON。覆盖:os/arch、CPU、GPU 型号 + 驱动版本 + CUDA 上限、已装 Provider 及版本、授权状态(去敏:绝不含密钥 / 密码 / token / 机器指纹字节)、最近错误环形缓冲(去敏)。

对应 darra_diag_collect

  • 尽力而为:单个字段采不到时 JSON 中该字段为 null 或缺席,整体不失败。
  • 注意:可能触发 WMI / NVML / sysfs 查询,耗时可到数百毫秒——禁止在 PLC 扫描周期等实时路径调用
  • 返回值是 Java 侧拷贝,无需 darra_string_free

返回值:

  • String — UTF-8 JSON

示例:

String diag = AiDiagnostics.collect();
System.out.println(diag);

相关结构:

{
"schema": 1,
"sdk": { "version": "1.0.0+runtime", "abi": 65536 },
"os": { "name": "windows", "version": "10.0.26100", "arch": "x64" },
"cpu": { "model": "AMD Ryzen 7 9800X3D", "cores": 16 },
"gpus": [ { "model": "NVIDIA RTX 4070", "driver": "560.94", "cudaMax": "12.6" } ],
"providers": [ { "id": "onnx-cpu", "version": "1.0.0", "path": "C:/.../Env/onnx-cpu/1.0.0" } ],
"license": { "present": true, "mode": "trial", "trialRemaining": 12, "machineBound": false },
"recentErrors": [ { "code": 11, "message": "...", "when": "2026-09-01T10:00:00+08:00" } ]
}
  • schema 恒存在;其余字段采不到时为 null 或缺席,消费方必须容忍。
  • 去敏:永不出现密钥 / 密码 / token / 机器指纹原始字节;license 只有状态摘要。
  • gpus 无独显时为 []providers 未装任何包时为 []