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子系统。

 

Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐