
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
这四个词都出现在「JavaScript 怎么调到底层」这条链路上,但它们不在同一层,也不能互相替换。混用时,问题通常不是语法,而是找错了边界。 JNI 最早、也最窄。它是 JVM 的官方 C 接口:Java / Kotlin 调 C/C++,或反过来。Android 上几乎所有「Native 库」最后都要过 JNI。它不认识 JavaScript,也不认识 ArkTS。有人说「JS 调了 Nati
JSI 回调默认跑在 JS 或任务线程上。图形框架、窗口和控件树通常只认 UI 线程。脚本能调到 Native,只说明桥已经通了,并不说明当前线程可以改界面。把这两件事当成一回事,是轻量设备上很常见的问题。 两条线程的职责不一样。JS 线程负责跑脚本、处理模块调用、把参数从脚本世界翻译成 C++;UI 线程负责布局、绘制、动画和控件状态。在 JS 回调里直
JSI 值活在 JS 引擎的堆上。轻量设备这块堆不大,模块又经常一次返回十几个字段,只创建不释放,很快就会把堆顶满。所以值的生命周期必须显式管理,不能按普通 C++ 局部变量来想。 可以先记三条。第一,谁创建或取出,谁释放。创建对象、字符串、数字,以及按名字取出的属性,用完都要释放。从值里拷出来的 C 字符串,走字符串专用的释放接口,不要和值释放混用。第二,返回给 JS 的那一个值不要提前放。函数
轻量 OpenHarmony 设备上,页面多半是 JS,真正碰硬件和系统能力的是 C++。脚本不能直接操作外设、图形栈或系统服务,中间需要一座稳定的桥。ACE Lite 提供的这座桥叫 JSI(JavaScript Interface)。它把引擎细节挡在后面,JS 只看见模块名和方法名,C++ 负责落地。换脚本引擎时,页面和模块接口可以尽量不动。 JSI 里往来的都是JSI







