国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

鴻蒙開發(fā)實(shí)戰(zhàn):【系統(tǒng)服務(wù)框架部件】

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-03-21 15:44 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

簡介

在系統(tǒng)服務(wù)管理子系統(tǒng)中safwk組件定義OpenHarmony中SystemAbility的實(shí)現(xiàn)方法,并提供啟動(dòng)、注冊(cè)等接口實(shí)現(xiàn)。

系統(tǒng)架構(gòu)

圖 1 系統(tǒng)服務(wù)框架圖

說明

接口說明

image.png

使用說明

SystemAbility實(shí)現(xiàn)一般采用XXX.cfg + profile.json + libXXX.z.so的方式由init進(jìn)程執(zhí)行對(duì)應(yīng)的XXX.cfg文件拉起相關(guān)SystemAbility進(jìn)程。

C++實(shí)現(xiàn)SystemAbility

示例代碼如下:

  • 1. 定義IPC對(duì)外接口IXXX

定義該服務(wù)對(duì)外提供的能力集合函數(shù),統(tǒng)一繼承IPC接口類IRemoteBroker;同時(shí)實(shí)現(xiàn)該IPC對(duì)外接口唯一標(biāo)識(shí)符DECLARE_INTERFACE_DESCRIPTOR(XXX);該標(biāo)識(shí)符用于IPC通信的校驗(yàn)等目的。

namespace OHOS {
class IListenAbility : public IRemoteBroker {
public:
    virtual int AddVolume(int volume) = 0;

public:
    enum {
        ADD_VOLUME = 1,
    };
public:
    DECLARE_INTERFACE_DESCRIPTOR(u"OHOS.test.IListenAbility");
};
}
  • 2. 定義客戶端通信代碼XXXProxy
namespace OHOS {
class ListenAbilityProxy : public IRemoteProxy< IListenAbility > {
public:
    int AddVolume(int volume);

    explicit ListenAbilityProxy(const sptr< IRemoteObject >& impl)
        : IRemoteProxy< IListenAbility >(impl)
    {
    }

private:
    static inline BrokerDelegator< ListenAbilityProxy > delegator_;
};
} // namespace OHOS
  • 3. 定義服務(wù)端通信代碼XXXStub
namespace OHOS {
int32_t ListenAbilityStub::OnRemoteRequest(uint32_t code,
    MessageParcel& data, MessageParcel &reply, MessageOption &option)
{
    switch (code) {
        case ADD_VOLUME: {
            return reply.WriteInt32(AddVolume(data.ReadInt32()));
        }

        default:
            return IPCObjectStub::OnRemoteRequest(code, data, reply, option);
    }
}
}
  • 4. SystemAbility的實(shí)現(xiàn)類
namespace {
constexpr OHOS::HiviewDFX::HiLogLabel LABEL = {LOG_CORE, 0xD001800, "SA_TST"};
}

REGISTER_SYSTEM_ABILITY_BY_ID(ListenAbility, DISTRIBUTED_SCHED_TEST_LISTEN_ID, true);

ListenAbility::ListenAbility(int32_t saId, bool runOnCreate) : SystemAbility(saId, runOnCreate)
{
    HiLog::Info(LABEL, ":%s called", __func__);
    HiLog::Info(LABEL, "ListenAbility()");
}

ListenAbility::~ListenAbility()
{
    HiLog::Info(LABEL, "~ListenAbility()");
}

int ListenAbility::AddVolume(int volume)
{
    pid_t current = getpid();
    HiLog::Info(LABEL, "ListenAbility::AddVolume volume = %d, pid = %d.", volume, current);
    return (volume + 1);
}

void ListenAbility::OnDump()
{
}

void ListenAbility::OnStart()
{
    HiLog::Info(LABEL, "ListenAbility::OnStart()");
    HiLog::Info(LABEL, "ListenAbility:%s called:-----Publish------", __func__);
    bool res = Publish(this);
    if (res) {
        HiLog::Error(LABEL, "ListenAbility: res == false");
    }
    HiLog::Info(LABEL, "ListenAbility:%s called:AddAbilityListener_OS_TST----beg-----", __func__);
    AddSystemAbilityListener(DISTRIBUTED_SCHED_TEST_OS_ID);
    HiLog::Info(LABEL, "ListenAbility:%s called:AddAbilityListener_OS_TST----end-----", __func__);

    HiLog::Info(LABEL, "ListenAbility:%s called:StopAbility_OS_TST----beg-----", __func__);
    StopAbility(DISTRIBUTED_SCHED_TEST_OS_ID);
    HiLog::Info(LABEL, "ListenAbility:%s called:StopAbility_OS_TST----end-----", __func__);
    return;
}

void ListenAbility::OnStop()
{
}
  • 5. SystemAbility配置

以c++實(shí)現(xiàn)的SA必須配置相關(guān)System Ability的profile配置文件才會(huì)完成SA的加載注冊(cè)邏輯,否則沒有編寫profile配置的System Ability不會(huì)完成注冊(cè)。配置方法如下:

在子系統(tǒng)的根目錄新建一個(gè)以sa_profile為名的文件夾,然后在此文件夾中新建兩個(gè)文件:一個(gè)以serviceId為前綴的json文件,另外一個(gè)為BUILD.gn文件。

serviceid.json:

{
    "process": "listen_test",
    "systemability": [
        {
            "name": serviceid,
            "libpath": "liblisten_test.z.so",
            "run-on-create": true,
            "distributed": true,
            "dump_level": 1
        }
    ]
}

BUILD.gn:

import("http://build/ohos/sa_profile/sa_profile.gni")
ohos_sa_profile("xxx_sa_profile") {
    sources = [
        "serviceid.json"
    ]
    subsystem_name = "systemabilitymgr"
}

說明:

  1. 進(jìn)程名字即該SystemAbility要運(yùn)行的進(jìn)程空間,此字段是必填選項(xiàng)。
  2. 一個(gè)SystemAbility配置文件只能配置一個(gè)SystemAbility節(jié)點(diǎn),配置多個(gè)會(huì)導(dǎo)致編譯失敗。
  3. SystemAbility的name為對(duì)應(yīng)的serviceId必須與代碼中注冊(cè)的serviceId保持一致,必配項(xiàng)。
  4. libpath為SystemAbility的加載路徑,必配項(xiàng)。
  5. run-on-create:true表示進(jìn)程啟動(dòng)后即向samgr組件注冊(cè)該SystemAbility;false表示按需啟動(dòng),即在其他模塊訪問到該SystemAbility時(shí)啟動(dòng),必配項(xiàng)。
  6. distributed:true表示該SystemAbility為分布式SystemAbility,支持跨設(shè)備訪問;false表示只有本地跨IPC訪問。
  7. bootphase:可不設(shè)置;可以設(shè)置的值有三種:BootStartPhase、CoreStartPhase、OtherStartPhase(默認(rèn)類型),三種優(yōu)先級(jí)依次降低,當(dāng)同一個(gè)進(jìn)程中,會(huì)優(yōu)先拉起注冊(cè)配置BootStartPhase的SystemAbility,然后是配置了CoreStartPhase的SystemAbility,最后是OtherStartPhase;當(dāng)高優(yōu)先級(jí)的SystemAbility全部啟動(dòng)注冊(cè)完畢才會(huì)啟動(dòng)下一級(jí)的SystemAbility的注冊(cè)啟動(dòng)。
  8. dump-level:表示systemdumper支持的level等級(jí),默認(rèn)配置1。
  9. BUILD.gn中subsystem_name為相應(yīng)部件名稱;sources表示當(dāng)前子系統(tǒng)需要配置的SystemAbility列表,可支持配置多個(gè)SystemAbility。

以上步驟完成后,全量編譯代碼后會(huì)在out路徑向生成一個(gè)以進(jìn)程名為前綴的json文件listen_test.json;路徑為:out...systemprofilelisten_test.json。

更多鴻蒙開發(fā)知識(shí)已更新[qr23.cn/AKFP8k]可前往參考學(xué)習(xí)。

OpenHarmony高級(jí)技能.png

  • 6. cfg配置文件

cfg配置文件為linux提供的native進(jìn)程拉起策略,開機(jī)啟動(dòng)階段由init進(jìn)程解析配置的cfg文件進(jìn)行拉起。

{
    "jobs" : [{
            "name" : "post-fs-data",
            "cmds" : [
                "start listen_test"
            ]
        }
    ],
	"services" : [{
            "name" : "listen_test",
            "path" : ["/system/bin/sa_main", "/system/profile/listen_test.json"],
            "uid" : "system",
            "gid" : ["system", "shell"]
        }
    ]
}

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 鴻蒙
    +關(guān)注

    關(guān)注

    60

    文章

    2963

    瀏覽量

    45912
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    M4-R1 開源鴻蒙(OpenHarmory)開發(fā)板丨串口調(diào)試助手實(shí)戰(zhàn)案例

    支持與高集成度設(shè)計(jì),成為開發(fā)者體驗(yàn)與學(xué)習(xí)鴻蒙系統(tǒng)的理想平臺(tái)。無論是智慧家居、教學(xué)實(shí)驗(yàn),還是設(shè)備通信,M4-R1都能提供穩(wěn)定可靠的開發(fā)環(huán)境。本次分享的
    的頭像 發(fā)表于 12-31 11:16 ?8646次閱讀
    M4-R1 開源<b class='flag-5'>鴻蒙</b>(OpenHarmory)<b class='flag-5'>開發(fā)</b>板丨串口調(diào)試助手<b class='flag-5'>實(shí)戰(zhàn)</b>案例

    開源鴻蒙技術(shù)大會(huì)2025丨跨平臺(tái)開發(fā)框架分論壇:共拓移動(dòng)開發(fā)新邊界,共創(chuàng)跨平臺(tái)生態(tài)新時(shí)代

    隨著開源鴻蒙生態(tài)的持續(xù)壯大,開發(fā)者迎來了除Android與iOS之外的“第三種選擇”。為解決“加入一個(gè)新生態(tài)就會(huì)增加一倍投入”的行業(yè)痛點(diǎn),讓開發(fā)者的代碼能夠在更多平臺(tái)上復(fù)用,開源鴻蒙
    的頭像 發(fā)表于 11-20 17:31 ?980次閱讀
    開源<b class='flag-5'>鴻蒙</b>技術(shù)大會(huì)2025丨跨平臺(tái)<b class='flag-5'>開發(fā)</b><b class='flag-5'>框架</b>分論壇:共拓移動(dòng)<b class='flag-5'>開發(fā)</b>新邊界,共創(chuàng)跨平臺(tái)生態(tài)新時(shí)代

    開源鴻蒙技術(shù)大會(huì)2025丨開源鴻蒙應(yīng)用開發(fā)再提速,跨平臺(tái)框架PMC(籌)正式啟動(dòng)孵化

    9月27日,開源鴻蒙技術(shù)大會(huì)2025在長沙國際會(huì)議中心盛大舉辦。大會(huì)現(xiàn)場,開源鴻蒙跨平臺(tái)框架PMC(籌)正式啟動(dòng)孵化,標(biāo)志著開源鴻蒙在應(yīng)用開發(fā)
    的頭像 發(fā)表于 11-10 18:15 ?1407次閱讀
    開源<b class='flag-5'>鴻蒙</b>技術(shù)大會(huì)2025丨開源<b class='flag-5'>鴻蒙</b>應(yīng)用<b class='flag-5'>開發(fā)</b>再提速,跨平臺(tái)<b class='flag-5'>框架</b>PMC(籌)正式啟動(dòng)孵化

    知乎開源“智能預(yù)渲染框架” 幾行代碼實(shí)現(xiàn)鴻蒙應(yīng)用頁面“秒開”

    近日,知乎在Gitee平臺(tái)開源了其自研的鴻蒙“智能預(yù)渲染框架”,并將該框架的Har包上架到OpenHarmony三方庫中心倉。該框架鴻蒙
    的頭像 發(fā)表于 08-29 14:32 ?632次閱讀
    知乎開源“智能預(yù)渲染<b class='flag-5'>框架</b>” 幾行代碼實(shí)現(xiàn)<b class='flag-5'>鴻蒙</b>應(yīng)用頁面“秒開”

    【HarmonyOS 5】金融應(yīng)用開發(fā)鴻蒙組件實(shí)踐

    【HarmonyOS 5】金融應(yīng)用開發(fā)鴻蒙組件實(shí)踐 ##鴻蒙開發(fā)能力 ##HarmonyOS SDK應(yīng)用服務(wù)##
    的頭像 發(fā)表于 07-11 18:20 ?962次閱讀
    【HarmonyOS 5】金融應(yīng)用<b class='flag-5'>開發(fā)</b><b class='flag-5'>鴻蒙</b>組件實(shí)踐

    鴻蒙5開發(fā)寶藏案例分享---一多開發(fā)實(shí)例(音樂)

    關(guān)聯(lián)實(shí)際開發(fā)中的高頻痛點(diǎn),比如內(nèi)存泄漏、跨端適配、服務(wù)卡片設(shè)計(jì)等。我整理了一份超全解讀,帶你解鎖鴻蒙開發(fā)的“隱藏Buff”! 一、動(dòng)態(tài)布局實(shí)戰(zhàn)
    的頭像 發(fā)表于 06-30 11:54 ?775次閱讀

    中軟國際正式啟動(dòng)鴻蒙軟件工場

    自2024年HarmonyOS NEXT版本起,HarmonyOS應(yīng)用框架層更新為鴻蒙“單框架”,正式告別了對(duì)Android應(yīng)用框架、內(nèi)核的依賴。2025年,
    的頭像 發(fā)表于 06-17 15:44 ?1015次閱讀

    鴻蒙5開發(fā)寶藏案例分享---埋點(diǎn)開發(fā)實(shí)戰(zhàn)指南

    鴻蒙埋點(diǎn)開發(fā)寶藏指南:官方案例實(shí)戰(zhàn)解析,輕松搞定數(shù)據(jù)追蹤! 大家好呀!我是HarmonyOS開發(fā)路上的探索者。最近在折騰應(yīng)用埋點(diǎn)時(shí),意外發(fā)現(xiàn)了鴻蒙
    發(fā)表于 06-12 16:30

    鴻蒙5開發(fā)寶藏案例分享---切面編程實(shí)戰(zhàn)揭秘

    鴻蒙切面編程(AOP)實(shí)戰(zhàn)指南:隱藏的寶藏功能大揭秘! 大家好!今天在翻鴻蒙開發(fā)者文檔時(shí),意外發(fā)現(xiàn)了官方埋藏的「切面編程」寶藏案例!實(shí)際開發(fā)
    發(fā)表于 06-12 16:21

    鴻蒙5開發(fā)寶藏案例分享---應(yīng)用架構(gòu)實(shí)戰(zhàn)技巧

    大家好! 今天咱們聊聊鴻蒙開發(fā)中那些“官方文檔提了但實(shí)際開發(fā)難找”的架構(gòu)設(shè)計(jì)技巧。結(jié)合官方文檔,我會(huì)用 真實(shí)代碼案例+通俗講解 ,幫你把分層架構(gòu)和線程通信落地到項(xiàng)目里,告別“理論會(huì)了,代碼不會(huì)
    發(fā)表于 06-12 16:14

    鴻蒙5開發(fā)寶藏案例分享---一多開發(fā)實(shí)例(地圖導(dǎo)航)

    ? 鴻蒙開發(fā)隱藏寶藏大公開!手把手教你玩轉(zhuǎn)\"一多\"地圖導(dǎo)航案例 ? 大家好呀!我是你們的老朋友,今天要給大家扒一扒鴻蒙官方文檔里那些\"藏得深\"的實(shí)戰(zhàn)
    發(fā)表于 06-03 16:17

    KaihongOS筆記本電腦開發(fā)實(shí)戰(zhàn)第九節(jié):全功能TypeC驅(qū)動(dòng)框架適配

    《手把手教你做PC》系列直播課再度開播 !《 KaihongOS筆記本電腦開發(fā)實(shí)戰(zhàn)第九節(jié)九:全功能TypeC驅(qū)動(dòng)框架適配》將于5月21日19:00開播 ↑掃碼入群,領(lǐng)課程講義資料包↑ 深開鴻資深
    發(fā)表于 05-19 18:29

    開源鴻蒙開發(fā)新體驗(yàn),開鴻Bot系列今日開啟預(yù)售!

    開發(fā)者大禮包,其中含KaihongOS桌面版鏡像包、KaihongOS桌面版二次開發(fā)包、實(shí)戰(zhàn)課程、燒錄指南等。同時(shí),用戶還可享受一對(duì)一技術(shù)顧問服務(wù)、優(yōu)先體驗(yàn)新版本KaihongOS
    發(fā)表于 05-16 14:13

    鴻蒙服務(wù)實(shí)戰(zhàn)-笑笑五子棋(1)

    鴻蒙服務(wù)實(shí)戰(zhàn)-笑笑五子棋(1) 前言 作為鴻蒙應(yīng)用的深度開發(fā)者都應(yīng)該知道,經(jīng)歷了 波瀾壯闊 12 月風(fēng)波 ,到 2025 年新的開始。鴻蒙
    的頭像 發(fā)表于 03-31 09:23 ?791次閱讀
    <b class='flag-5'>鴻蒙</b>元<b class='flag-5'>服務(wù)實(shí)戰(zhàn)</b>-笑笑五子棋(1)

    全鏈路賦能游戲鴻蒙化適配,鴻蒙游戲開發(fā)服務(wù)煥新升級(jí)

    3月14日,華為游戲中心在成都開展了鴻蒙游戲開發(fā)服務(wù)日線下活動(dòng)。本次活動(dòng)吸引了百余位游戲廠商代表以及開發(fā)者參與。華為一線技術(shù)專家團(tuán)隊(duì)與眾多游戲開發(fā)
    的頭像 發(fā)表于 03-17 09:25 ?1028次閱讀
    全鏈路賦能游戲<b class='flag-5'>鴻蒙</b>化適配,<b class='flag-5'>鴻蒙</b>游戲<b class='flag-5'>開發(fā)</b>者<b class='flag-5'>服務(wù)</b>煥新升級(jí)