1# 使用JSVM-API接口获取JSVM API的版本号
2
3## 简介
4
5用于获取当前版本信息。
6
7## 接口说明
8
9| 接口                       | 功能说明                       |
10|----------------------------|--------------------------------|
11| OH_JSVM_GetVersion         | 获取JSVM运行时支持的最高JSVM API版本。 |
12| OH_JSVM_GetVMInfo          | 获取虚拟机的信息。              |
13
14## 使用示例
15
16JSVM-API接口开发流程参考[使用JSVM-API实现JS与C/C++语言交互开发流程](use-jsvm-process.md),本文仅对接口对应C++相关代码进行展示。
17
18### OH_JSVM_GetVersion && OH_JSVM_GetVMInfo
19
20获取当前环境支持的JSVM API的最高版本号和当前虚拟机的信息。
21
22cpp部分代码
23
24```cpp
25// hello.cpp
26#include <string.h>
27
28// 待执行的js代码
29static const char *STR_TASK = R"JS(getVersion();getVMInfo();)JS";
30
31// GetVersion, GetVMInfo注册回调
32static JSVM_CallbackStruct param[] = {
33    {.data = nullptr, .callback = GetVersion},
34    {.data = nullptr, .callback = GetVMInfo},
35};
36static JSVM_CallbackStruct *method = param;
37// GetVersion, GetVMInfo方法别名,供JS调用
38static JSVM_PropertyDescriptor descriptor[] = {
39    {"getVersion", nullptr, method++, nullptr, nullptr, nullptr, JSVM_DEFAULT},
40    {"getVMInfo", nullptr, method++, nullptr, nullptr, nullptr, JSVM_DEFAULT},
41};
42// OH_JSVM_GetVersion的样例方法
43static JSVM_Value GetVersion(JSVM_Env env, JSVM_CallbackInfo info)
44{
45    uint32_t jsVersion = 0;
46    // 调用接口,获取当前JSVM运行时支持的最高JSVM API版本
47    JSVM_CALL(OH_JSVM_GetVersion(env, &jsVersion));
48    int value = static_cast<int>(jsVersion);
49    OH_LOG_INFO(LOG_APP, "JSVM GetVersion success:%{public}d", value);
50    return nullptr;
51}
52
53// OH_JSVM_GetVMInfo的样例方法
54// 打印JSVM(JavaScript虚拟机)的各项信息
55void PrintVmInfo(JSVM_VMInfo vmInfo) {
56    OH_LOG_INFO(LOG_APP, "JSVM API apiVersion: %{public}d", vmInfo.apiVersion);
57    OH_LOG_INFO(LOG_APP, "JSVM API engine: %{public}s", vmInfo.engine);
58    OH_LOG_INFO(LOG_APP, "JSVM API version: %{public}s", vmInfo.version);
59    OH_LOG_INFO(LOG_APP, "JSVM API cachedDataVersionTag: 0x%{public}x", vmInfo.cachedDataVersionTag);
60}
61
62static JSVM_Value GetVMInfo(JSVM_Env env, JSVM_CallbackInfo info)
63{
64    // 调用接口,获取虚拟机的信息
65    JSVM_VMInfo result;
66    JSVM_CALL(OH_JSVM_GetVMInfo(&result));
67    // 输出VM虚拟机信息
68    PrintVmInfo(result);
69    return nullptr;
70}
71```
72