打开鸿蒙系统的源码,可以看到有这么一个文件夹:third_party。里面存放的是第三方的代码。
点开我们可以看到有很多第三方代码:
后续我们如果需要往系统中添加、移植任何开源代码,都可以添加到这个文件夹中。
接下来,教大家如何添加一个自己的软件包,名字为 a_myparty。
01
新建一个文件夹 a_myparty
02
往文件中放置软件包源码
这里我放在的是 myparty.c 文件。
03
新建 build.gn 文件
整个代码目录如下:
04
myparty.c 文件内容如下
其实,我这个只是为了演示的,所以里面代码没什么作用:
#include voidmyparty_test(void) { printf(firstmyparty ); }
05
build.gn 文件内容如下
build.gn 文件主要是描述了软件包的相关信息,包括编译哪些源文件,头文件路径、编译方式(目前 hi3861 只支持静态加载)。
import(//build/lite/config/component/lite_component.gni) import(//build/lite/ndk/ndk.gni) #这里是配置头文件路径 config(a_myparty_config){ include_dirs=[ ., ] } #这里是配置要编译哪些源码 a_myparty_sources=[ myparty.c, ] #这里是静态链接,类似于linux系统的.a文件 lite_library(a_myparty_static){ target_type=static_library sources=a_myparty_sources public_configs=[:a_myparty_config] } #这里是动态加载,类似于linux系统的.so文件 lite_library(a_myparty_shared){ target_type=shared_library sources=a_myparty_sources public_configs=[:a_myparty_config] } #这里是入口,选择是静态还是动态 ndk_lib(a_myparty_ndk){ if(board_name!=hi3861v100){ lib_extension=.so deps=[ :a_myparty_shared ] }else{ deps=[ :a_myparty_static ] } head_files=[ //third_party/a_myparty ] }
到了这里我们基本上就写完了。最后我们要让这个第 3 放软件包编译到我们固件中。
06
打开第 3 方软件包功能,使其参与编译
打开 vendorhisihi3861hi3861build.gn 文件,在下图部分添加 //third_party/a_myparty:a_myparty_static,别忘了分号。
07
使用
到了这里我们的第 3 方软件包就添加完成了,接下来我们要在 app 代码中使用它。
打开 applicationssamplewifi-iotappmy_first_appbuild.gn 文件,没有的同学请自己先完成 hello world 入门例程先。
添加 //third_party/a_myparty 头文件路径,build.gn 文件内容如下:
static_library(my_first_app){ sources=[ hello_world.c ] include_dirs=[ //utils/native/liteos/include, //third_party/a_myparty ] } 打开 hello_world.c 文件,内容如下:#includeohos_init.h #includeohos_types.h #includestdio.h //导入头文件 #includemyparty.h voidhelloworld(void) { printf(%s%d ,__file__,__line__); printf([demo]helloworld. ); //调用第3方软件包的函数myparty_test() myparty_test(); } sys_run(helloworld);
08
最后编译测试即可看到打印信息
[demo]helloworld. firstmyparty
说明添加成功。
原文标题:如何往鸿蒙系统源码中添加第三方软件包
文章出处:【微信公众号:harmonyos技术社区】欢迎添加关注!文章转载请注明出处。
digilentUniversal 主板介绍
关于OPPOR11和OPPOR11Plus性能、价格、外形盘点:美拍界的王者终究无人能掩盖锋芒!
5G技术将助力网络安全产业的快速布局
研华物联网网关助力裕电能源 打造7x24小时无人值守电动汽车充电服务
爱立信顺利完成5G端到端网络切片管理技术试验所有测试项
详细教程:在鸿蒙系统源码中添加第三方软件包
第三届中国集成电路设计创新大会暨无锡IC应用博览会(ICDIA 2023)7月即将在无锡召开
奥迪与上汽合作进展,将为建立供应链
从语言学到深度学习NLP,一文概述自然语言处理
智能家居设备入口论,是智能音箱还是智能闹钟
燧原科技亮相世界人工智能大会 构建AIGC时代算力底座
中国新能源汽车产业正在崛起 核心技术非常重要
交易价值超过300亿美元?高通洽谈收购恩智浦
迷你组合音响的无线技术
手机芯片制造公司排名如何
史上最全的锂离子电池辊压工艺介绍
浅谈GPL、BSD等开源协议介绍
鸭嘴兽宣布完成数千万元A3轮融资
针对RF PCBA设计的一些建议
借助VisionPro Deep Learning 开启外观瑕疵检测的无人化之路