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 的统一扩展,开发者只需遵循各端规范即可复用原生能力。

相关推荐
2601_962885721 小时前
quotes 字段全解:涨跌幅、振幅、换手率的口径与单位
java·前端·spring
excel1 小时前
encodeURI 和 encodeURIComponent 有什么区别?
前端
前端精髓1 小时前
调用openrouter的免费API模型
java·前端·javascript
赛博守夜人2 小时前
AI安全攻防与治理之十四:AI 安全测试不能脱离传统安全,Web、API、移动端与模型攻击面的组合拳
前端·人工智能·安全
开开心心_Every2 小时前
快速隐藏程序工具自定义快捷键一键切换
java·开发语言·前端·spring·智能手机·word·intellij-idea
networknomad2 小时前
OpenReplay:自己搭的会话回放工具,给前端排错用的
前端·其他
缓慢更新3 小时前
AI 辅助生成单测:从接口定义到用例的流水线
java·服务器·前端·网络·数据库·人工智能
陈随易4 小时前
AI 运维服务器,安全又可靠的方法
前端·后端·程序员
风骏时光牛马4 小时前
AI稳定性治理体系构建与疑难问题深度分析
前端
IT_陈寒5 小时前
JavaScript的this坑人实录,这次我真的记下来了
前端·人工智能·后端