HarmonyOS鸿蒙Next中AKI库动态注册的ARKTS check问题

HarmonyOS鸿蒙Next中AKI库动态注册的ARKTS check问题 创建一个动态库,使用JSBIND_CLASS导出一个C++类。在对应的类型文件index.d.ts中声明这个类会提示:Declared function ‘xxxx’ has no native implementation.<ArkTSCheck>。虽然可以在其他地方正常导入和调用,但是在其他使用模块中会发现import的类型为any,也无法实现自动提示。请问官方对这个问题有没有解决办法,虽然勉强能使用,但是没有类型信息在arkts中实在是非常难用

8 回复

尊敬的开发者,您好!该功能正在规划中,还请关注后续版本,感谢您的理解与支持。

更多关于HarmonyOS鸿蒙Next中AKI库动态注册的ARKTS check问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


cke_143.png

目前deveco升级到最新的版本了,输入abc没有关联任何调用。 目前不便的问题就是在于没有关联对象信息,所以写的时候必须要随时翻着看定义

1.例如在index.d.ts中:

export declare class ohos_sc{
  constructor();
  connect():void;
  close():void;
}

那么在index.d.ts中,都会被标红,显示 ArkTSCheck警告

2、引用import的方式。 在oh-package.json5文件的"dependencies"字段添加 “abc”:“file:libs/abc.har”, 在具体页面中:

import { ohos_sc } from "abc"

得到的ohos_sc对象是看不到class定义的,但是在使用的时候需要

let abc:ohos_sc;
abc = new ohos_sc();
abc.connect();

虽然可以这样使用不会报错,但是没有自动提示。

开发者您好,您可以通过代码关联使用(输入“abc.”,会关联调用),鼠标悬浮查看class定义诉求已收到,感谢您的支持。

是有这个现象,这是历史遗留问题,但是不影响使用!

这个不会 有人答出来了 麻烦踢我一下 我也学一学

在HarmonyOS Next中,AKI库动态注册的ArkTS检查问题主要涉及ArkTS类型安全验证机制。当使用AKI进行动态能力注册时,系统会执行严格的ArkTS类型检查,确保接口声明与实现的一致性。若出现类型不匹配或未正确声明Native API接口,会导致运行时校验失败。开发者需确保:

  1. 使用准确的ArkTS接口声明规范
  2. 动态注册的Native方法签名与声明完全一致
  3. 避免使用未声明的数据类型 该机制保障了应用在鸿蒙生态中的稳定性和安全性。

在HarmonyOS Next的AKI(ArkTS Kernel Interface)库开发中,遇到动态注册的C++类在TypeScript声明文件(index.d.ts)中提示“未找到原生实现”属于已知的类型系统匹配问题。这通常是因为ArkTS编译器在静态分析时无法完全关联C++底层实现与上层声明。

临时解决方案:

  1. 在声明文件中使用// @ts-ignore// @ts-nocheck注释临时绕过检查
  2. 通过显式类型断言(as SomeType)在调用处补充类型信息
  3. 在模块导入时使用完整路径引用(如import type {Class} from '../index'

该问题已纳入官方优化清单,预计在后续SDK版本中会增强动态绑定类型的推导能力。当前建议保持d.ts声明与C++类方法的严格一致性,包括参数数量和返回类型标注。

回到顶部