HarmonyOS 鸿蒙Next 如何引用已经编译好的so

HarmonyOS 鸿蒙Next 如何引用已经编译好的so 单开了一个C++项目单独编译完成了一个so,然后将这个so挪到非C++的工程里面去引用。

目前的状况就是我把so放置entry下的libs/arm64-v8a下面,然后ets文件引用

提示:

Cannot find module ‘***.so’ or its corresponding type declarations. <ArkTSCheck>

这个是要在oh-package.json5文件里面加dependencies吗,如果是该怎么写这个路径?

还是说只能在这个非C++工程中创建cmake之类的文件导入到里面


更多关于HarmonyOS 鸿蒙Next 如何引用已经编译好的so的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

是要配dependencies的,可以参考下这个:

https://developer.huawei.com/consumer/cn/doc/harmonyos-faqs-V5/faqs-compiling-and-building-4-V5

还可以通过动态加载dlopen的方式,看下这个是否符合需求,参考:

https://developer.huawei.com/consumer/cn/doc/harmonyos-faqs-V5/faqs-ndk-4-V5

dependencies里不支持这种写法,应该明确列出每个依赖库的路径和名称,而不是使用通配符匹配。目前来看只能使用这种方式了:

https://developer.huawei.com/consumer/cn/doc/harmonyos-faqs-V5/faqs-ndk-21-V5

更多关于HarmonyOS 鸿蒙Next 如何引用已经编译好的so的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在makefile连接so库,然后编写napi方法,

在HarmonyOS(鸿蒙)系统中,引用已经编译好的.so(共享库)文件,通常是在开发原生应用(使用C/C++代码)或者通过某些机制在Java/Kotlin代码中调用本地方法时涉及的。不过,根据要求,我们不涉及Java或C语言的详细解释。

在HarmonyOS项目中引用.so文件,你需要确保以下几点:

  1. 放置.so文件:将.so文件放置在项目的libs目录下,并根据不同的CPU架构(如armeabi-v7aarm64-v8ax86x86_64)进行分类。

  2. 配置build.gradle(如果是使用Gradle构建系统):在build.gradle文件中,配置ndksourceSets,指定.so文件的路径。例如:

    android {
        defaultConfig {
            ndk {
                abiFilters 'armeabi-v7a', 'arm64-v8a' # 根据需要添加其他架构
            }
        }
        sourceSets {
            main {
                jniLibs.srcDirs = ['libs']
            }
        }
    }
    
  3. 加载.so文件:在代码中,使用System.loadLibrary("your_library_name")来加载对应的.so文件(不包含前缀lib和后缀.so)。

如果问题依旧没法解决请联系官网客服, 官网地址是 https://www.itying.com/category-93-b0.html

回到顶部