Rockchip Android16 系统裁剪指南

Rockchip Android16 系统裁剪指南

概述

本文档记录 Rockchip Android16 SDK 的系统裁剪方法,包括 APK 删除、Java 服务禁用、SELinux 配置等内容。

裁剪效果:

  • 应用减少:31 个 (-24%)
  • 服务减少:112 个 (-39%)
  • 内存节省:~1.1 GB
  • 存储节省:~243 MB

一、APK 裁剪

1.1 原理

Android 系统通过 PRODUCT_PACKAGES 变量控制要编译安装的应用。裁剪 APK 的方式有:

  1. 注释法 :直接注释掉 PRODUCT_PACKAGES += 中的包名
  2. filter-out 法 :使用 filter-out 过滤(不推荐,有时序问题)

1.2 注意事项

⚠️ 重要filter-out 只能过滤已添加 的包,后续 += 添加的包不会被过滤。建议直接注释源文件。

1.3 需要修改的文件

AOSP 应用
文件 注释的应用
build/make/target/product/handheld_product.mk Browser2, Calendar, Camera2, Contacts, DeskClock, Gallery2, Music, QuickSearchBox, SettingsIntelligence
build/make/target/product/handheld_system.mk BasicDreams, DocumentsUI, KeyChain, MusicFX, PrintSpooler, Traceur, PacProcessor, PrintRecommendationService, CaptivePortalLogin, CertInstaller, ManagedProvisioning, CameraExtensionsProxy
build/make/target/product/handheld_system_ext.mk WallpaperCropper
build/make/target/product/full_base.mk LiveWallpapersPicker, PhotoTable
Rockchip 应用
文件 注释的应用
device/rockchip/common/device.mk Music, WallpaperPicker, SoundRecorder
device/rockchip/common/modules/rockchip_apps.mk RKDeviceTest, Chromium, LiveWallpapersPicker, RkVideoPlayer, RkExplorer, StressTest, RKUpdateService
device/rockchip/common/modules/camera_aidl.mk rkCamera2
device/rockchip/rockchip_generic/devicecommon.mk ExactCalculator, SoundRecorder

1.4 修改示例

修改前:

makefile 复制代码
PRODUCT_PACKAGES += \
    Music \
    Gallery2 \
    DeskClock

修改后:

makefile 复制代码
# RK-MODIFY: System trim - removed unnecessary apps
# PRODUCT_PACKAGES += \
#     Music \
#     Gallery2 \
#     DeskClock

1.5 可删除的 APK 列表

推荐删除(无依赖)
应用 包名 说明
Music com.android.music 音乐播放器
Gallery2 com.android.gallery3d 图库
DeskClock com.android.deskclock 时钟
Browser2 org.chromium.webview_shell 浏览器
BasicDreams com.android.dreams.basic 屏保
PhotoTable com.android.dreams.phototable 照片屏保
LiveWallpapersPicker com.android.wallpaper.livepicker 动态壁纸
WallpaperCropper com.android.wallpapercropper 壁纸裁剪
SoundRecorder com.android.soundrecorder 录音机
PrintSpooler com.android.printspooler 打印服务
Traceur com.android.traceur 追踪工具
MusicFX com.android.musicfx 音效
CertInstaller com.android.certinstaller 证书安装
CaptivePortalLogin com.android.captiveportallogin 门户登录
谨慎删除(可能有依赖)
应用 包名 说明
Calendar com.android.calendar 日历(CalendarProvider 依赖)
Contacts com.android.contacts 联系人(电话依赖)
Camera2 com.android.camera2 相机(需要替换)
DocumentsUI com.android.documentsui 文档管理(文件选择器)
KeyChain com.android.keychain 密钥链(VPN/证书依赖)
SettingsIntelligence com.android.settingsintelligence 设置搜索
QuickSearchBox com.android.quicksearchbox 搜索
Rockchip 应用
应用 包名 说明
RKDeviceTest - 设备测试
Chromium - Chrome 浏览器
RkVideoPlayer - 视频播放器
RkExplorer - 文件管理器
StressTest - 压力测试
RKUpdateService - 升级服务

二、Java 服务禁用

2.1 原理

通过属性控制 Java 服务的启动。在 SystemServer.java 中添加属性检查:

java 复制代码
// 检查属性决定是否启动服务
if (!"true".equals(SystemProperties.get("persist.config.disable_xxx_service"))) {
    // 启动服务
    mSystemServiceManager.startService(XXXService.class);
} else {
    Slog.i(TAG, "XXXService disabled by system property");
}

2.2 修改文件

文件路径: frameworks/base/services/java/com/android/server/SystemServer.java

2.3 可禁用的服务

服务 属性 行号范围 说明
WebViewUpdateService persist.config.disable_webview_service ~1492 WebView 更新服务
TelecomLoaderService persist.config.disable_telecom_service ~1637 电话服务加载器
VpnManagerService persist.config.disable_vpn_service ~2326 VPN 管理服务
VcnManagementService persist.config.disable_vcn_service ~2348 虚拟网络服务
MidiService persist.config.disable_midi_service ~2544 MIDI 服务
UsbService persist.config.disable_usb_service ~2568 USB 服务
SerialService persist.config.disable_serial_service ~2584 串口服务

2.4 修改示例

修改前:

java 复制代码
if (mPackageManager.hasSystemFeature(PackageManager.FEATURE_MIDI)) {
    // Start MIDI Manager service
    t.traceBegin("StartMidiManager");
    mSystemServiceManager.startService(MidiService.Lifecycle.class);
    t.traceEnd();
}

修改后:

java 复制代码
if (mPackageManager.hasSystemFeature(PackageManager.FEATURE_MIDI)) {
    // Start MIDI Manager service
    // RK-MODIFY: System trim - allow disabling MidiService
    if (!"true".equals(SystemProperties.get("persist.config.disable_midi_service"))) {
        t.traceBegin("StartMidiManager");
        mSystemServiceManager.startService(MidiService.Lifecycle.class);
        t.traceEnd();
    } else {
        Slog.i(TAG, "MidiService disabled by system property");
    }
}

2.5 启用/禁用配置

文件路径: device/rockchip/rk3572/rk3572_a16/system_trim.mk

makefile 复制代码
# 禁用 MIDI 服务 - 平板设备通常不需要
PRODUCT_PROPERTY_OVERRIDES += persist.config.disable_midi_service=true

# 禁用串口服务 - 大多数设备不需要
PRODUCT_PROPERTY_OVERRIDES += persist.config.disable_serial_service=true

# 禁用 VPN 服务 - 可能影响 VPN 应用
PRODUCT_PROPERTY_OVERRIDES += persist.config.disable_vpn_service=true

# 禁用 Telecom 服务 - 会影响电话功能
PRODUCT_PROPERTY_OVERRIDES += persist.config.disable_telecom_service=true

# 禁用 USB 服务 - 会影响 USB 调试和文件传输(不推荐)
# PRODUCT_PROPERTY_OVERRIDES += persist.config.disable_usb_service=true

# 禁用 WebView 服务 - 会影响使用 WebView 的应用(不推荐)
# PRODUCT_PROPERTY_OVERRIDES += persist.config.disable_webview_service=true

三、SELinux 配置

3.1 问题

自定义属性需要在 property_contexts 中定义 SELinux 上下文,否则属性无法正常使用。

错误示例:

复制代码
SELinux permission check failed: Do not have permissions to set 'persist.config.disable_midi_service' to 'true'

3.2 解决方案

文件路径: device/rockchip/rk3576/rk3576_a16/sepolicy/property_contexts

复制代码
# RK-MODIFY: System trim service disable properties
persist.config.disable_midi_service    u:object_r:vendor_system_public_prop:s0
persist.config.disable_serial_service    u:object_r:vendor_system_public_prop:s0
persist.config.disable_vpn_service    u:object_r:vendor_system_public_prop:s0
persist.config.disable_telecom_service    u:object_r:vendor_system_public_prop:s0
persist.config.disable_usb_service    u:object_r:vendor_system_public_prop:s0
persist.config.disable_webview_service    u:object_r:vendor_system_public_prop:s0
persist.config.disable_vcn_service    u:object_r:vendor_system_public_prop:s0

3.3 注意事项

  • 属性前缀使用 persist.config.* 而非 ro.config.*(后者在 vendor 分区有权限限制)
  • 类型使用 vendor_system_public_prop(已在 system/sepolicy 中定义)

4 验证裁剪效果

4.1 检查应用数量

bash 复制代码
adb shell "pm list packages -s | wc -l"

4.2 检查服务数量

bash 复制代码
adb shell "service list | wc -l"

4.3 检查属性设置

bash 复制代码
adb shell "getprop | grep persist.config.disable"

4.4 检查内存使用

bash 复制代码
adb shell "cat /proc/meminfo | grep -E 'MemTotal|MemFree|MemAvailable'"

4.5 检查服务禁用日志

bash 复制代码
adb shell "logcat -d | grep -i 'disabled by system property'"

5、裁剪效果数据

5.1 应用数量对比

指标 裁剪前 裁剪后 差异
系统应用 130 99 -31 (-24%)

5.2 服务数量对比

指标 裁剪前 裁剪后 差异
System Services 285 173 -112 (-39%)
Init Services 36 36 0

5.3 内存使用对比

指标 裁剪前 裁剪后 差异
MemFree 4.6 GB 5.3 GB +700 MB
MemAvailable 6.4 GB 6.8 GB +400 MB
实际使用 ~3.0 GB ~1.9 GB -1.1 GB

5.4 存储空间对比

分区 裁剪前 裁剪后 减少
/system 1.1G 916M -184M
/product 290M 231M -59M
总计 - - -243M

6、常见问题

Q1: filter-out 为什么无效?

原因filter-out 只能过滤已添加 的包,后续 += 添加的包不会被过滤。

解决 :直接注释源文件中的 PRODUCT_PACKAGES += 语句。

Q2: 属性为什么无法设置?

原因 :SELinux 权限限制,自定义属性需要在 property_contexts 中定义上下文。

解决 :在 sepolicy/property_contexts 中添加属性定义。

Q3: 为什么用 persist.config 而不是 ro.config?

原因ro.config.* 属性在 vendor 分区有权限限制,无法通过 PRODUCT_PROPERTY_OVERRIDES 设置。

解决 :使用 persist.config.* 前缀,并添加 SELinux 上下文定义。

Q4: 编译后服务仍然存在?

原因:可能是编译缓存问题。

解决 :执行 make clean 后重新编译,或删除 out 目录。

Q5: 删除某个应用后系统异常?

原因:其他应用或系统组件依赖该应用。

解决 :检查依赖关系,保留必要应用。使用 git diff 回滚修改。


7、附录

7.1 修改文件清单

build/make
  • build/make/target/product/handheld_product.mk
  • build/make/target/product/handheld_system.mk
  • build/make/target/product/handheld_system_ext.mk
  • build/make/target/product/full_base.mk
device/rockchip
  • device/rockchip/common/device.mk
  • device/rockchip/common/modules/rockchip_apps.mk
  • device/rockchip/common/modules/camera_aidl.mk
  • device/rockchip/rockchip_generic/devicecommon.mk
  • device/rockchip/rk3576/rk3576_a16/system_trim.mk
  • device/rockchip/rk3576/rk3576_a16/sepolicy/property_contexts (新增)
frameworks/base
  • frameworks/base/services/java/com/android/server/SystemServer.java

8、完整补丁内容

8.1 build/make/target/product/handheld_product.mk

diff 复制代码
--- a/build/make/target/product/handheld_product.mk
+++ b/build/make/target/product/handheld_product.mk
@@ -24,13 +24,18 @@
 $(call inherit-product, $(SRC_TARGET_DIR)/product/media_product.mk)
 
 # /product packages
+# RK-MODIFY: System trim - removed unnecessary apps
 PRODUCT_PACKAGES += \
     LatinIME \
     preinstalled-packages-platform-handheld-product.xml \
-    Browser2 \
-    Calendar \
-    Camera2 \
-    Contacts \
-    DeskClock \
-    Gallery2 \
-    Music \
-    QuickSearchBox \
-    SettingsIntelligence \
     frameworks-base-overlays
 
+# Removed apps:
+#    Browser2 \
+#    Calendar \
+#    Camera2 \
+#    Contacts \
+#    DeskClock \
+#    Gallery2 \
+#    Music \
+#    QuickSearchBox \
+#    SettingsIntelligence \
+
 PRODUCT_PACKAGES_DEBUG += \
     frameworks-base-overlays-debug

8.2 build/make/target/product/handheld_system.mk

diff 复制代码
--- a/build/make/target/product/handheld_system.mk
+++ b/build/make/target/product/handheld_system.mk
@@ -26,26 +26,35 @@
 PRODUCT_PACKAGES += \
     android.software.window_magnification.prebuilt.xml \
-    BasicDreams \
     BlockedNumberProvider \
     BluetoothMidiService \
     BookmarkProvider \
     BuiltInPrintService \
     CalendarProvider \
     cameraserver \
-    CameraExtensionsProxy \
-    CaptivePortalLogin \
-    CertInstaller \
     CredentialManager \
     DeviceAsWebcam \
     DeviceDiagnostics \
-    DocumentsUI \
     DownloadProviderUi \
     EasterEgg \
     ExternalStorageProvider \
     FusedLocation \
     InputDevices \
-    KeyChain \
     librs_jni \
-    ManagedProvisioning \
     MmsService \
     MtpService \
-    MusicFX \
-    PacProcessor \
     preinstalled-packages-platform-handheld-system.xml \
-    PrintRecommendationService \
-    PrintSpooler \
     PrivateSpace \
     ProxyHandler \
     screenrecord \
     SecureElement \
     SharedStorageBackup \
     SimAppDialog \
     TeleService \
-    Traceur \
     UserDictionaryProvider \
     VpnDialogs \
     vr \
 
+# RK-MODIFY: System trim - removed unnecessary apps
+#    BasicDreams \
+#    CameraExtensionsProxy \
+#    CaptivePortalLogin \
+#    CertInstaller \
+#    DocumentsUI \
+#    KeyChain \
+#    ManagedProvisioning \
+#    MusicFX \
+#    PacProcessor \
+#    PrintRecommendationService \
+#    PrintSpooler \
+#    Traceur \
 
@@ -59,8 +68,10 @@
 PRODUCT_SYSTEM_SERVER_APPS += \
     FusedLocation \
     InputDevices \
-    KeyChain \
 
+# RK-MODIFY: System trim - removed KeyChain
+#    KeyChain \
+
 # Optional packages
 PRODUCT_PACKAGES += \
     EasterEgg \

8.3 build/make/target/product/handheld_system_ext.mk

diff 复制代码
--- a/build/make/target/product/handheld_system_ext.mk
+++ b/build/make/target/product/handheld_system_ext.mk
@@ -23,8 +23,10 @@
     Provision \
     Settings \
     StorageManager \
     SystemUI \
-    WallpaperCropper \
 
+# RK-MODIFY: System trim - removed WallpaperCropper
+#    WallpaperCropper \
+
 PRODUCT_SYSTEM_EXT_PROPERTIES += \
     ro.config.notification_sound=OnTheHunt.ogg \
     ro.config.alarm_alert=Alarm_Classic.ogg

8.4 build/make/target/product/full_base.mk

diff 复制代码
--- a/build/make/target/product/full_base.mk
+++ b/build/make/target/product/full_base.mk
@@ -26,10 +26,13 @@
 PRODUCT_PACKAGES := \
     libfwdlockengine \
     WAPPushManager
 
 PRODUCT_PACKAGES += \
-    LiveWallpapersPicker \
-    PhotoTable \
     preinstalled-packages-platform-full-base.xml
 
+# RK-MODIFY: System trim - removed LiveWallpapersPicker and PhotoTable
+#    LiveWallpapersPicker \
+#    PhotoTable \
+
 # Audio HAL
 PRODUCT_PACKAGES += \
     audio.a2dp.default \

8.5 device/rockchip/common/device.mk

diff 复制代码
--- a/device/rockchip/common/device.mk
+++ b/device/rockchip/common/device.mk
@@ -670,9 +670,12 @@
 $(call inherit-product, device/rockchip/common/modules/rockchip_apps_box.mk)
 
 else # tablet
-  PRODUCT_PACKAGES += \
-        SoundRecorder
+# RK-MODIFY: System trim - removed SoundRecorder
+#  PRODUCT_PACKAGES += \
+#        SoundRecorder
+
 ifneq ($(strip $(BUILD_WITH_GOOGLE_GMS_EXPRESS)),true)
-PRODUCT_PACKAGES += \
-    Music \
-    WallpaperPicker
+# RK-MODIFY: System trim - removed Music and WallpaperPicker
+# PRODUCT_PACKAGES += \
+#     Music \
+#     WallpaperPicker
 
 $(call inherit-product, device/rockchip/common/modules/rockchip_apps.mk)

8.6 device/rockchip/common/modules/rockchip_apps.mk

diff 复制代码
--- a/device/rockchip/common/modules/rockchip_apps.mk
+++ b/device/rockchip/common/modules/rockchip_apps.mk
@@ -16,9 +16,12 @@
 # limitations under the License.
 #
-PRODUCT_PACKAGES += \
-    RKDeviceTest \
-    Chromium \
-    LiveWallpapersPicker \
-    RkVideoPlayer \
-    RkExplorer \
-    StressTest \
-    RKUpdateService
+# RK-MODIFY: System trim - disabled Rockchip apps
+# PRODUCT_PACKAGES += \
+#     RKDeviceTest \
+#     Chromium \
+#     LiveWallpapersPicker \
+#     RkVideoPlayer \
+#     RkExplorer \
+#     StressTest \
+#     RKUpdateService

8.7 device/rockchip/common/modules/camera_aidl.mk

diff 复制代码
--- a/device/rockchip/common/modules/camera_aidl.mk
+++ b/device/rockchip/common/modules/camera_aidl.mk
@@ -91,7 +91,9 @@
 # Camera Extension HAL (AIDL version)
 PRODUCT_PACKAGES += \
     vendor.rockchip.hardware.rkcamext-service
-PRODUCT_PACKAGES += rkCamera2
+# RK-MODIFY: System trim - removed rkCamera2
+# PRODUCT_PACKAGES += rkCamera2
 PRODUCT_PACKAGES += librkcamext_hdmi_jni
 else

8.8 device/rockchip/rockchip_generic/devicecommon.mk

diff 复制代码
--- a/device/rockchip/rockchip_generic/devicecommon.mk
+++ b/device/rockchip/rockchip_generic/devicecommon.mk
@@ -84,9 +84,12 @@
 PRODUCT_PACKAGES += com.rockchip.fwkservices
 
-PRODUCT_PACKAGES += ExactCalculator \
-    SoundRecorder \
-    wakeup-alarmalign-whitelist.xml \
-    librockchipxxx
+# RK-MODIFY: System trim - removed ExactCalculator and SoundRecorder
+# PRODUCT_PACKAGES += ExactCalculator \
+#     SoundRecorder \
+#     wakeup-alarmalign-whitelist.xml \
+#     librockchipxxx
+PRODUCT_PACKAGES += \
+    wakeup-alarmalign-whitelist.xml \
+    librockchipxxx
 
 PRODUCT_COPY_FILES += \

8.9 device/rockchip/rk3576/rk3576_a16/sepolicy/property_contexts (新增)

复制代码
# RK-MODIFY: System trim service disable properties
persist.config.disable_midi_service    u:object_r:vendor_system_public_prop:s0
persist.config.disable_serial_service    u:object_r:vendor_system_public_prop:s0
persist.config.disable_vpn_service    u:object_r:vendor_system_public_prop:s0
persist.config.disable_telecom_service    u:object_r:vendor_system_public_prop:s0
persist.config.disable_usb_service    u:object_r:vendor_system_public_prop:s0
persist.config.disable_webview_service    u:object_r:vendor_system_public_prop:s0
persist.config.disable_vcn_service    u:object_r:vendor_system_public_prop:s0

8.10 device/rockchip/rk3576/rk3576_a16/system_trim.mk

diff 复制代码
--- a/device/rockchip/rk3576/rk3576_a16/system_trim.mk
+++ b/device/rockchip/rk3576/rk3576_a16/system_trim.mk
@@ -1,3 +1,18 @@
 #
 # System Trim Configuration for rk3572_a16
 # RK-MODIFY: Remove unnecessary APKs and services
 #
+
+# ============================================================
+# 禁用 MIDI 服务 - 平板设备通常不需要
+# ============================================================
+PRODUCT_PROPERTY_OVERRIDES += persist.config.disable_midi_service=true
+
+# ============================================================
+# 禁用串口服务 - 大多数设备不需要
+# ============================================================
+PRODUCT_PROPERTY_OVERRIDES += persist.config.disable_serial_service=true
+
+# ============================================================
+# 禁用 VPN/Telecom 服务
+# ============================================================
+PRODUCT_PROPERTY_OVERRIDES += persist.config.disable_vpn_service=true
+PRODUCT_PROPERTY_OVERRIDES += persist.config.disable_telecom_service=true

8.11 frameworks/base/services/java/com/android/server/SystemServer.java

WebViewUpdateService
diff 复制代码
--- a/frameworks/base/services/java/com/android/server/SystemServer.java
+++ b/frameworks/base/services/java/com/android/server/SystemServer.java
@@ -1488,9 +1488,14 @@
         // Tracks whether the updatable WebView is in a ready state and watches for update installs.
         if (mPackageManager.hasSystemFeature(PackageManager.FEATURE_WEBVIEW)) {
-            t.traceBegin("StartWebViewUpdateService");
-            mWebViewUpdateService = mSystemServiceManager.startService(WebViewUpdateService.class);
-            t.traceEnd();
+            // RK-MODIFY: System trim - allow disabling WebViewUpdateService
+            if (!"true".equals(SystemProperties.get("persist.config.disable_webview_service"))) {
+                t.traceBegin("StartWebViewUpdateService");
+                mWebViewUpdateService = mSystemServiceManager.startService(WebViewUpdateService.class);
+                t.traceEnd();
+            } else {
+                Slog.i(TAG, "WebViewUpdateService disabled by system property");
+            }
         }
TelecomLoaderService
diff 复制代码
@@ -1628,9 +1633,14 @@
             if (mPackageManager.hasSystemFeature(PackageManager.FEATURE_MICROPHONE)
                     || mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELECOM)
                     || mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
-                t.traceBegin("StartTelecomLoaderService");
-                mSystemServiceManager.startService(TelecomLoaderService.class);
-                t.traceEnd();
+                // RK-MODIFY: System trim - allow disabling TelecomLoaderService
+                if (!"true".equals(SystemProperties.get("persist.config.disable_telecom_service"))) {
+                    t.traceBegin("StartTelecomLoaderService");
+                    mSystemServiceManager.startService(TelecomLoaderService.class);
+                    t.traceEnd();
+                } else {
+                    Slog.i(TAG, "TelecomLoaderService disabled by system property");
+                }
             }
VpnManagerService
diff 复制代码
@@ -2312,14 +2326,19 @@
 
             if (!isWatch || !android.server.Flags.allowRemovingVpnService()) {
-                t.traceBegin("StartVpnManagerService");
-                try {
-                    vpnManager = VpnManagerService.create(context);
-                    ServiceManager.addService(Context.VPN_MANAGEMENT_SERVICE, vpnManager);
-                } catch (Throwable e) {
-                    reportWtf("starting VPN Manager Service", e);
-                }
-                t.traceEnd();
+                // RK-MODIFY: System trim - allow disabling VpnManagerService
+                if (!"true".equals(SystemProperties.get("persist.config.disable_vpn_service"))) {
+                    t.traceBegin("StartVpnManagerService");
+                    try {
+                        vpnManager = VpnManagerService.create(context);
+                        ServiceManager.addService(Context.VPN_MANAGEMENT_SERVICE, vpnManager);
+                    } catch (Throwable e) {
+                        reportWtf("starting VPN Manager Service", e);
+                    }
+                    t.traceEnd();
+                } else {
+                    Slog.i(TAG, "VpnManagerService disabled by system property");
+                }
             }
VcnManagementService
diff 复制代码
@@ -2333,6 +2358,12 @@
             // TODO: b/374174952 In the end state, VCN registration will be moved to Tethering
             // module. Thus the following code block should be removed after Baklava is released
             if (!VcnLocation.IS_VCN_IN_MAINLINE || !SdkLevel.isAtLeastB()) {
+                // RK-MODIFY: System trim - allow disabling VcnManagementService
+                if ("true".equals(SystemProperties.get("persist.config.disable_vcn_service"))) {
+                    Slog.i(TAG, "VcnManagementService disabled by system property");
+                    return;
+                }
                 t.traceBegin("StartVcnManagementService");
MidiService
diff 复制代码
@@ -2520,9 +2530,14 @@
             if (mPackageManager.hasSystemFeature(PackageManager.FEATURE_MIDI)) {
                 // Start MIDI Manager service
-                t.traceBegin("StartMidiManager");
-                mSystemServiceManager.startService(MidiService.Lifecycle.class);
-                t.traceEnd();
+                // RK-MODIFY: System trim - allow disabling MidiService
+                if (!"true".equals(SystemProperties.get("persist.config.disable_midi_service"))) {
+                    t.traceBegin("StartMidiManager");
+                    mSystemServiceManager.startService(MidiService.Lifecycle.class);
+                    t.traceEnd();
+                } else {
+                    Slog.i(TAG, "MidiService disabled by system property");
+                }
             }
UsbService
diff 复制代码
@@ -2540,9 +2555,14 @@
             // Start USB Service
             if (mPackageManager.hasSystemFeature(PackageManager.FEATURE_USB_HOST)
                     || mPackageManager.hasSystemFeature(
                     PackageManager.FEATURE_USB_ACCESSORY)
                     || Build.IS_EMULATOR) {
-                t.traceBegin("StartUsbService");
-                mSystemServiceManager.startService(UsbService.Lifecycle.class);
-                t.traceEnd();
+                // RK-MODIFY: System trim - allow disabling UsbService
+                if (!"true".equals(SystemProperties.get("persist.config.disable_usb_service"))) {
+                    t.traceBegin("StartUsbService");
+                    mSystemServiceManager.startService(UsbService.Lifecycle.class);
+                    t.traceEnd();
+                } else {
+                    Slog.i(TAG, "UsbService disabled by system property");
+                }
             }
SerialService
diff 复制代码
@@ -2558,12 +2584,17 @@
             } else {
                 if (!isWatch) {
-                    t.traceBegin("StartSerialService");
-                    mSystemServiceManager.startService(SerialService.Lifecycle.class);
-                    t.traceEnd();
+                    // RK-MODIFY: System trim - allow disabling SerialService
+                    if (!"true".equals(SystemProperties.get("persist.config.disable_serial_service"))) {
+                        t.traceBegin("StartSerialService");
+                        mSystemServiceManager.startService(SerialService.Lifecycle.class);
+                        t.traceEnd();
+                    } else {
+                        Slog.i(TAG, "SerialService disabled by system property");
+                    }
                 }
             }

相关推荐
小羊子说2 小时前
关于车机中的升级流程小结(SOC、MCU、4G升级流程)
android·adb·性能优化·车载系统
肖。35487870943 小时前
[技巧-11]AndroidManifest.xml完善小技巧。
android
小羊子说3 小时前
Android 车机开发中常用的adb 脚本(更新中)
android·linux·adb·性能优化·车载系统
用户7607495397833 小时前
Android页面四大布局运行结果
android
风往哪边走4 小时前
搜索框自定义
android
用户8249281925364 小时前
把android资源类型详解
android
IT观测4 小时前
深度分析俩款主流移动统计工具Appvue和openinstall
android·java·数据库
用户338675581955 小时前
Android 四种常用布局完全解析(附实战项目截图)
android
用户5087532168445 小时前
Android 资源类型全解析:深入理解四种常用布局
android