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++ 項目中更可控。

如何選擇