使用JSVM-API接口获取JSVM API的版本号
==========================

#### 简介

用于获取当前JSVM API的版本信息。

#### 接口说明

| 接口 | 功能说明 |
| :-- | :-- |
| OH\_JSVM\_GetVersion | 获取JSVM运行时支持的最高JSVM API版本。 |
| OH\_JSVM\_GetVMInfo | 获取虚拟机的信息。 |

#### 使用示例

JSVM-API接口开发流程参考[使用JSVM-API实现JS与C/C++语言交互开发流程](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/use-jsvm-process)，本文仅对接口对应C++相关代码进行展示。

#### \[h2\]OH\_JSVM\_GetVersion && OH\_JSVM\_GetVMInfo

获取当前环境支持的JSVM API的最高版本号和当前虚拟机的信息。

cpp部分代码

// hello.cpp
#include <string.h>

// OH\_JSVM\_GetVersion的样例方法
static JSVM\_Value GetVersion(JSVM\_Env env, JSVM\_CallbackInfo info)
{
    uint32\_t jsVersion = 0;
    // 调用接口，获取当前JSVM运行时支持的最高JSVM API版本
    JSVM\_CALL(OH\_JSVM\_GetVersion(env, &jsVersion));
    int value = static\_cast<int>(jsVersion);
    OH\_LOG\_INFO(LOG\_APP, "JSVM GetVersion success:%{public}d", value);
    return nullptr;
}

// OH\_JSVM\_GetVMInfo的样例方法
// 打印JSVM（JavaScript虚拟机）的各项信息
void PrintVmInfo(JSVM\_VMInfo vmInfo) {
    OH\_LOG\_INFO(LOG\_APP, "JSVM API apiVersion: %{public}d", vmInfo.apiVersion);
    OH\_LOG\_INFO(LOG\_APP, "JSVM API engine: %{public}s", vmInfo.engine);
    OH\_LOG\_INFO(LOG\_APP, "JSVM API version: %{public}s", vmInfo.version);
    OH\_LOG\_INFO(LOG\_APP, "JSVM API cachedDataVersionTag: 0x%{public}x", vmInfo.cachedDataVersionTag);
}

static JSVM\_Value GetVMInfo(JSVM\_Env env, JSVM\_CallbackInfo info)
{
    // 调用接口，获取虚拟机的信息
    JSVM\_VMInfo result;
    JSVM\_CALL(OH\_JSVM\_GetVMInfo(&result));
    // 输出VM虚拟机信息
    PrintVmInfo(result);
    return nullptr;
}

// 待执行的js代码
static const char \*srcCallNative = R"JS(getVersion();getVMInfo();)JS";

// GetVersion, GetVMInfo注册回调
static JSVM\_CallbackStruct param\[\] = {
    {.data = nullptr, .callback = GetVersion},
    {.data = nullptr, .callback = GetVMInfo},
};
static JSVM\_CallbackStruct \*method = param;
// GetVersion, GetVMInfo方法别名，供JS调用
static JSVM\_PropertyDescriptor descriptor\[\] = {
    {"getVersion", nullptr, method++, nullptr, nullptr, nullptr, JSVM\_DEFAULT},
    {"getVMInfo", nullptr, method++, nullptr, nullptr, nullptr, JSVM\_DEFAULT},
};

预期结果：

JSVM GetVersion success:9
JSVM API apiVersion: 1
JSVM API engine: v8
JSVM API version: 13.2.152.41
JSVM API cachedDataVersionTag: 0x81ff9402