2025年awvs11使用教程(awvs11安装教程)

awvs11使用教程(awvs11安装教程)本文用于说明和介绍编译底层 C 代码生成动态库 so 并且在 harmonyOS 项目中如何进行使用和集成 通过 openharmony SDK 在 linux 环境下编译动态库 so 可打包其他静态库 a 打包到此 so 然后通过 natvie 项目 harmonyOS 集成此 so 并在项目中使用 可参考下面文档进行开发 https gitee

大家好,我是讯享网,很高兴认识大家。



本文用于说明和介绍编译底层C++代码生成动态库so,并且在harmonyOS项目中如何进行使用和集成,通过openharmony SDK在linux环境下编译动态库so,可打包其他静态库.a打包到此so,然后通过natvie项目(harmonyOS),集成此so并在项目中使用。

主要用于在linux环境下编译动态库so,并且打包一些.a第三方库静态库整合到一个so中,后续在鸿蒙项目中进行使用

3.2.1.创建项目

创建项目

image.png
image.png

3.2.2 native c++项目结构

image.png
  1. so:这里使用的是3.1中编译好的so库
  2. index.d.ts: napi中定义的接口(相当于jni中定义好的接口的头文件)
    image.png
 

讯享网
  1. CMakeLists.txt:编译过android ndk的都知道这里不详细说明了,下面是截图
讯享网
  1. hello.cpp:关键文件,相当于android编译中的jni的cpp接口封装文件,harmonyOS中定义为napi,通过此接口的封装可调用底层c++代码的接口.
    这里定义了一个add方法并包含输入和输出的参数。
 

至此harmonyOS-native c++项目架构说明结束。

3.3.1 准备好3.1中编译好的so库,比如HosTest.so

注意:实际编译可能需要生成多个abi架构的so库,armeabi-v7a和arm64-v8a


image.png

3.3.2 将HosTest.so放入libs文件夹(3.2中创建的项目)

这里由于测试只添加了v7a,后续可自行添加.


打开配置文件
修改abi配置文件,build-profile.json5文件
image.png

添加abi配置,根据添加的so文件架构进行配置

3.3.3 将HosTest.so放入libs文件夹(3.2中创建的项目)

① 创建thirdPart文件在cpp下(名称可自定义)


关键文件

② 创建或引入Hello.h文件,此文件为c++项目底层定义的暴露给外部的接口的头文件, 可以看到我们在Hello.h中定义了一个print的方法,并且返回值为string格式,此print方法为我们HosTest.so中的c++底层方法.

讯享网

③ napi接口定义文件中引用Hello

 

④ 修改CMakeLists文件


产出so修改,index.d.et文件上面的.etx描述错误
讯享网
修改so名称和步骤①的头文件文件夹路径

完整代码:

 

⑤ 调用so文件接口

讯享网

至此,整体的第三方so库的使用已经完成。如有问题可以参考下面的问题汇总。

4.1.找不到引用的SO对象以及使用的底层方法

HosTest.print()报错


类似这类找不到引用的错误
解决方案:

① 检查cpp下的.ts文件是否定义了接口


image.png

 

oh-package-json5文件的so配置是否一致

讯享网

③ Hello.h头文件是否包含


image.png

④ napi.cpp的文件是否正常


image.png

此问题原因基本就是某个环节配置的名称不匹配导致的,可以逐步检查解决。

4.2. cpp下的.ts文件出现error

image.png
解决方案: 目前不影响接口调用, 修改cpp下的xxxxx.ts文件修改为xxxxx.d.ts文件,之前修改自定义名称的时候没注意(dog.jpg)

小讯
上一篇 2025-05-28 21:04
下一篇 2025-06-15 20:28

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/148436.html