< Back to all hacks

#27 Extended Boot Debloat (+3 Packages)

Debloat
Problem
Chrome (45 MB), defcontainer (35 MB), qcrilmsgtunnel (35 MB) still running after initial debloat.
Solution
Added 3 more packages to boot-debloat.sh. Total 54+ disabled. ~100 MB additional savings.
Lesson
Disabling defcontainer breaks adb install. Must pm enable temporarily for APK installs.

Context

After the initial boot-debloat script (Hack #26) disabled 51+ packages, monitoring dumpsys meminfo revealed three more packages quietly running in the background:

  • com.android.chrome — full Chromium browser (45 MB RSS). The Moto E2 came with Chrome pre-installed as a system app. Even though it was never opened, Android pre-loads parts of it for WebView rendering
  • com.android.defcontainer — the package installer helper (35 MB). Used by the system to verify and install APK files. Not needed unless actively installing apps
  • com.qualcomm.qcrilmsgtunnel — Qualcomm's Radio Interface Layer message tunnel (35 MB). Handles carrier text messages. Useless on a WiFi-only server

Implementation

Add the three packages to the boot-debloat script:

# Additional packages added to /data/local/tmp/boot-debloat.sh:
# (requires Dirty COW root — see Hack #34)

pm disable com.android.chrome
pm disable com.android.defcontainer
pm disable com.qualcomm.qcrilmsgtunnel

To run the updated script:

# Apply after reboot:
adb shell sh /data/local/tmp/boot-debloat.sh

To temporarily re-enable defcontainer for APK installs:

# Before installing an APK:
adb shell pm enable com.android.defcontainer

# Install the APK:
adb install my-app.apk

# Disable again after install:
adb shell pm disable com.android.defcontainer

Verification

# Verify all three are disabled:
adb shell pm list packages -d | grep -E "chrome|defcontainer|qcrilmsgtunnel"
# Expected:
# package:com.android.chrome
# package:com.android.defcontainer
# package:com.qualcomm.qcrilmsgtunnel

# Check total disabled count:
adb shell pm list packages -d | wc -l
# Expected: 54+

# Check RAM savings:
adb shell dumpsys meminfo | grep "Total RAM"
# Compare used RAM before and after

Gotchas

  • Disabling com.android.defcontainer completely blocks adb install — the system can't verify APK signatures without it. Always re-enable before installing any APK, then disable again after
  • Chrome is the system WebView provider on some Android 6 devices. If any app uses WebView, it may crash. The PocketClaw launcher (Hack #39, #40) uses native Canvas rendering specifically to avoid this dependency
  • qcrilmsgtunnel is safe to disable if you don't need SMS/MMS functionality. The phone still receives calls on some carriers even with this disabled

Result

MetricBeforeAfter
Disabled packages5154+
Background RAM used~280 MB~180 MB
Chrome runningYes (45 MB)No
defcontainer runningYes (35 MB)No