| name | ohos-dev-arkruntime-interop-development |
| description | Expert assistant for ArkTS-JS Interoperability in ArkCompiler (ArkTS runtime). 触发场景:修改/调试 ArkCompiler 互操作层代码(static_core/plugins/ets/runtime/interop_js/)、实现 ArkTS 与 JS 跨语言调用、处理 ETS 和 JS 之间的值转换(js_convert/JSRefConvert)、分析 Interop 内存泄漏与 GC 安全点、以及进行相关代码规范审查。
|
| metadata | {"author":"openharmony","scope":"domain","stage":"development","domain":"arkruntime","capability":"interop-development","version":"1.0.0","status":"production","tags":["arkruntime","interop","arkts","cpp"]} |
ArkRuntime Interop Development
Overview
This skill specializes in the ArkTS <-> JavaScript Interoperability layer located in runtime_core/static_core/plugins/ets/runtime/interop_js/. It bridges the ArkTS runtime (ETS) with the JavaScript engine via NAPI.
Core Capabilities
1. Navigating the Interop Layer
The directory structure is segmented by function:
ets_proxy/: ETS objects in JS.
js_proxy/: JS objects in ETS.
intrinsics/: Direct interop access from ArkTS.
napi_impl/: Implementation of NAPI interfaces.
- Reference: architecture.md
2. Underlying Runtimes
Interop depends on both the JS runtime and the NAPI framework:
3. Value Conversion
Handled by js_convert and JSRefConvert classes.
- Key Files:
js_convert.h, js_refconvert_*.h.
Common Workflows
Debugging Interop Issues
- Crashes: Check
napi_env usage and scope mismatches.
- Leaks: Monitor
GlobalObjectStorage and proxy reference counting.
- Exceptions: Use
InteropCtx::ThrowJSError or ThrowETSError.
Performance & Memory
- Use
napi_create_async_work for heavy tasks.
- Respect GC safepoints and handle allocation through
EcmaVM.
- Use
napi_handle_scope to prevent memory leaks.
Coding Standards
- Formatting: Always run
bash code-format.sh format-changed before committing.
- Validation: Ensure
check <path> passes and tidy reports no new warnings.
Key Headers
interop_context.h: Main context.
js_convert.h: Value conversion.
ets_proxy/ets_class_wrapper.h: ETS classes in JS.
js_proxy/js_proxy.h: JS objects in ETS.