如何往鸿蒙系统源码中添加第三方软件包

系统
文章由鸿蒙社区产出,想要了解更多内容请前往:51CTO和华为官方战略合作共建的鸿蒙技术社区https://harmonyos.51cto.com/#zz

[[352390]]

想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.51cto.com/#zz

打 开鸿蒙系统的源码,可以看到有这么一个文件夹:third_party。里面存放的是第三方的代码。

 点开我们可以看到有很多第三方代码:

 后续我们如果需要往系统中添加、移植任何开源代码,都可以添加到这个文件夹中。接下来,教大家如何添加一个自己的软件包,名字为a_myparty。

1. 新建一个文件夹a_myparty

2. 往文件中放置软件包源码

这里我放在的是 myparty.c文件

3. 新建BUILD.gn文件

整个代码目录如下:


4. myparty.c文件内容如下:

其实,我这个只是为了演示的,所以里面代码没什么作用

  1. #include <stdio.h> 
  2.  
  3.  
  4.  
  5.  
  6. void myparty_test(void) 
  7.  
  8.  
  9.     printf("first myparty \r\n"); 
  10.  

 5. BUILD.gn文件内容如下:

BUILD.gn文件主要是描述了软件包的相关信息,包括编译哪些源文件,头文件路径、编译方式(目前Hi3861 只支持静态加载) 

  1. import("//build/lite/config/component/lite_component.gni"
  2.  
  3. import("//build/lite/ndk/ndk.gni"
  4.  
  5.  
  6.  
  7.  
  8. #这里是配置头文件路径 
  9.  
  10. config("a_myparty_config") { 
  11.  
  12.     include_dirs = [ 
  13.  
  14.         "."
  15.  
  16.     ] 
  17.  
  18.  
  19.  
  20.  
  21.  
  22. #这里是配置要编译哪些源码 
  23.  
  24. a_myparty_sources = [ 
  25.  
  26.     "myparty.c"
  27.  
  28.  
  29.  
  30.  
  31.  
  32. #这里是静态链接,类似于Linux系统的 .a文件 
  33.  
  34. lite_library("a_myparty_static") { 
  35.  
  36.     target_type = "static_library" 
  37.  
  38.     sources = a_myparty_sources 
  39.  
  40.     public_configs = [ ":a_myparty_config" ] 
  41.  
  42.  
  43.  
  44.  
  45.  
  46. #这里是动态加载,类似于Linux系统的 .so文件 
  47.  
  48. lite_library("a_myparty_shared") { 
  49.  
  50.     target_type = "shared_library" 
  51.  
  52.     sources = a_myparty_sources 
  53.  
  54.     public_configs = [ ":a_myparty_config" ] 
  55.  
  56.  
  57.  
  58.  
  59.  
  60. #这里是入口,选择是静态还是动态 
  61.  
  62. ndk_lib("a_myparty_ndk") { 
  63.  
  64.     if (board_name != "hi3861v100") { 
  65.  
  66.         lib_extension = ".so" 
  67.  
  68.         deps = [ 
  69.  
  70.             ":a_myparty_shared" 
  71.  
  72.         ] 
  73.  
  74.     } else { 
  75.  
  76.         deps = [ 
  77.  
  78.             ":a_myparty_static" 
  79.  
  80.         ] 
  81.  
  82.     } 
  83.  
  84.     head_files = [ 
  85.  
  86.         "//third_party/a_myparty" 
  87.  
  88.     ] 
  89.  

到了这里我们基本上就写完了。

最后我们要让这个第3放软件包编译到我们固件中。

6. 打开第3方软件包功能,使其参与编译:

打开vendor\hisi\hi3861\hi3861\BUILD.gn 文件

在下图部分添加 "//third_party/a_myparty:a_myparty_static"

别忘了分号。。。 

 7. 使用

到了这里我们的第3方软件包就添加完成了,接下来我们要在app 代码中使用它

打开 applications\sample\wifi-iot\app\my_first_app\BUILD.gn 文件,没有的同学请自己先完成hello world入门例程先。


添加 "//third_party/a_myparty" 头文件路径,BUILD.gn文件内容如下:

  1. static_library("my_first_app") { 
  2.  
  3.     sources = [ 
  4.  
  5.         "hello_world.c" 
  6.  
  7.     ] 
  8.  
  9.     include_dirs = [ 
  10.  
  11.         "//utils/native/liteos/include"
  12.  
  13.         "//third_party/a_myparty" 
  14.  
  15.     ] 
  16.  

 打开hello_world.c文件,内容如下:

  1. #include "ohos_init.h" 
  2.  
  3. #include "ohos_types.h" 
  4.  
  5. #include "stdio.h" 
  6.  
  7. //导入头文件 
  8.  
  9. #include "myparty.h" 
  10.  
  11.  
  12.  
  13.  
  14. void HelloWorld(void) 
  15.  
  16.  
  17.     printf("%s %d \r\n", __FILE__, __LINE__); 
  18.  
  19.     printf("[DEMO] Hello world.\n"); 
  20.  
  21.     //调用第3方软件包 的函数 myparty_test() 
  22.  
  23.     myparty_test(); 
  24.  
  25.  
  26. SYS_RUN(HelloWorld); 

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

  1. [DEMO] Hello world. 
  2.  
  3. first myparty  

 说明添加成功。

想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.51cto.com/#zz

 

责任编辑:jianghua 来源: 鸿蒙社区
相关推荐

2020-10-26 10:18:41

鸿蒙系统源码第三方软件包

2015-11-05 16:44:37

第三方登陆android源码

2011-10-08 14:37:59

漏洞

2022-01-14 09:57:14

鸿蒙HarmonyOS应用

2020-12-08 09:53:46

Fedora软件第三方存储库

2009-01-14 12:45:05

MSNIM苹果

2015-01-20 17:01:30

Android源码QQdemo

2009-04-20 09:36:33

2014-07-25 09:33:22

2021-12-06 09:44:30

鸿蒙HarmonyOS应用

2021-08-26 16:07:46

鸿蒙HarmonyOS应用

2021-03-03 09:42:26

鸿蒙HarmonyOS图片裁剪

2014-07-23 08:55:42

iOSFMDB

2019-07-30 11:35:54

AndroidRetrofit

2021-09-10 10:13:27

Windows 10Windows微软

2023-07-26 08:21:33

2021-08-03 10:07:41

鸿蒙HarmonyOS应用

2011-03-29 09:27:55

UbuntuFlash

2009-11-25 17:19:58

桌面软件Chrome第三方扩展

2021-03-01 14:00:11

鸿蒙HarmonyOS应用
点赞
收藏

51CTO技术栈公众号