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