更多信息请访问:https://harmonyos.51cto.com,与华为官方共同打造的鸿蒙技术社区。OpenHarmony简介很多服务都编译成动态库,动态库服务,没有main函数入口。服务的上拉入口在哪里?以在线升级服务为例说明服务入口,说明如下:1、服务的动态库:libupdateservice.z.so,在代码中编译,学习者可在源码中查看代码:配置路径:base\update\updateservice\engine\BUILD.gn2.主入口:sa_mainsa_main是一个独立的可执行文件,有主入口。学习者可以自行查看代码:配置路径:foundation\distributedschedule\safwk\services\safwk\BUILD.gn3.sa_main如何加载libupdateservice.z.soupdater_sa.xml并配置动态库libupdateservice.z.so的项信息。sa_main读取并解析updater_sa.xml,并将动态库libupdateservice.z.so加载到自己的进程中。即运行命令:/system/bin/sa_main/system/profile/updater_sa.xml1、编译配置动态库服务1.1编译配置动态库动态库编译配置:base\update\updateservice\engine\BUILD.gn动态库编译后名称:libupdateservice.z.so1.2xml编译配置1.2.1xml原文件原xml文件路径:base\update\updateservice\engine\sa_profile\3006.xml内容:updater_sa3006libupdateservice.z.sotruefalse11.2.1.13006:是UPDATE_DISTRIBUTED_SERVICE_ID的值,定义在utils\system\safwk\native\include\system_ability_definition.h。1.2.1.2libupdateservice.z.so:是服务对应的动态库1.2.2xml编译配置BUILD.gn编译文件配置路径:base\update\updateservice\engine\sa_profile\BUILD.gn内容:import("//build/ohos/sa_profile/sa_profile.gni")ohos_sa_profile("updater_sa_profile"){sources=["3006.xml"]part_name="updater"}1.2.3编译配置ohos.build文件路径:base\update\updater\ohos.build内容如下:1.2.4成功编译生成文件1.2.4.1编译后的Ubuntu路径:out/ohos-arm-release/packages/phone/system/profile/updater_sa.xml1.2.4。2内容:updater_salibupdateservice.z.sosystemability>3006libupdateservice.z.sotruefalse<转储级别>11.2.4.3烧入dev后的路径私奔板:系统/配置文件/updater_sa.xml2.服务启动配置2.1服务启动配置配置文件路径:base\update\updateservice\engine\etc\updater_sa.cfg文件内容如下:{"jobs":[{"name":“启动”,“cmds”:[“startupdater_sa”]}],“服务”:[{“名称”:“updater_sa”,“路径”:[“/system/bin/sa_main”,“/system/profile/updater_sa.xml"],"uid":"system","gid":["system","shell"]}]}2.2开始编译配置配置文件路径:base\update\updateservice\engine\BUILD.gn内容如下:2.3编译成功编译生成文件后Ubuntu路径:out\ohos-arm-release\packages\phone\system\etc\init\updater_sa.cfg烧入开发板后路径:system\etc\init\updater_sa.cfg3运行进程每次Poweron,init阶段会读取配置updater_sa.cfg,启动updater_sa即拉起服务动态库libupdateservice.z.so进程启动查询:ps-A|grepupdaterserialterminaldisplay:re-pulltheserviceandrunhdc_std.exeshellterminalrunsa_main/system/profile/updater_sa.xml:serialterminalquery,又运行了一个update_sa进程:服务拉起注册到SAMGR的日志流程:服务启动后:客户端可以与服务端通信,客户端获取与服务端通信的目标代码块如下:想了解更多更多内容请访问:与华为共建鸿蒙科技社区官方https://harmonyos.51cto.com