JSVM使用示例,有谁知道吗?

JSVM使用示例


HarmonyOS
2024-05-28 21:40:28
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
roseprodigal

使用的核心API

  • OH_JSVM_CreateReference:对传入的值创建一个具有指定引用计数的新引用。
  • OH_JSVM_GetReferenceValue:如果仍然有效,此JSVM-API将返回JSVM_Value, 表示与JSVM_Ref关联的JavaScript值。否则,结果将为NULL。
  • OH_JSVM_ReferenceRef:增加传入引用的引用计数并返回生成的引用计数。
  • OH_JSVM_GetNamedProperty:此方法等效于调用OH_JSVM_GetProperty, 其中,通过utf8Name传入的字符串用于创建JSVM_Value。

详细参考文档:JSVM

核心代码解释

# cmakelist 中需要增加libjsvm.so 
target_link_libraries(entry PUBLIC libace_napi.z.so libhilog_ndk.z.so libjsvm.so) 
  
// 初始化env,如果OH_JSVM_CreateEnv 第二个参数填写的有,则descriptors的第三个参数回调不能为null 
JSVM_Env env; 
JSVM_PropertyDescriptor descriptors[] = {{"hello", NULL, NULL, NULL, NULL, NULL, JSVM_DEFAULT}}; 
OH_JSVM_CreateEnv(vm, 0, nullptr, &env); 
  
// 不能对string 类型进行创建引用,需要包装成obj对象 
JSVM_Value value; 
ret = OH_JSVM_CreateStringUtf8(env, input.c_str(), input.length(), &value); 
  
JSVM_Value obj; 
OH_JSVM_CreateObject(env, &obj);     
OH_JSVM_SetNamedProperty(env, obj, "input", value); 
  
// 获取引用计数,该函数会在原有的引用计数上 +1 
OH_JSVM_ReferenceRef(env, ref, &refCount); 
  
// 解引用 
OH_JSVM_GetReferenceValue(env, ref, &value);

实现效果

分享
微博
QQ
微信
回复
2024-05-29 22:53:36
相关问题
动态页面跳转方案,有谁知道吗
1742浏览 • 1回复 待解决
同进程多Hap问题 ,有谁知道吗
1324浏览 • 1回复 待解决
访问控制开发指导,有谁知道吗
750浏览 • 1回复 待解决
有谁知道flexBasis使用问题
754浏览 • 1回复 待解决
有谁知道常用AppFreeze使用指导
921浏览 • 1回复 待解决
有谁知道可以直接使用so库
956浏览 • 1回复 待解决
有谁知道ArkTS支持定时器
2566浏览 • 1回复 待解决
有谁知道ArkTS支持隐式跳转
1706浏览 • 1回复 待解决
有谁知道如何创建 JSONObject
267浏览 • 1回复 待解决
有谁知道如何生成UUID
1523浏览 • 1回复 待解决
有谁知道常用hdc命令使用指导
2414浏览 • 1回复 待解决
Worker多线程的使用有谁知道啊?
886浏览 • 1回复 待解决
有谁知道如何主动关闭应用
1777浏览 • 1回复 待解决
有谁知道应用升级的方式
1613浏览 • 1回复 待解决
有谁知道如何理解栅格布局
321浏览 • 1回复 待解决
有谁知道沙箱目录怎么获取
2211浏览 • 1回复 待解决
有谁知道Image图片取反色
1977浏览 • 1回复 待解决
有谁知道如何使用hdc命令截屏
2767浏览 • 2回复 待解决
有谁知道如何强制退出app?
311浏览 • 1回复 待解决
有谁知道是否支持帧动画
2205浏览 • 1回复 待解决
有谁知道如何获取IMEI码
1935浏览 • 1回复 待解决