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

    文章

    641

    浏览量

    29208
  • 软件包
    +关注

    关注

    0

    文章

    104

    浏览量

    11594
  • 鸿蒙系统
    +关注

    关注

    183

    文章

    2634

    浏览量

    66344

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

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

收藏 人收藏

    评论

    相关推荐

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

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

    鸿蒙Flutter实战:05-使用第三方插件

    # 鸿蒙Flutter 实战:使用第三方插件 鸿蒙Flutter开发,如果涉及到使用原生功能,就要使用插件。使用插件有两种方式,一种是
    发表于 10-22 21:54

    瑞芯微RK3566鸿蒙开发板Android11修改第三方输入法为默认输入法

    本文适用于触觉智能所有支持Android11系统的开发板修改第三方输入法为默认输入法。本次使用的是触觉智能的Purple Pi OH鸿蒙开源主板,搭载了瑞芯微RK3566芯片,类树莓派设计,是Laval官方社区主荐的一款
    的头像 发表于 09-24 09:43 447次阅读
    瑞芯微RK3566<b class='flag-5'>鸿蒙</b>开发板Android11修改<b class='flag-5'>第三方</b>输入法为默认输入法

    维天地低代码开发平台助力第三方质检行业数据可视化

    第三方检验是由独立于买卖双方利益之外的第三方机构(例如专业的监督检验机构)执行的,这些机构以公正、公平、权威的非当事人身份,依据双方共同认可的法律、标准和合同等进行商品的符合性检验和认证活动
    的头像 发表于 08-09 13:59 273次阅读
    <b class='flag-5'>三</b>维天地低代码开发平台助力<b class='flag-5'>第三方</b>质检行业数据可视化

    请问esp8266会开放使用第三方云服务器吗?

    如题,esp8266会开放使用第三方云服务器吗,如百度,阿里云服务器?
    发表于 07-12 11:40

    是否有可能在支持gdb的第三方集成开发环境中使用DAS配置调试?

    是否有可能在支持 gdb 的第三方集成开发环境中使用 DAS 配置调试?
    发表于 07-02 07:29

    微软或将开放Xbox主机授权给第三方厂商

    据悉,5 月 26 日,知名媒体 Windows Central 的编辑 Jez Corden 揭露了微软即将遵循第三方手柄流程,允许在其 XBOX 主机上引入第三方产品。
    的头像 发表于 05-27 15:18 660次阅读

    MacPaw将在欧盟成员国推出第三方应用商店Setapp

    5月14日,MacPaw正式宣布将在今年5月14日欧盟成员国面向苹果iPhone推出第三方应用商城Setapp。自今年2月起,MacPaw已着手筹备该平台。S
    的头像 发表于 05-14 10:14 376次阅读

    谷歌开放ZenDeviceEffects API,助第三方应用实现睡前屏幕管理

    据报道,谷歌近日安卓 15 开发者预览版 2 推出了全新 ZenDeviceEffects API,允许第三方应用访问数字健康的就寝模式功能。
    的头像 发表于 05-08 16:41 483次阅读

    Labview如何内嵌操作第三方EXE程序!

    自己在网上搜了下相关资料,能把第三方EXE内嵌进入容器里,但是有个问题,这个第三方软件必须手动拖到容器正中间,手动最大化。请问有什么方法可以自动实现吗? 下图是我内嵌的POLL 软件
    发表于 04-18 14:26

    鸿蒙OS开发学习:【第三方库调用】

    Stage模型,如何调用已经上架到[三方库中心]的社区库和项目内创建的本地库。
    的头像 发表于 04-14 11:34 916次阅读
    <b class='flag-5'>鸿蒙</b>OS开发学习:【<b class='flag-5'>第三方</b>库调用】

    微软或将引入第三方数字游戏商店至Xbox平台

    微软选择引入这些第三方游戏平台,一面可以增加自身拥有的硬件资源和服务优势;另一面,也是为了吸引那些电脑端能够自由选择游戏购买渠道的游戏用户。据悉,此前的Xbox系列产品都是只内置
    的头像 发表于 03-27 15:51 492次阅读

    Meta Quest头显将支持多款安卓第三方应用并行

    Meta已悄然启动了与此相关的功能,意味着Quest头显可同时操作多个第三方Android应用。在此之前,Quest对第三方Android应用有严格限制,用户每次仅能打开一个,无法实现同屏幕并行多个第三方应用进程。
    的头像 发表于 03-11 10:58 750次阅读

    苹果iOS 17.4版允许欧盟地区用户使用第三方应用商店下载应用

    3月6日,苹果正式推出iOS 17.4版本,首次符合欧州《数字市场法》规定,引入“第三方应用商店”选项,让iPhone用户能从非App Store处下载应用程序。
    的头像 发表于 03-06 10:51 878次阅读

    MacPaw将于4月欧洲市场推出Setapp第三方应用商城

    3月1日报道,知名厂商MacPaw于今日发表声明,宣称其自有的第三方应用商城Setapp将进军欧洲市场,发布会定于今年4月举行,并且官网预告了可供用户试用的候选页面,以吸引更多人参与到Setapp移动版本Beta的测试来。
    的头像 发表于 03-01 10:16 569次阅读