RK3568 Android 13开机时间优化-系统应用裁剪实践

目录

前言

[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/ 目录下包含了许多与硬件无关的应用:

  • 摄像头相关(cameraserverCameraExtensionsProxy

  • 传感器相关(FusedLocation

  • 电话/短信服务(TelecomTeleService

  • Rockchip演示应用(RKDeviceTestRkExplorer

这些应用在系统启动时都会被初始化,消耗宝贵的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系统开发者提供一份可操作的应用裁剪实践指南。

相关推荐
hunterandroid1 小时前
Android 内存泄漏排查实战:从 LeakCanary 报警到根因定位
android·前端
我命由我123451 小时前
Android 设备的日志缓冲区被写满,logcat: Unexpected EOF!
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
171320330计算机毕设编程2 小时前
基于SpringBoot的在线拍卖系统
android·java·spring boot·小程序·课程设计
用户0934077735142 小时前
HarmonyOS WPS Open SDK 实践:OpenFileRequest 打开链路与沙箱拷贝
android·typescript·harmonyos
0xBADCODE2 小时前
动态DEX加载+反射+DES硬编码密钥:安卓三层逆向实战
android·java·python·安全·网络安全·逆向·ctf
Patrick在香港2 小时前
Python 拉取 C&SD 官方 API:香港 2022 年已跨过“超老龄线“,而抚养比正在爬回 1961
android·c语言·python·数据分析·时序数据库·数据可视化·香港
mmsx3 小时前
osmdroid 地图实战 03|谷歌影像的 URL,为什么不能 setTileSource 了事?
android
hai_android3 小时前
Kotlin 协程上下文(CoroutineContext)深度解析
android
恋猫de小郭3 小时前
Flutter A2UI 深度解析,它是怎么提供动态生产力的,然后为什么 A2UI 不只是 Flutter
android·前端·flutter