OpenHarmony裁剪telephony
BUILD.gn bundle.json config.json ohos.build在vscode中查找 关键字:call_manager 排除:ccache.log.old,.repo,.h,.cpp,.ccache/,out/config.json /vendor/hisilicon/hispark_taurus_standard/config.jsonbase_
OpenHarmony中裁剪telephony包含2项内容
1.修改编译依赖telephony的服务。
2.修改与其他模块存在的调用关系。
1. 编译依赖
1.1 subsystem_config.json
/build/subsystem_config.json
1.2 修改default.json
/productdefine/common/inherit/default.json
1.3 rich.json
/productdefine/common/inherit/rich.json
2. 调用依赖项
电话与其他模块有耦合,比如蓝牙子系统,电源子系统,网络管理子系统,定位子系统,打印子系统,webview子系统,配置策略子系统等子系统都与电话有耦合。
如果裁剪了电话子系统,其他模块也要相应的解耦,并删除相关电话功能的调用。
比如蓝牙模块
1.bundle.json文件中,删除telephony子系统的相关依赖
2.BUILD.gn文件中,删除telephony子系统的相关依赖
3.源码文件中,删除telephony子系统的相关功能依赖
2.1 bundle.json
/foundation/communication/bluetooth_service/bundle.json
依赖电话模块的call_manager组件,需要把该依赖项在bundle.json删除
2.2 BUILD.gn
/foundation/communication/bluetooth_service/services/bluetooth/service/BUILD.gn
BUILD.gn文件中有2处需要删除
2.3 源码文件
需要把源码文件中,与电话耦合功能的代码修改或删除。
举例如下
foundation/communication/bluetooth_service/services/bluetooth/service/src/hfp_ag/hfp_ag_system_interface.cpp
hfp_ag_system_interface.cpp文件中,找出与电话相关的调用,修改或删除。
位置一
删除头文件telephony_observer_client.h
删除头文件bluetooth_call_client.h
删除头文件call_manager_client.h
删除头文件core_service_client.h
这4个头文件都是电话子系统的
函数void HfpAgSystemInterface::Start()
第47行:QueryAgIndicator()函数需要修改,其中蓝牙和电话耦合部分教多,用户需要根据自己的实际来修改。
第48行:RegisterObserver()函数需要用户根据自己的需求来修改
第54~59行:因为整个telephony子系统都被裁剪掉,所以Start()函数中取获取CALL_MANAGER的SystemAbility对象肯定失败,该函数需要修改或删除。
QueryAgIndicator()函数如下,其中蓝牙与电话耦合教多,需要用户根据实际需求修改。
RegisterObserver()函数如下,用户根据自己的需求来修改或删除。
第87行:CoreServiceClient对象是电话子系统中的,该行是调用电话子系统的接口来获取sim卡的slotid。
电话子系统裁剪后,该函数就无法调用,slotid就无法获取。用户根据需求修改该行或删除。
第92行:TelephonyObserverClient是电话的对象,该行是添加电话的事件观察,比如网络状态改变。用户根据需求修改该行或删除。
HangupCall()函数如下,该函数功能是挂断电话。用户根据自己的需求来修改或删除。
第138行:调用电话的接口,获取当前的主SIM卡的slotId。比如当前用户是插的双卡,设置的主卡是卡2。用户根据自己的需求来修改或删除。
第144行:获取当前用户slotId的通话链接。比如当前用户用卡1打电话,并在同时打2个电话,此时通话链接是2条,挂断需要挂断用户指定的通话链路。用户根据自己的需求来修改或删除。
该文件中其他函数不一一举例,大家根据自己的需求来修改或删除文件中相关耦合的部分。
最后
OpenHarmony中裁剪telephony子系统的工作量,主要在其他相关模块的解耦,把相关模块中与电话子系统有耦合部分的代码,都剥离出来,才能完整的裁剪telephony子系统。
更多推荐
所有评论(0)