Skip to main content
AKI (Alpha Kernel Interacting) 是 HarmonyOS 上另一个 FFI 开发框架,与 arkffi 有相似的定位但设计理念完全不同。

架构对比

arkffi 的优势场景

1. 调用外部预构建的 .so

arkffi 最核心的优势:不需要编译,不需要源码。当你有一个由第三方提供的、独立编译的 .so(比如闭源 SDK、NDK 编译的算法库、CLion 工程产物),arkffi 可以直接在运行时加载并调用其函数:
AKI 无法做到这一点——它要求将所有 C++ 源码纳入项目编译流程。

2. 快速原型开发

arkffi 仅需 ohpm install arkffi,无需修改 CMakeLists.txt、无需写 C++、无需理解 NAPI。从安装到调用第一个 C 函数只需几分钟。

3. bun:ffi 迁移或交叉开发

如果团队熟悉 bun:ffi 的 dlopen(path, { funcName: { args, returns } }) 声明式风格,arkffi 提供完全相同的 API 模式,学习成本为零。

4. 动态库热加载场景

通过 ffi.load / ffi.close 可在运行时反复加载和卸载 .so,适用于插件系统或动态模块场景。

5. 混合类型参数的灵活调用

arkffi 的类型编码系统('i''d''s' 等)支持任意混合签名的一次性调用,无需为每种签名单独写 C++ 包装:

AKI 的优势场景

  • 需要绑定 C++ 类/结构体:AKI 通过 JSBIND_CLASSJSBIND_METHOD 可将 C++ 类完整暴露给 ArkTS。
  • 需要复杂异步操作:AKI 内置 TaskRunnerAsyncWorker
  • 兼容 API 9~11 旧版本:arkffi 需要 API 12+。
  • 团队熟悉 C++ 宏模式:AKI 的编译时绑定方式在大型 C++ 项目中更可控。

如何选择