HarmonyOS 鸿蒙Next中CANN Kit Demo API版本适配问题

HarmonyOS 鸿蒙Next中CANN Kit Demo API版本适配问题 官方文档中给的CANN Kit Demo 在默认的API 12 / 15版本跑不起来 但Readme里标注了 HarmonyOS NEXT Developer Beta1及以上的 手机设备均可运行

DEMO仓库地址: CANN Kit Demo

运行后闪退 导入的so库不成功 为undefined

cke_8131.png


更多关于HarmonyOS 鸿蒙Next中CANN Kit Demo API版本适配问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html

8 回复

尊敬的开发者,您好!

您的问题已受理,请您耐心等待,感谢您的理解与支持!

更多关于HarmonyOS 鸿蒙Next中CANN Kit Demo API版本适配问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


我找到了 是打开维测功能的API 要求API18及以上的 不需要维测的可以关掉

// CANNKit/hiai_options.h 中的 HMS_HiAIOptions_SetOmOptions 函数及入参中的 HiAI_OmType 枚举需要API18及以上
typedef enum {
    /** Disables operating and maintenance. */
    HIAI_OM_TYPE_OFF = 0,
    /** Profiling type of operating and maintenance. */
    HIAI_OM_TYPE_PROFILING = 1,
} HiAI_OmType;

OH_NN_ReturnCode HMS_HiAIOptions_SetOmOptions(OH_NNCompilation* compilation, HiAI_OmType type, const char* outputDir);

请问下是否有具体的报错信息,我们根据信息排查下具体原因。

Module name: com.huawei.canndemo
Version: 1.0.0
VersionCode: 1000000
PreInstalled: No
Foreground: Yes
Pid: 58888
Uid: 20020055
Reason: TypeError
Error name: TypeError
Error message: Cannot read property InitLabels of undefined
Stacktrace:
    at onCreate (entry/src/main/ets/entryability/EntryAbility.ets:24:15)

报错信息:启动就报错闪退,import 导入的 hiai 整个都是 undefined

Demo中部分API需要API18才能使用,已在文档中标注,您可以参考以下链接:https://gitee.com/harmonyos_codelabs/hiaifoundationkit-codelab-clientdemo-cpp

最低兼容版本API 18、最低兼容版本API 12~17,谢谢。

不好意思 我在Readme里没看到呀 那能不能提供一个兼容API12的Demo示例呢 谢谢,

鸿蒙Next中CANN Kit Demo适配需使用API 10版本。CANN Kit在鸿蒙Next仅支持ArkTS/JS开发,需在DevEco Studio中配置API 10的SDK路径,并在module.json5中声明"apiVersion": 10。现有CANN算子需通过NAPI机制封装调用,不支持直接C++代码集成。Demo工程需使用Stage模型重构,依赖包需更新至鸿蒙Next专用版本。

从错误信息来看,这是典型的动态库加载失败问题。根据截图显示,libcann_client.so 在运行时无法正确加载,导致符号解析失败。

可能的原因和解决方案:

  1. 架构匹配问题:检查设备架构与so库编译架构是否一致。HarmonyOS Next目前主要支持arm64-v8a,确保so库是针对该架构编译的。

  2. 依赖库缺失:使用readelf -d检查so库的依赖关系,确认所有依赖库都已正确部署到设备上。

  3. 部署路径问题:确认so库放置在正确的目录中。在HarmonyOS应用中,native库应放在src/main/resources/rawfile/lib/对应架构目录下。

  4. API级别兼容性:虽然文档说支持API 12/15,但可能需要重新编译so库。检查编译时使用的NDK版本是否与当前HarmonyOS SDK匹配。

建议重新编译CANN Kit的native库,确保使用最新的HarmonyOS Native SDK,并验证部署配置。同时检查应用配置文件中的native库声明是否正确。

回到顶部