gpt4 book ai didi

OpenHarmony SA 动态库服务拉起的main入口

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 32 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章OpenHarmony SA 动态库服务拉起的main入口由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

OpenHarmony SA 动态库服务拉起的main入口

简介

OpenHarmony 很多服务都是编译成动态库, 动态库服务,没有main函数入口。服务的拉起的入口在哪?

以在线升级服务为例说明服务入口,说明如下:

一. 服务的动态库:libupdateservice.z.so

这个编译代码里面有,学习者可以在源代码中去看:

配置路径:base\update\updateservice\engine\BUILD.gn 。

二. main入口:sa_main

sa_main是含有main入口的独立可执行文件。学习者可以自己在代码中去看:

配置路径:foundation\distributedschedule\safwk\services\safwk\BUILD.gn 。

三. sa_main如何加载 libupdateservice.z.so

updater_sa.xml配置了动态库libupdateservice.z.so的各项信息.

sa_main通过读取解析updater_sa.xml, 把动态库libupdateservice.z.so加载到自身进程中来.

即运行命令:/system/bin/sa_main /system/profile/updater_sa.xml 。

1. 动态库服务的编译配置

1.1 动态库的编译配置 。

动态库编译配置:

  1. base\update\updateservice\engine\BUILD.gn 

动态库编译后的名称:

  1. libupdateservice.z.so 

1.2 xml的编译配置 。

1.2.1 xml的原始文件 。

原始xml的文件路径:base\update\updateservice\engine\sa_profile\3006.xml 。

内容:

  。

  1. <info> 
  2.     <process>updater_sa</process> 
  3.     <systemability> 
  4.         <name>3006</name
  5.         <libpath>libupdateservice.z.so</libpath> 
  6.         <run-on-create>true</run-on-create
  7.         <distributed>false</distributed> 
  8.         <dump-level>1</dump-level
  9.     </systemability> 
  10. </info> 

1.2.1.1 3006

是UPDATE_DISTRIBUTED_SERVICE_ID的值,该值定义在 。

utils\system\safwk\native\include\system_ability_definition.h中.

1.2.1.2 libupdateservice.z.so:

是服务对应的动态库 。

1.2.2 xml的编译配置BUILD.gn 。

编译文件配置路径:base\update\updateservice\engine\sa_profile\BUILD.gn 。

内容:

  1. import("//build/ohos/sa_profile/sa_profile.gni"
  2.  
  3. ohos_sa_profile("updater_sa_profile") { 
  4.   sources = [ "3006.xml" ] 
  5.  
  6.   part_name = "updater" 

1.2.3 编译配置ohos.build 。

文件路径:base\update\updater\ohos.build 。

内容如下:

OpenHarmony SA 动态库服务拉起的main入口

1.2.4 编译成功生产的文件 。

1.2.4.1 编译后Ubuntu路径:

out/ohos-arm-release/packages/phone/system/profile/updater_sa.xml 。

1.2.4.2 内容:

  。

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <info> 
  3.     <process>updater_sa</process> 
  4.     <loadlibs> 
  5.         <libpath>libupdateservice.z.so</libpath> 
  6.     </loadlibs> 
  7.     <systemability> 
  8.         <name>3006</name
  9.         <libpath>libupdateservice.z.so</libpath> 
  10.         <run-on-create>true</run-on-create
  11.         <distributed>false</distributed> 
  12.         <dump-level>1</dump-level
  13.     </systemability> 
  14. </info> 

1.2.4.3 烧入开发板后的路径:

system/profile/updater_sa.xml 。

OpenHarmony SA 动态库服务拉起的main入口

2. 服务的启动配置

2.1 服务启动配置 。

配置文件路径:base\update\updateservice\engine\etc\updater_sa.cfg 。

文件内容如下:

  1.     "jobs" : [{ 
  2.             "name" : "boot"
  3.             "cmds" : [ 
  4.                 "start updater_sa" 
  5.             ] 
  6.         } 
  7.     ], 
  8.     "services" : [{ 
  9.             "name" : "updater_sa"
  10.             "path" : ["/system/bin/sa_main""/system/profile/updater_sa.xml"], 
  11.             "uid" : "system"
  12.             "gid" : ["system""shell"
  13.         } 
  14.     ] 

2.2 启动编译配置 。

配置文件路径:base\update\updateservice\engine\BUILD.gn 。

内容如下:

OpenHarmony SA 动态库服务拉起的main入口

2.3 编译成功生成的文件 。

编译后Ubuntu路径:out\ohos-arm-release\packages\phone\system\etc\init\updater_sa.cfg 。

烧入开发板后的路径:system\etc\init\updater_sa.cfg 。

3 运行过程

每次开机,init阶段会读取配置updater_sa.cfg,启动updater_sa。即拉起服务动态库libupdateservice.z.so 。

进程启动查询:ps -A | grep updater 。

串口终端显示:

OpenHarmony SA 动态库服务拉起的main入口

重新拉取服务

运行hdc_std.exe shell 终端运行 sa_main /system/profile/updater_sa.xml:

OpenHarmony SA 动态库服务拉起的main入口

串口终端查询,多运行了一个update_sa进程:

OpenHarmony SA 动态库服务拉起的main入口

服务拉起注册到SAMGR进程的日志:

OpenHarmony SA 动态库服务拉起的main入口

服务拉起之后:

客户端就可以与服务端通信了,客户端获取与服务端通信的对象 代码块如下所示:

OpenHarmony SA 动态库服务拉起的main入口

原文链接:https://harmonyos.51cto.com 。

最后此篇关于OpenHarmony SA 动态库服务拉起的main入口的文章就讲到这里了,如果你想了解更多关于OpenHarmony SA 动态库服务拉起的main入口的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com