Openharmony 實(shí)現(xiàn)的一個(gè)IPC的客戶端和服務(wù)端(L2)
??想了解更多關(guān)于開(kāi)源的內(nèi)容,請(qǐng)?jiān)L問(wèn):??
??51CTO 開(kāi)源基礎(chǔ)軟件社區(qū)??
簡(jiǎn)介
挺長(zhǎng)時(shí)間沒(méi)接觸L2的設(shè)備開(kāi)發(fā),再看openharmony 3.1代碼時(shí)候,發(fā)現(xiàn)3.1與3.0相比:
編譯的ohos.build已經(jīng)去掉,取而代之的是bundle.json,有的目錄結(jié)構(gòu)也發(fā)生了變化。
此文檔:openharmony 3.1代碼基礎(chǔ)。
- 3.1的編譯配置(與3.0比,有些調(diào)整)
- IPC動(dòng)態(tài)庫(kù)服務(wù)端工程。
- IPC客戶端。
- safwk加載動(dòng)態(tài)庫(kù)服務(wù)端。
- 客戶端和服務(wù)端的通信.
想對(duì)IPC通信了解深入,可以結(jié)合下面兩篇文章和代碼一起分析學(xué)習(xí):
??Openharmony IPC通信(L2)??OpenHarmony SA 動(dòng)態(tài)庫(kù)服務(wù) 拉起的main入口。 - 本用例開(kāi)發(fā)板(3516開(kāi)發(fā)板:HiSpark_AI_Hi3516D_One_Light_VER.B開(kāi)發(fā)板上測(cè)試)。
編譯配置
子系統(tǒng)配置
build\subsystem_config.json:
"myapp": {
"path":"myapp",
"name": "myapp"
}
產(chǎn)品配置
productdefine\common\products\Hi3516DV300.json:
"myapp:myappservice_test":{}
編譯配置
myapp\myappservice\bundle.json:
myapp\myappservice\BUILD.gn:
代碼
代碼目錄結(jié)構(gòu)
myapp的代碼見(jiàn)附件,關(guān)鍵部分有注釋,方便對(duì)IPC交互的了解。
服務(wù)ID的添加
服務(wù)ID有統(tǒng)一的頭文件。
foundation\distributedschedule\samgr\interfaces\innerkits\samgr_proxy\include\system_ability_definition.h。
MY_APP_SERVICE_ID = 9000,
...
{ MY_APP_SERVICE_ID, "MyAppService"},
編譯
要全量編譯9000.xml 才能生產(chǎn)myappservice_sa.xml。
編譯命令:./build.sh --product-name Hi3516DV300 --ccache。
修改開(kāi)發(fā)板的讀寫(xiě)權(quán)限
進(jìn)入終端:hdc_std.exe shell
修改權(quán)限:mount -o remount,rw /
添加test目錄:mkdir /data/test/
將編譯文件發(fā)送到開(kāi)發(fā)板對(duì)應(yīng)目錄:
修改客戶端可執(zhí)行權(quán)限。
切到對(duì)應(yīng)的目錄:cd /data/test/
修改成可執(zhí)行:chmod 0755 myappclient
測(cè)試
終端1:抓取日志。
終端2:啟動(dòng)服務(wù)。
sa_main /system/profile/myappservice_sa.xml
終端3:啟動(dòng)客戶端。
/data/test/myappclient
下圖是客戶端和服務(wù)端的交互輸出結(jié)果。
注意:hdc_std.exe工具,如果3.1的編譯不能連接設(shè)備。可以試一下最新主干代碼來(lái)編譯hdc工具。
編譯命令:./build.sh --product-name ohos-sdk --ccache,參考???developtools_hdc??。
??想了解更多關(guān)于開(kāi)源的內(nèi)容,請(qǐng)?jiān)L問(wèn):??