运行时
运行时 Provider 包管理、版本查询、环境诊断。对应 darra_runtime_ensure / darra_version / darra_diag_collect。
公开 runtime 包只装推理所需的 Provider,不含加密 / 签发符号。
AiRuntime
├── ensure / ensureCancel // 装包 → 安装
├── packedVersion / versionString // 版本
└── VERSION_MAJOR / MINOR / PATCH // 与头文件对齐
AiDiagnostics.collect // 去敏 JSON;禁止放进 PLC 扫描周期
功能概览
| 类别 | 属性 | 类型 | 访问 | 说明 |
|---|---|---|---|---|
| AiRuntime | VERSION_MAJOR | int | 常量 | 头文件 DARRA_VERSION_MAJOR。NativeLoader 加载时已核对此值(1) |
VERSION_MINOR | int | 常量 | 与 DARRA_VERSION_MINOR 对齐 | |
VERSION_PATCH | int | 常量 | 与 DARRA_VERSION_PATCH 对齐 | |
ensure | void | 静态 | 确保 Provider / profile 已装好。重载:ensure() / ensure(id) / ensure(id, offlineZip, listener)。幂等 | |
ensureCancel | void | 静态 | 请求取消当前在飞的 ensure。可从任意线程调(含 UI 线程);进度回调内部禁止 | |
packedVersion | int | 查询 | 打包版本 major*65536 + minor*256 + patch | |
versionString | String | 查询 | 形如 1.0.0+runtime 的静态串。客户机必须看到 +runtime | |
| 诊断 | AiDiagnostics.collect | String | 静态 | 本机环境诊断 JSON(去敏)。耗时可到数百毫秒,禁止放进 PLC 扫描周期 |
Provider / profile ID
合法 ID(darra_ai.h 第 5 节,不得另造):
| 类别 | 属性 | 类型 | 访问 | 说明 |
|---|---|---|---|---|
| 细包 | onnx-cpu | Provider | 入参 | ORT CPU |
| 细包 | onnx-cuda | Provider | 入参 | ORT CUDA EP |
| 细包 | onnx-openvino | Provider | 入参 | ORT OpenVINO EP |
| 细包 | onnx-trt-ep | Provider | 入参 | ORT TensorRT EP |
| 细包 | trt-native | Provider | 入参 | 裸 TensorRT 引擎 |
| 细包 | edge-rknn | Provider | 入参 | 仅 linux-arm64。Windows 上指名抛 UnsupportedPlatformException |
| 场景包 | cpu-only | profile | 入参 | 细包清单,不产生新二进制 |
| 场景包 | nvidia-gpu | profile | 入参 | 同上 |
| 场景包 | intel-iap | profile | 入参 | 同上 |
| 场景包 | amd-dml | profile | 入参 | 同上 |
| 场景包 | board-rk3588 | profile | 入参 | 同上 |
| 自动 | null | — | 入参 | 按硬件探测自动选细包(默认推荐) |
Windows 无 RKNN
edge-rknn 永远不会出现在 Windows 安装列表。在 Windows 上指名它 → AiException.UnsupportedPlatformException(DARRA_UNSUPPORTED_PLATFORM)。Windows 收到 rknn 载荷 → AiException.UnsupportedPayloadException(DARRA_UNSUPPORTED_PAYLOAD)。RKNN 只在 linux-arm64(RK3588 + edge-rknn + librknnrt)运行。
Paddle 是运行时载荷(PayloadKind=paddle),不是上表里的独立 Provider ID。打开 Paddle 明文 / 容器时按载荷 × 硬件选已有 Provider。
快速开始
AiRuntime.ensure("cpu-only", null, (percent, stage) ->
System.out.printf("\r[%-8s] %5.1f%%", stage, percent));
System.err.println(AiRuntime.versionString());
String diag = AiDiagnostics.collect();