Openharmony 實現的一個IPC的客戶端和服務端(L2)

簡介
挺長時間沒接觸L2的設備開發,再看openharmony 3.1代碼時候,發現3.1與3.0相比:
編譯的ohos.build已經去掉,取而代之的是bundle.json,有的目錄結構也發生了變化。
此文檔:openharmony 3.1代碼基礎。
- 3.1的編譯配置(與3.0比,有些調整)
- IPC動態庫服務端工程。
- IPC客戶端。
- safwk加載動態庫服務端。
- 客戶端和服務端的通信.
想對IPC通信了解深入,可以結合下面兩篇文章和代碼一起分析學習:
??Openharmony IPC通信(L2)??OpenHarmony SA 動態庫服務 拉起的main入口。 - 本用例開發板(3516開發板:HiSpark_AI_Hi3516D_One_Light_VER.B開發板上測試)。
編譯配置
子系統配置
build\subsystem_config.json:
"myapp": {
"path":"myapp",
"name": "myapp"
}

產品配置
productdefine\common\products\Hi3516DV300.json:
"myapp:myappservice_test":{}
編譯配置
myapp\myappservice\bundle.json:

myapp\myappservice\BUILD.gn:

代碼
代碼目錄結構

myapp的代碼見附件,關鍵部分有注釋,方便對IPC交互的了解。
服務ID的添加
服務ID有統一的頭文件。
foundation\distributedschedule\samgr\interfaces\innerkits\samgr_proxy\include\system_ability_definition.h。
MY_APP_SERVICE_ID = 9000,
...
{ MY_APP_SERVICE_ID, "MyAppService"},


編譯
要全量編譯9000.xml 才能生產myappservice_sa.xml。
編譯命令:./build.sh --product-name Hi3516DV300 --ccache。
修改開發板的讀寫權限
進入終端:hdc_std.exe shell
修改權限:mount -o remount,rw /
添加test目錄:mkdir /data/test/

將編譯文件發送到開發板對應目錄:

修改客戶端可執行權限。
切到對應的目錄:cd /data/test/
修改成可執行:chmod 0755 myappclient

測試
終端1:抓取日志。

終端2:啟動服務。
sa_main /system/profile/myappservice_sa.xml

終端3:啟動客戶端。
/data/test/myappclient
下圖是客戶端和服務端的交互輸出結果。

注意:hdc_std.exe工具,如果3.1的編譯不能連接設備。可以試一下最新主干代碼來編譯hdc工具。
編譯命令:./build.sh --product-name ohos-sdk --ccache,參考???developtools_hdc??。






















