RK3568 Android 13 系统裁剪

android 13 系统裁剪是个大工程,裁剪也是需要大量的测试,才能保证系统的稳定性,以下是RK官方给出的裁剪方案,有兴趣的可以去看一下,对裁剪不是要求过高的可以根据官方的建议,对系统进行裁剪:

Rockchip Android平台内存优化及系统裁剪_build_with_go_opt-CSDN博客

然后官方的裁剪比较少,往往达不到我们自身需求想要的,所以我总结了 我在开发过程中,精简系统的部分经验,望大家指正

一.裁剪应用

    应用裁剪是精简系统的重要环节,apk应用占用系统的资源较大,所以应用裁剪,精简应用是系统的重要环节

    Android系统源码全编译时,都会通过PRODUCT_PACKAGES来控制源码模块是否需要编译, 对于系统默认的一些模块, 如果想要进行裁剪, 比如机顶盒上面,可能不需要电话,短信等APP, 此时就需要修改系统基础的配置文件, 将PRODUCT_PACKAGES中包含的电话短信APP模块删除, 这样改动太大, 耦合性也太大, 我们可以在Android系统源码的编译规则中增加一个PRODUCT_DEL_PACKAGES 变量来对模块进行删除,实现模块裁剪的功效。当然裁剪不仅仅局限于系统A PP, 源码中所有的模块都可以通过PRODUCT_DEL_PACKAGES 来裁剪。

 所以我们首先给系统增加一个PRODUCT_DEL_PACKAGES裁剪规则(红色为新增部分)

1、修改build/core/product.mk 添加PRODUCT_DEL_PACKAGES变量的声明

# The first API level this product shipped with
_product_single_value_vars += PRODUCT_SHIPPING_API_LEVEL
_product_single_value_vars += PRODUCT_DEL_PACKAGES

2、编辑build/core/main.mk

$(eval ### Filter out the overridden packages and executables before doing expansion) \
$(eval _pif_overrides := $(call module-overrides,$(_pif_modules))) \
$(eval _pif_modules := $(filter-out $(_pif_overrides), $(_pif_modules))) \
$(eval _pif_dels := $(call get-product-var,$(1),PRODUCT_DEL_PACKAGES)) \
$(eval _pif_modules := $(filter-out $(_pif_dels), $(_pif_modules))) \

3.在相应的设备产品mk文件中添加用PRODUCT_DEL_PACKAGES属性来控制模块删除

一版目录为device 目录下 增加此属性

RK3568的目录为device/rockchip/rk356x/device.mk

RK3568 Android 13 系统裁剪_第1张图片

——————————————————————————————————————

二、裁剪系统服务

目录:frameworks/base/services/java/com/android/server/SystemServer.java

这里以打印机服务为例(其他服务类似)

第一步:新增控制服务是否启动开关属性

boolean pinrtEnable= SystemProperties.getBoolean("persist.print.enable", false);

第二步:根据属性控制是否启动打印机服务

if (!pinrtEnable&& mPackageManager.hasSystemFeature(PackageManager.FEATURE_PRINTING)) {
    mSystemServiceManager.startService(PRINT_MANAGER_SERVICE_CLASS);
}             

第三步: 屏蔽SystemFeature

查找含有 的文件,全部注释掉
具体操作可以参考[Android][Framework]裁剪SystemServer服务以及关闭SystemFeature-腾讯云开发者社区-腾讯云

你可能感兴趣的:(android)