1# 使用JSVM-API接口获取JSVM API的版本号 2<!--Kit: NDK Development--> 3<!--Subsystem: arkcompiler--> 4<!--Owner: @yuanxiaogou; @string_sz--> 5<!--Designer: @knightaoko--> 6<!--Tester: @test_lzz--> 7<!--Adviser: @fang-jinxu--> 8 9## 简介 10 11用于获取当前JSVM API的版本信息。 12 13## 接口说明 14 15| 接口 | 功能说明 | 16|----------------------------|--------------------------------| 17| OH_JSVM_GetVersion | 获取JSVM运行时支持的最高JSVM API版本。 | 18| OH_JSVM_GetVMInfo | 获取虚拟机的信息。 | 19 20## 使用示例 21 22JSVM-API接口开发流程参考[使用JSVM-API实现JS与C/C++语言交互开发流程](use-jsvm-process.md),本文仅对接口对应C++相关代码进行展示。 23 24### OH_JSVM_GetVersion && OH_JSVM_GetVMInfo 25 26获取当前环境支持的JSVM API的最高版本号和当前虚拟机的信息。 27 28cpp部分代码 29 30```cpp 31// hello.cpp 32#include <string.h> 33 34// OH_JSVM_GetVersion的样例方法 35static JSVM_Value GetVersion(JSVM_Env env, JSVM_CallbackInfo info) 36{ 37 uint32_t jsVersion = 0; 38 // 调用接口,获取当前JSVM运行时支持的最高JSVM API版本 39 JSVM_CALL(OH_JSVM_GetVersion(env, &jsVersion)); 40 int value = static_cast<int>(jsVersion); 41 OH_LOG_INFO(LOG_APP, "JSVM GetVersion success:%{public}d", value); 42 return nullptr; 43} 44 45// OH_JSVM_GetVMInfo的样例方法 46// 打印JSVM(JavaScript虚拟机)的各项信息 47void PrintVmInfo(JSVM_VMInfo vmInfo) { 48 OH_LOG_INFO(LOG_APP, "JSVM API apiVersion: %{public}d", vmInfo.apiVersion); 49 OH_LOG_INFO(LOG_APP, "JSVM API engine: %{public}s", vmInfo.engine); 50 OH_LOG_INFO(LOG_APP, "JSVM API version: %{public}s", vmInfo.version); 51 OH_LOG_INFO(LOG_APP, "JSVM API cachedDataVersionTag: 0x%{public}x", vmInfo.cachedDataVersionTag); 52} 53 54static JSVM_Value GetVMInfo(JSVM_Env env, JSVM_CallbackInfo info) 55{ 56 // 调用接口,获取虚拟机的信息 57 JSVM_VMInfo result; 58 JSVM_CALL(OH_JSVM_GetVMInfo(&result)); 59 // 输出VM虚拟机信息 60 PrintVmInfo(result); 61 return nullptr; 62} 63 64// 待执行的js代码 65static const char *srcCallNative = R"JS(getVersion();getVMInfo();)JS"; 66 67// GetVersion, GetVMInfo注册回调 68static JSVM_CallbackStruct param[] = { 69 {.data = nullptr, .callback = GetVersion}, 70 {.data = nullptr, .callback = GetVMInfo}, 71}; 72static JSVM_CallbackStruct *method = param; 73// GetVersion, GetVMInfo方法别名,供JS调用 74static JSVM_PropertyDescriptor descriptor[] = { 75 {"getVersion", nullptr, method++, nullptr, nullptr, nullptr, JSVM_DEFAULT}, 76 {"getVMInfo", nullptr, method++, nullptr, nullptr, nullptr, JSVM_DEFAULT}, 77}; 78``` 79 80预期结果: 81``` 82JSVM GetVersion success:9 83JSVM API apiVersion: 1 84JSVM API engine: v8 85JSVM API version: 13.2.152.41 86JSVM API cachedDataVersionTag: 0x81ff9402 87``` 88 89<!-- @[oh_jsvm_get_version_and_vm_info](https://gitcode.com/openharmony/applications_app_samples/blob/master/code/DocsSample/ArkTS/JSVMAPI/JsvmUsageGuide/UsageInstructionsTwo/getversion/src/main/cpp/hello.cpp) -->