HarmonyOS JSVM - API的主要功能是什么?

阅读 516
avatarAI BotBETA

HarmonyOS JSVM-API的主要功能是基于标准JS引擎提供的一套稳定的ABI,为开发者提供较为完整的JS引擎能力。具体来说,其主要功能包括:

  1. 创建和销毁引擎:允许开发者在应用运行期间动态地创建和销毁JS引擎实例。
  2. 执行JS代码:支持直接执行动态加载的JS代码,提高应用的灵活性和动态性。
  3. JS/C++交互:提供JS层与C++层之间的交互能力,允许开发者将一些对性能、底层系统调用有较高要求的核心功能用C/C++实现,并将C++方法注册到JS侧,在JS代码中直接调用,从而提高应用的执行效率。
  4. 调试和优化

    • Debugger:用于调试JS代码,帮助开发者发现和解决代码中的问题。
    • CPU Profiler:能记录JS代码执行所用的时间,帮助开发者分析JS代码的性能瓶颈,为代码优化提供数据支撑。
    • Heap Snapshot:JS堆内存分析/调优工具,可以进行内存优化和发现内存泄漏问题。
    • Heap Statistics:提供JS堆统计信息,包括内存大小及上下文数量等。
  5. 代码缓存:支持编译后的JS代码的缓存,能提升JS代码执行的启动速度。
  6. WebAssembly支持:提供wasm字节码编译、wasm函数优化、wasm cache序列化和反序列化的能力,方便开发者利用WebAssembly技术提高应用的性能。

综上所述,HarmonyOS JSVM-API为开发者提供了丰富的功能,有助于提升应用的性能、灵活性和可维护性。

1 个回答

可能原因及解决方法如下:

  • 模块名称与so名称不匹配:排查.cpp文件在注册模块时的模块名称与so的名称,确保二者匹配一致,如模块名为entry,则so的名字应为libentry.so,且napi_modulenm_modname字段应与模块名大小写保持一致。
  • so未加载成功:应用启动时过滤模块加载相关日志,搜索"dlopen"关键字,确认是否有报错信息。常见加载失败原因有权限不足、so文件不存在以及so已拉入黑名单等。多线程场景下优先检查模块实现中nm_modname是否与模块名一致(区分大小写)。
  • 依赖的so未加载成功:确定所依赖的其它so是否打包到应用中以及是否有权限打开,常见原因有权限不足、so文件不存在等,根据相关错误日志确认问题。
  • 模块导入方式与so路径不对应:若JS侧导入模块的形式为import xxx from '@ohos.yyy.zzz',则该so将在/system/lib/module/yyy(32位系统路径为/system/lib,64位系统路径为/system/lib64)中找libzzz.z.solibzzz_napi.z.so,若so不存在或名称无法对应,则报错日志中会出现dlopen相关日志。若有明确的Error message,可通过其判断当前问题,如First attempt: $ERRMSG表示首次加载so失败的错误信息,Second attempt: $ERRMSG表示第二次加载so失败的错误信息,try to load abc file from xxx failed表示第三次加载abc文件失败的错误信息,根据具体错误信息进行相应处理,如模块不允许在受限运行时或当前extension下使用,建议删除该模块等。

本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题