0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

详细教程:在鸿蒙系统源码中添加第三方软件包

电子工程师 来源:HarmonyOS技术社区 作者:HarmonyOS技术社区 2020-10-24 11:12 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

打开鸿蒙系统的源码,可以看到有这么一个文件夹: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 文件,内容如下:#include"ohos_init.h" #include"ohos_types.h" #include"stdio.h" //导入头文件 #include"myparty.h" voidHelloWorld(void) { printf("%s%d ",__FILE__,__LINE__); printf("[DEMO]Helloworld. "); //调用第3方软件包的函数myparty_test() myparty_test(); } SYS_RUN(HelloWorld);

08

最后编译测试即可看到打印信息

[DEMO]Helloworld. firstmyparty

说明添加成功。

责任编辑:PSY

原文标题:如何往鸿蒙系统源码中添加第三方软件包

文章出处:【微信公众号:HarmonyOS技术社区】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 源码
    +关注

    关注

    8

    文章

    682

    浏览量

    31082
  • 软件包
    +关注

    关注

    0

    文章

    113

    浏览量

    12085
  • 鸿蒙系统
    +关注

    关注

    183

    文章

    2642

    浏览量

    69325

原文标题:如何往鸿蒙系统源码中添加第三方软件包

文章出处:【微信号:gh_834c4b3d87fe,微信公众号:OpenHarmony技术社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    DEKRA德凯获得沃尔沃汽车第三方实验室认可资质

    近日,DEKRA德凯上海实验室成功通过沃尔沃汽车材料工程中心的严格评审,被正式列入其认可的第三方实验室名单。
    的头像 发表于 10-16 10:27 419次阅读

    SEGGER Ozone调试器支持第三方调试工具

    SEGGER强大的Ozone调试器和性能分析器,长期以来一直深受J-Link和J-Trace用户的信任,现在可以支持第三方调试工具了。
    的头像 发表于 09-29 11:45 685次阅读

    电子测试行业第三方检测机构如何解决平台灵活度低,维护困难等痛点问题?

    竞争激烈的市场环境第三方检测机构面临着诸多挑战,尤其是来料测试环节。某权威第三方检测机构就曾深陷困境,他们一
    的头像 发表于 08-06 17:07 595次阅读
    电子测试行业<b class='flag-5'>中</b>的<b class='flag-5'>第三方</b>检测机构如何解决平台灵活度低,维护困难等痛点问题?

    如何集成第三方支付API到电商网站

    电商网站,集成第三方支付API是确保交易安全、提升用户体验的关键步骤。本文将逐步指导您完成整个流程,从选择支付提供商到上线后的监控。文章结构清晰,包含代码示例和实用建议,帮助您高效实现支付
    的头像 发表于 07-16 10:35 420次阅读
    如何集成<b class='flag-5'>第三方</b>支付API到电商网站

    天合跟踪获得DNV第三方风洞测试审查报告

    近日, 天合跟踪获得DNV颁发的中国支架行业首张风洞实验第三方审查报告。该风洞报告由天合跟踪与同济大学合作,针对开拓者1P跟踪支架进行了全新的刚性模型测压试验和先进动力学分析研究,并由DNV进行独立
    的头像 发表于 07-08 17:35 674次阅读

    第三方工业互联网平台有哪些

    第三方工业互联网平台有哪些
    的头像 发表于 06-14 15:48 699次阅读

    钛和集团荣获零跑汽车第三方实验室资质认可

    近期,钛和集团顺利通过了浙江零跑科技股份有限公司(以下简称“零跑汽车”)对第三方实验室的能力验证及资质审核,助力零跑汽车实现“成为值得尊敬的世界级智能电动车企”的品牌愿景。
    的头像 发表于 06-13 17:00 951次阅读

    SGS荣获比亚迪乘用车第三方实验室资质认可证书

    近日,国际公认的测试、检验和认证机构SGS(以下简称:SGS)位于重庆的标瑞新能源实验室(以下简称:SGS-CEC)荣获比亚迪乘用车实验室认可委员会(以下简称:比亚迪)颁发的“乘用车第三方实验室资质认可证书”。
    的头像 发表于 05-20 15:04 890次阅读

    技术分享 | RK3568编译第三方驱动

    这里就以我司IAC-RK3568-Kit开发板为例,分享如何在当前内核下编译第三方驱动模块。我们需要向模块供应商拿到一份适配Linux的驱动源码,这里主要是要向供应
    的头像 发表于 03-06 17:25 1826次阅读
    技术分享 | RK3568编译<b class='flag-5'>第三方</b>驱动

    第三方的DLP3010-LC开发板USB转I2C失败怎么解决?

    我们从第三方光机厂商购买了DLP3010-LC开发板,该开发板对外只有I2C接口,需要自己购买了USB转I2C模块,于是我们购买了TI推荐的CYPRESS的CY7C65215开发板USB转I2C桥
    发表于 02-28 06:51

    第三方的dlp3010板子时遇到的几个问题求解

    您好,在用第三方的dlp3010板子时遇到了如下问题: 固件能够更新,系统上电后,初始proj_on为低,resetz为低,intz为低;手动拉高proj_on和cypress的gpio6,能够
    发表于 02-26 07:19

    i.MX8M Yocto工程更新第三方软件包

    NXPi.MX8M系列依托于Yocto工程进行简单快捷的配置,可以方便增删第三方软件包以及更改内核、Uboot源码等。目前有些客户希望能够升级Yocto自带软件版本,这里就以我司
    的头像 发表于 02-12 08:11 1266次阅读
    i.MX8M Yocto工程更新<b class='flag-5'>第三方</b><b class='flag-5'>软件包</b>

    EE-303:将VisualDSP线程安全库与第三方RTOS配合使用

    电子发烧友网站提供《EE-303:将VisualDSP线程安全库与第三方RTOS配合使用.pdf》资料免费下载
    发表于 01-07 14:09 0次下载
    EE-303:将VisualDSP线程安全库与<b class='flag-5'>第三方</b>RTOS配合使用

    鸿蒙Flutter实战:14-现有Flutter 项目支持鸿蒙 II

    ││└── widgets #通用小型 widgets, 纯dart编写的 Flutter UI 组件 │├── components #封装组件库,可以依赖于第三方库/第三方插件,或依赖于 plugins的插件
    发表于 12-26 14:59

    第三方检测机构该如何提升核心竞争力?

    国家“一带一路”和“智能制造2025”等政策的引领下,面对竞争日益激烈的国际环境,作为全球最大的制造业国家,中国的检测行业正经历着迅猛的发展,成为全球增长最快、潜力最大的市场之一。 第三方检测逐渐
    的头像 发表于 12-17 15:44 1167次阅读
    <b class='flag-5'>第三方</b>检测机构该如何提升核心竞争力?