目录
[1. 查看系统应用打包情况](#1. 查看系统应用打包情况)
[1.1 挂载 system.img 查看应用列表](#1.1 挂载 system.img 查看应用列表)
[1.2 分析应用归属](#1.2 分析应用归属)
[2. 定位应用打包源文件](#2. 定位应用打包源文件)
[2.1 搜索应用定义位置](#2.1 搜索应用定义位置)
[2.2 关键打包文件分析](#2.2 关键打包文件分析)
[3. 裁剪方案](#3. 裁剪方案)
[3.1 应用裁剪原则](#3.1 应用裁剪原则)
[3.2 裁剪方式](#3.2 裁剪方式)
前言
在嵌入式Android系统开发中,开机时间是用户体验的关键指标之一。RK3568作为一款广泛用于工业平板、智能终端、广告机等场景的国产芯片,其Android 13系统的启动速度直接影响产品的竞争力。
从开机日志分析可以发现,系统预装的大量未使用应用 是拖慢启动速度的主要原因之一。以我的项目为例,system/app/ 目录下包含了许多与硬件无关的应用:
-
摄像头相关(
cameraserver、CameraExtensionsProxy) -
传感器相关(
FusedLocation) -
电话/短信服务(
Telecom、TeleService) -
Rockchip演示应用(
RKDeviceTest、RkExplorer)
这些应用在系统启动时都会被初始化,消耗宝贵的CPU和I/O资源。本文将详细讲解如何安全地识别和移除这些"无用"应用,从而缩短开机时间。
1. 查看系统应用打包情况
1.1 挂载 system.img 查看应用列表
首先,需要查看最终编译产物中包含了哪些应用:
bash
# 创建挂载目录
mkdir system_mount
# 挂载 system.img(需在源码根目录执行)
sudo mount -o loop out/target/product/rk3568_t/system.img system_mount
# 查看系统应用
ls system_mount/system/app/
# 查看特权应用
ls system_mount/system/priv-app/
执行结果示例:

1.2 分析应用归属
根据应用名称,可以将它们分为几类:
| 类别 | 典型应用 | 说明 |
|---|---|---|
| AOSP 核心应用 | BasicDreams, PrintSpooler, NfcNci | 来自 build/make/target/product/handheld_system.mk |
| Rockchip 厂商应用 | RKDeviceTest, RkExplorer, RKUpdateService | 来自 device/rockchip/common/modules/rockchip_apps.mk |
| 设备层配置 | CameraExtensionsProxy, CarrierDefaultApp | 来自 device/rockchip/rk356x/device.mk |
2. 定位应用打包源文件
2.1 搜索应用定义位置
使用 grep 命令在源码中搜索应用名,找出是在哪个 .mk 文件中被添加的:
bash
# 搜索 RkExplorer 的来源
grep -r "RkExplorer" device/ vendor/ --include="*.mk" 2>/dev/null
# 搜索多个应用
grep -r -E "BasicDreams|NfcNci|PrintSpooler" build/make/target/product/ --include="*.mk"
2.2 关键打包文件分析
bash
device/rockchip/common/modules/rockchip_apps.mk
Rockchip 厂商预置应用列表:
bash
PRODUCT_PACKAGES += \
RKDeviceTest \ # Rockchip 硬件测试工具
Lightning \ # 轻量级浏览器
LiveWallpapersPicker \ # 动态壁纸选择器
RkVideoPlayer \ # 视频播放器
RkExplorer \ # 文件管理器
StressTest \ # 压力测试工具
RKUpdateService # OTA 更新服务
bash
build/make/target/product/handheld_system.mk
AOSP 通用手持设备应用列表(部分):
bash
PRODUCT_PACKAGES += \
BasicDreams \ # 屏保
BlockedNumberProvider \# 黑名单
BluetoothMidiService \ # 蓝牙MIDI
BookmarkProvider \ # 书签
BuiltInPrintService \ # 打印服务
CalendarProvider \ # 日历
CameraExtensionsProxy \# 相机扩展
CaptivePortalLogin \ # 公共WiFi登录
CertInstaller \ # 证书安装(保留)
DocumentsUI \ # 文件选择器(保留)
FusedLocation \ # 融合定位
ManagedProvisioning \ # 设备管理
MmsService \ # 彩信
MtpService \ # MTP传输
NfcNci \ # NFC
PrintSpooler \ # 打印队列
Telecom \ # 电话服务
TeleService \ # 电话服务
TelephonyProvider \ # 电话数据(4G上网需要)
Traceur \ # 系统跟踪
VpnDialogs \ # VPN对话框
vr # VR服务
3. 裁剪方案
3.1 应用裁剪原则
根据我的硬件配置(无摄像头、无NFC、无GPS、无通话需求、仅有4G上网需求),确定以下裁剪策略:
| 功能类别 | 操作 | 理由 |
|---|---|---|
| 摄像头相关 | ❌ 全部删除 | 无摄像头硬件 |
| NFC/定位 | ❌ 全部删除 | 无NFC/GPS硬件 |
| 电话/短信 | ❌ 删除UI和通话服务 | 仅需4G上网,保留 TelephonyProvider |
| 打印服务 | ❌ 全部删除 | 无打印需求 |
| 屏保/彩蛋 | ❌ 全部删除 | 纯视觉效果 |
| Rockchip 测试 | ❌ 全部删除 | 终端用户不需要 |
| 核心系统 | ✅ 必须保留 | 文件管理器、证书管理、输入设备等 |
3.2 裁剪方式
在PRODUCT_PACKAGES下注释或删除掉相关应用即可,如
rockchip_apps.mk文件中:

handheld_system.mk文件中:

总结
本文基于 RK3568 Android 13 平台,系统介绍了如何通过裁剪不必要的系统预装应用来优化开机时间。文章详细阐述了从查看系统应用 、定位打包源文件 、修改编译配置的完整流程。通过移除摄像头、NFC、GPS、打印服务等无关应用及Rockchip预置应用(RKDeviceTest、RkExplorer等),显著减少了系统体积并加快了启动速度。本文旨在为Android系统开发者提供一份可操作的应用裁剪实践指南。