Agent Skills: ArkRuntime Interop Development

>

UncategorizedID: openharmonyinsight/openharmony-skills/ohos-dev-arkruntime-interop-development

Install this agent skill to your local

pnpm dlx add-skill https://github.com/openharmonyinsight/openharmony-skills/tree/HEAD/skills/ohos-dev-arkruntime-interop-development

Skill Files

Browse the full folder contents for ohos-dev-arkruntime-interop-development.

Download Skill

Loading file tree…

skills/ohos-dev-arkruntime-interop-development/SKILL.md

Skill Metadata

Name
ohos-dev-arkruntime-interop-development
Description
>

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.