Kuikly 原生 API 扩展机制对比总结

Kuikly 原生 API 扩展机制对比总结,小程序跳过

扩展原生API

1. ​Kuikly 侧(通用)​​

  • ​核心类 ​:继承 Module基类,实现 moduleName()方法。

  • ​通信方式​:

    • 异步调用 :通过 toNative方法传递 callbackFn接收返回值。
    • 同步调用 :通过 toNative设置 syncCall=true直接返回结果。
  • ​注册方式 ​:在 Pager子类中重写 createExternalModules,以键值对形式注册模块(键名需与原生侧一致)。

  • ​辅助方法 ​:提供 syncToNativeMethod和 asyncToNativeMethod简化调用。

2. ​Android 侧​

  • ​核心类 ​:继承 KuiklyRenderBaseModule,重写 call方法(区分参数类型)。

  • ​方法实现​:

    • 通过 method参数匹配 Kuikly 侧方法名。
    • 无返回值方法:直接执行原生逻辑(如 Log.d)。
    • 异步回调:通过 KuiklyRenderCallback.invoke返回结果。
    • 同步返回:直接 return结果(如字符串)。
  • ​注册方式 ​:在 registerExternalModule中调用 moduleExport,键名需与 Kuikly 侧一致。

3. ​iOS 侧​

  • ​核心类 ​:继承 KRBaseModule,类名必须与 Kuikly 侧注册名一致(如 KRMyLogModule)。

  • ​方法实现​:

    • 方法名与 Kuikly 侧 toNative的 methodName严格匹配。
    • 参数固定为 NSDictionary,通过 HR_PARAM_KEY提取参数。
    • 异步回调:从参数中获取 KuiklyRenderCallback并调用。
    • 同步返回:直接 return结果。
  • ​特点​:依赖运行时动态查找方法,需严格命名。

4. ​鸿蒙侧(ArkTS)​​

  • ​核心类 ​:继承 KuiklyRenderBaseModule,需实现 syncMode()(决定是否支持同步调用)。

  • ​方法实现​:

    • 通过 switch-case分发 method调用。
    • 异步回调:调用 callback函数返回结果。
    • 同步返回:直接 return结果。
  • ​注册方式 ​:在 getCustomRenderModuleCreatorRegisterMap中通过 Map注册模块。


关键对比点

​端​ ​基类​ ​方法匹配方式​ ​回调机制​ ​同步支持​ ​注册方式​
​Kuikly​ Module 方法名直接调用 CallbackFn或同步返回 是(syncCall) createExternalModules映射注册
​Android​ KuiklyRenderBaseModule call方法内 switch KuiklyRenderCallback.invoke 是 moduleExport动态注册
​iOS​ KRBaseModule 方法名动态反射 从参数提取 callback调用 是 类名必须与 Kuikly 侧一致(自动注册)
​鸿蒙​ KuiklyRenderBaseModule call方法内 switch 直接调用 callback参数 需 syncMode()返回 true Map键值对注册

注意事项

  1. ​命名一致性​:Kuikly 与原生侧的模块名、方法名必须严格一致(iOS 侧类名需完全匹配)。

  2. ​线程模型​:

    • Android/iOS 异步回调默认在主线程,同步调用在子线程。
    • 鸿蒙需通过 syncMode()显式声明是否支持同步。
  3. ​参数传递​:

    • 基本类型/数组可直接传递,JSON 需序列化为字符串。
    • iOS 参数统一封装为 NSDictionary,鸿蒙/Android 可灵活处理。

通过这套机制,Kuikly 实现了跨平台 API 的统一扩展,开发者只需遵循各端规范即可复用原生能力。

相关推荐
程序员大阳25 分钟前
副队长CSS教程(30)–CSS Grid 实战:实现复杂自适应表单布局
前端·css·自适应·grid·表单
Csvn30 分钟前
微前端实现
前端
Chrischaan1 小时前
做 AI 塔罗小程序时,我为什么不让大模型自己抽牌:一次上线复盘
前端
骑着蜗牛撵大象3272 小时前
LangChain 工具调用从声明到闭环:给智能体接上真实的手脚
前端
数据掘金2 小时前
百度统计后台页面数据异常?从手动调用时机开始排查
前端
hunteritself2 小时前
10 层 4K 实时剪辑,国产工作站进入广电制作核心
大数据·前端·人工智能·深度学习·transformer
踩着两条虫2 小时前
我在浏览器里“盖”了一个村:Vue + Three.js 大屏开发踩坑记
前端·vue.js·three.js
mbshqqb2 小时前
TypeScript基础教程之同步生成器
前端·javascript·typescript
嘟嘟同学和妮妮同学2 小时前
【升级】一个中国历史可视化站:皇帝时间线梳理、古代思想流派、诗词鉴赏 (2)
前端·html
暗夜行者之光3 小时前
LangGraph + MCP 实战:构建"自然语言查数据"的 ChatBI Agent
前端·后端