背景&版本

OpenHarmony整体遵从分层设计,从下向上依次为:内核层、系统服务层、框架层和应用层。系统功能按照“系统 > 子系统 > 组件”逐级展开,在多设备部署场景下,支持根据实际需求裁剪某些非必要的组件。

系统版本:OpenHarmony-4.1-Release

设备:RK3568

在裁剪powermgr子系统的power_manger部件时,编译form_fwk部件报错。

裁剪操作

  • 修改productdefine/common/inherit/rich.json文件,删除powermgr下的power_manager部件配置。

  • 删除base/powermgr/power_manager目录。

    img

编译分析

  • 系统编译时,在foundation/ability/form_fwk/BUILD.gn文件中存在报错提示,查看BUILD.gn文件,发现在160行通过ability_runtime_power进行判断是否依赖power_manager

    img

  • 在**//foundation/ability/form_fwk目录中搜索ability_runtime_power**,发现只有使用的地方,并未发现定义的位置:

    img

  • 根据名称判断,推测其可能定义的位置在ability_runtime部件中,在**//foundation/ability/form_fwk/BUILD.gn文件的头部可以看到有import导入ability_runtime部件的gni**文件。

    img

  • 打开**//foundation/ability/ability_runtime/ability_runtime.gni文件,搜索ability_runtime_power,发现只有一个初始定义值为true,并未判断power_manager**部件裁剪的情况。

    img

修改方案

参考**//foundation/ability/ability_runtime/ability_runtime.gni文件中其他部件的修改,添加对global_parts_info.powermgr_power_manager的判断:

img


修改后系统编译成功,
form_fwk部件即可对power_manger**部件解耦,相关代码已合入到官方社区:

issue: https://gitee.com/openharmony/ability_ability_runtime/issues/IACRFI

pr:https://gitee.com/openharmony/ability_ability_runtime/pulls/9390

Logo

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

更多推荐