
小米手机用久了预装应用越堆越多桌面上一堆用不上的图标后台还时不时自启动占内存。想卸载吧系统设置里根本没有卸载按钮只能停用停用之后还占着存储空间。这个问题困扰了我很久直到我开始用ADB来彻底清理这些预装应用。这篇内容就是把我这几年在小米手机、红米手机上反复折腾预装应用卸载的经验完整梳理出来从ADB环境搭建到具体卸载命令再到哪些应用能删、哪些绝对不能碰以及操作过程中遇到的各种报错怎么处理全部讲清楚。不管你是刚接触ADB的新手还是已经用过一阵子但不太敢下手的老用户都能从里面找到可以直接用的东西。1. 为什么小米预装应用不能直接在设置里卸载1.1 系统应用和普通应用的本质区别小米手机上的应用大致分三类一类是你自己下载的第三方应用长按图标就能卸载一类是系统核心应用比如电话、短信、相机这些是ROM的一部分动不了还有一类就是所谓的预装应用它们挂在系统分区里以系统应用的身份存在设置里的应用管理只给你停用选项不给你卸载按钮。为什么会有这个区别因为Android系统对系统分区/system、/system_ext、/product等的应用有保护机制。这些应用安装在只读分区上普通用户权限根本没法删除。而停用只是把应用的状态标记为disabledAPK文件本身还在存储空间照样占着。对于存储空间紧张的用户来说这等于没解决问题。1.2 预装应用到底占了多少资源我拿自己手上的一台Redmi Note系列做过统计出厂预装的应用包括小米自家的和第三方合作的加起来大概有40到60个不等具体取决于机型、销售渠道和系统版本。这些应用占用的存储空间从几百MB到几个GB都有可能尤其是一些带资源包的应用比如某些视频类、游戏中心类的预装应用体积相当可观。除了存储还有后台运行的问题。很多预装应用会注册各种广播接收器和后台服务开机自启、联网推送、定期唤醒这些都会消耗CPU和内存。你可能觉得我又没打开它它能耗多少电但实际上后台唤醒带来的电量消耗在待机场景下非常明显。我用Battery Historian分析过一台未清理的小米手机待机8小时的耗电中有将近15%来自预装应用的后台活动。1.3 ADB卸载的原理和优势ADBAndroid Debug Bridge是Android官方提供的调试工具通过它可以在电脑上向手机发送各种指令。卸载预装应用用的核心命令是pm uninstall --user 0这个命令的作用是在当前用户空间下卸载指定应用。这里有个关键点需要理解它并不是真的把APK文件从系统分区删掉了而是把应用从用户0也就是手机的主人账户的空间里移除了。效果上等同于卸载——应用图标消失、不再运行、不再占用用户数据空间。但系统分区里的原始APK还在所以恢复出厂设置之后这些应用会回来。这个机制的好处是安全不会因为误删系统关键组件导致手机变砖。相比Root之后用系统应用卸载器直接删APKADB方案不需要解锁Bootloader、不需要Root、不影响保修风险低得多。这也是我推荐普通用户用ADB而不是Root的原因。2. ADB环境搭建从下载到连上手机2.1 Windows平台ADB工具包的获取与安装ADB工具包最官方的来源是Google的Android开发者网站下载SDK Platform-Tools就行。但国内访问Google的下载地址有时候不太顺畅所以很多人会用第三方打包好的ADB工具包比如常见的adb工具1.0.32.zip这类。我的建议是尽量用官方版本因为第三方打包的版本可能夹带东西或者版本太老。下载下来是一个zip压缩包解压到一个你记得住的目录比如C:\adb。解压后你会看到adb.exe、fastboot.exe、AdbWinApi.dll等文件。这个目录就是你的ADB工作目录后面所有命令都要在这个目录下执行或者把这个目录加到系统环境变量里。2.2 环境变量配置让ADB在任何目录都能用如果你不想每次都cd到ADB目录再执行命令就需要配置环境变量。操作步骤右键此电脑→属性→高级系统设置→环境变量在系统变量里找到Path点击编辑点击新建输入你的ADB目录路径比如C:\adb一路确定保存配置完之后打开一个新的命令提示符窗口注意必须是新开的旧窗口不会刷新环境变量输入adb version如果能看到版本号输出说明配置成功。注意如果你在Windows 10/11上遇到管理员找不到adb的情况大概率是环境变量没配好或者你用的是PowerShell而Path里配的是用户变量但当前用户不对。先确认where adb能不能找到路径。2.3 小米手机开启开发者选项和USB调试小米手机MIUI和HyperOS都一样开启开发者选项的步骤打开设置→我的设备→全部参数连续点击MIUI版本HyperOS是OS版本7次直到提示您已处于开发者模式返回设置主页面找到更多设置→开发者选项打开USB调试开关部分MIUI版本还需要额外打开USB调试安全设置这个选项允许通过USB调试修改权限或模拟点击对于我们要做的卸载操作来说普通USB调试就够了不需要开安全设置。还有一个容易忽略的点小米手机在开发者选项里有一个USB配置或者叫默认USB配置的选项建议改成传输文件MTP或者仅充电都行关键是不要选不进行数据传输否则电脑可能识别不到设备。2.4 连接手机与驱动问题排查用USB线把手机连上电脑手机会弹出一个允许USB调试吗的对话框勾选始终允许然后点确定。如果没弹这个框试试拔掉重插或者在开发者选项里点撤销USB调试授权再重连。驱动方面Windows 10/11通常会自动识别小米手机并安装驱动。如果设备管理器里看到手机旁边有黄色感叹号就需要手动装驱动。小米官方有提供ADB驱动也可以装通用的Google USB Driver。装完驱动后在命令行输入adb devices如果看到类似这样的输出就说明连接成功了List of devices attached a1b2c3d4 device如果显示的是unauthorized说明手机上还没授权检查手机屏幕有没有弹授权对话框。如果显示offline试试adb kill-server然后adb start-server重启ADB服务。提示如果遇到adb server version (31) doesnt match this client (41); killing...这种报错说明你电脑上有多个版本的ADB在打架。解决办法是找到所有adb.exe的位置统一用一个版本或者把旧版本的删掉。3. 卸载前的准备工作别急着敲命令3.1 先列出所有应用包名卸载之前你得知道要卸载的应用叫什么包名。在命令行执行adb shell pm list packages这会列出手机上所有应用的包名输出大概有几百行。为了缩小范围可以加上筛选参数adb shell pm list packages -s-s参数只列出系统应用这样就能看到所有预装应用的包名了。输出格式是package:com.xxx.xxxpackage:后面就是包名。如果你知道应用的大致名称可以用findstrWindows或grepMac/Linux过滤adb shell pm list packages | findstr xiaomi这样就能筛出所有包含xiaomi的包名。3.2 对照包名确认应用身份拿到包名列表之后你需要确认每个包名对应的是哪个应用。有几种方法第一种是凭经验判断比如com.miui.weather2一看就是天气com.xiaomi.gamecenter就是游戏中心。第二种是用adb shell dumpsys package 包名查看应用的详细信息包括版本号、安装路径等。第三种更直观——在手机上打开设置→应用设置→应用管理找到对应的应用点进去看详情有些版本会显示包名。我自己的做法是先把包名列表导出到一个文本文件里然后逐个对照着手机上的应用图标来标记。虽然麻烦一点但比盲目卸载安全得多。3.3 必须保留的核心应用清单这是整篇内容里最重要的部分。以下这些包名绝对不能卸载否则会导致系统功能异常甚至无法开机包名关键词作用卸载后果com.android.systemui系统界面状态栏、导航栏消失com.android.settings设置无法进入设置com.android.providers.*各种数据提供器联系人、短信等数据丢失com.android.launcher桌面桌面崩溃无法操作com.miui.securitycenter安全中心权限管理失效com.android.phone电话无法打电话com.android.shellADB shellADB功能失效com.miui.powerkeeper电源管理耗电异常com.android.packageinstaller安装器无法安装应用除了这些还有一些小米特有的核心服务比如com.miui.contentcatcher内容捕获、com.miui.system系统服务等也建议保留。原则就是你不确定它是干什么的就别动它。3.4 建议备份当前应用列表在动手之前建议先把当前的应用列表备份一份adb shell pm list packages packages_backup.txt这样万一卸载出问题了你可以对照备份文件知道原来有哪些应用。虽然ADB卸载可以通过恢复出厂设置来还原但恢复出厂设置会清掉所有数据代价太大。有了备份列表至少你知道哪些是被你卸掉的需要的时候可以用adb shell cmd package install-existing 包名来恢复。4. 核心操作用pm uninstall卸载预装应用4.1 单应用卸载命令详解卸载单个应用的基本命令是adb shell pm uninstall --user 0 包名举个例子要卸载小米视频adb shell pm uninstall --user 0 com.miui.video执行成功后会输出Success。如果输出Failure通常是因为包名写错了或者这个应用是系统关键组件不允许卸载。这里解释一下--user 0的含义。Android支持多用户0是默认的用户空间也就是机主。--user 0表示只在这个用户空间下卸载不影响系统分区里的原始文件。如果不加--user 0系统会尝试从系统分区删除那需要Root权限普通ADB做不到。4.2 批量卸载写一个脚本一次搞定一个一个敲命令太慢了尤其是要卸载十几个应用的时候。可以写一个批处理脚本Windows或shell脚本Mac/Linux来批量执行。Windows批处理示例新建一个uninstall.bat文件echo off set packagescom.miui.video com.miui.music com.xiaomi.gamecenter com.miui.browser com.miui.videoplayer for %%p in (%packages%) do ( echo Uninstalling %%p ... adb shell pm uninstall --user 0 %%p ) echo Done. pauseMac/Linux的shell脚本#!/bin/bash packages( com.miui.video com.miui.music com.xiaomi.gamecenter com.miui.browser com.miui.videoplayer ) for pkg in ${packages[]}; do echo Uninstalling $pkg ... adb shell pm uninstall --user 0 $pkg done echo Done.把你要卸载的包名填进列表里运行脚本就行。建议先放两三个包名测试一下确认没问题再批量加。4.3 卸载失败的常见原因和解决办法实际操作中你可能会遇到各种失败情况我整理了几个最常见的报错Failure [not installed for 0]这个通常是因为包名拼错了或者这个应用本来就不存在于用户空间。先用adb shell pm list packages | findstr 关键词确认包名是否正确。报错Failure [DELETE_FAILED_INTERNAL_ERROR]这个多半是因为应用正在运行系统不允许卸载。先强制停止应用adb shell am force-stop 包名然后再执行卸载命令。报错Failure [DELETE_FAILED_DEVICE_POLICY_MANAGER]说明这个应用是设备策略管理器通常是企业管控或者家长控制相关的。这种应用需要通过adb shell dpm remove-active-admin先移除管理员权限但操作比较复杂不建议普通用户折腾。报错error: no devices/emulators found这是ADB没连上手机检查USB线、驱动、USB调试开关。试试adb kill-server adb start-server重启服务。4.4 卸载后的验证和恢复方法卸载完之后用adb shell pm list packages | findstr 包名关键词确认应用是否还在列表里。如果搜不到了说明卸载成功。如果发现卸错了想恢复用这个命令adb shell cmd package install-existing 包名这个命令会把之前通过--user 0卸载的应用重新安装回来。前提是系统分区里的APK还在ADB卸载不会删除系统分区的文件所以正常情况下都能恢复。注意恢复之后应用的数据是丢失的相当于重新安装。所以卸载前如果有重要数据先备份。5. 哪些预装应用可以安全卸载分类清单5.1 小米自家应用可卸载与需保留小米自家应用里大部分是可以安全卸载的但有几个需要留意可以放心卸载的com.miui.video— 小米视频com.miui.music— 小米音乐com.miui.browser— 小米浏览器com.xiaomi.gamecenter— 小米游戏中心com.miui.videoplayer— 视频播放器com.miui.notes— 小米笔记如果你不用的话com.miui.weather2— 天气可以用第三方替代com.xiaomi.shop— 小米商城com.miui.compass— 指南针com.miui.fm— 收音机建议保留的com.miui.securitycenter— 安全中心管权限和清理的com.miui.powerkeeper— 电源管理影响续航com.miui.cloudservice— 云服务如果你用小米云备份com.miui.analytics— 分析服务虽然可以卸但可能影响系统统计功能5.2 第三方合作预装应用的处理第三方预装应用通常是最占空间、最烦人的而且大部分可以安全卸载。常见的包括各种短视频、新闻、购物类应用某些渠道定制的应用比如运营商定制机上的运营商应用游戏中心的推荐游戏这些应用的包名通常不包含miui或xiaomi而是各自厂商的包名比如com.ss.android.xxx字节系、com.tencent.xxx腾讯系等。用adb shell pm list packages -s列出来之后对照应用名称判断就行。5.3 运营商定制机和渠道机的特殊处理如果你买的是运营商定制机或者某些渠道特供机预装应用会更多而且有些是运营商强制的。这类应用通常包名里带有运营商标识比如com.chinamobile.xxx、com.chinaunicom.xxx等。这些应用大部分可以卸载但要注意某些运营商应用可能和SIM卡功能绑定卸载后可能导致VoLTE、VoWiFi等功能异常。建议先卸载一个测试一下确认没影响再继续。5.4 卸载清单的整理思路和模板我自己的做法是维护一个卸载清单文件按类别整理# 小米自家应用 com.miui.video com.miui.music com.miui.browser com.xiaomi.gamecenter # 第三方应用 com.ss.android.article.news com.tencent.news # 保留不动 # com.miui.securitycenter # com.miui.powerkeeper每次换手机或者刷机之后直接拿这个清单跑一遍脚本就行。建议你也维护一个自己的清单标注清楚哪些卸了、哪些保留、为什么保留。6. 进阶话题Shizuku和其他免电脑方案6.1 Shizuku是什么能解决什么问题Shizuku是一个让普通应用也能调用系统API的工具。简单说它通过ADB授权启动一个服务然后其他应用可以通过这个服务来执行需要ADB权限的操作。对于卸载预装应用来说Shizuku的价值在于你不需要每次都连电脑手机上装一个支持Shizuku的应用比如某些应用管理器就能直接卸载预装应用。Shizuku的安装流程大致是先从GitHub下载Shizuku的APK安装到手机然后通过ADB启动Shizuku服务adb shell sh /storage/emulated/0/Android/data/moe.shizuku.privileged.api/start.sh启动之后Shizuku就常驻在后台其他应用可以请求它的权限。6.2 Shizuku的配置步骤和常见报错Shizuku的配置有几个容易出问题的地方第一Shizuku的启动脚本路径可能因版本不同而变化建议直接从Shizuku应用内的指引操作。第二每次手机重启后Shizuku服务会停止需要重新通过ADB启动除非你有Root权限。第三部分MIUI版本对Shizuku的后台运行有限制需要在电池优化里把Shizuku设为无限制。常见的报错包括Shizuku服务未运行需要重新启动服务、权限被拒绝需要在Shizuku应用里授权目标应用等。遇到问题先去Shizuku应用里看服务状态大部分问题都能在那里找到线索。6.3 无线调试不插线也能用ADBAndroid 11及以上版本支持无线调试小米手机在开发者选项里也能找到无线调试开关。开启之后手机和电脑连同一个WiFi在电脑上执行adb pair 手机IP:配对端口 adb connect 手机IP:连接端口配对码在手机的无线调试页面里能看到。配对成功之后就可以不插USB线执行ADB命令了。这个方案适合经常需要ADB操作但又不想每次都插线的用户。注意无线调试的稳定性不如USB尤其是WiFi信号不好的时候容易断连。批量卸载操作建议还是用USB线稳定可靠。6.4 免电脑方案的局限性和风险Shizuku方案虽然方便但有几个局限一是每次重启后需要重新激活无Root情况下二是部分系统应用通过Shizuku卸载可能会失败三是Shizuku本身也需要一定的学习成本。我的建议是如果你只是偶尔清理一次预装应用用电脑ADB就够了没必要折腾Shizuku。如果你经常需要调整系统应用或者想在手机上直接管理那Shizuku值得一试。7. 踩坑实录我遇到过的那些问题7.1 卸载安全中心导致权限管理崩溃这是我早期踩过的一个大坑。当时觉得安全中心就是个清理工具卸了应该没事。结果卸载之后所有应用的权限管理页面都打不开了因为MIUI的权限管理是集成在安全中心里的。最后只能恢复出厂设置才解决。教训就是小米的安全中心不是普通的安全软件它是系统权限框架的一部分绝对不能卸。7.2 误删系统组件后的补救过程还有一次我批量卸载的时候脚本里不小心包含了一个系统组件的包名结果手机重启后一直卡在开机动画。当时第一反应是完了要变砖了后来想起来ADB卸载只是移除了用户空间的安装系统分区还在。于是进Recovery模式双清重启后系统重新初始化被卸载的系统组件自动恢复了。这个经历告诉我ADB卸载虽然安全但批量操作前一定要仔细核对包名列表最好先小批量测试。7.3 ADB连接不稳定的排查思路ADB连接不稳定是我遇到最多的日常问题。表现包括adb devices时有时无、命令执行到一半断连、adb shell进去之后卡住等。排查思路是这样的先换一根USB线很多问题是线材质量导致的然后换一个USB口前置面板的USB口供电可能不足再检查手机上有没有弹出授权对话框。如果都没问题试试adb kill-server adb start-server重启服务。最后才考虑驱动问题卸载设备管理器里的手机驱动重新安装。7.4 卸载后应用复活的原因分析有时候你明明卸载了某个应用过一段时间发现它又回来了。这种情况通常有几个原因一是系统更新时重新安装了预装应用二是某些系统服务在检测到应用缺失后自动恢复了它三是你卸载的只是当前用户空间的副本系统分区里的原始版本在某些条件下会被重新安装。要彻底解决复活问题目前没有完美的方案除非Root后直接删系统分区文件。我的做法是定期检查发现复活了就再卸一次。另外可以在开发者选项里关闭自动更新系统应用来减少这种情况。8. 卸载后的系统维护和注意事项8.1 系统更新对卸载结果的影响MIUI和HyperOS的系统更新通常会重新安装部分预装应用尤其是大版本更新的时候。更新完之后建议重新跑一遍卸载脚本把复活的应用再清理掉。另外系统更新可能会改变某些应用的包名或者引入新的预装应用所以每次更新后最好重新列一遍应用列表看看有没有新面孔。8.2 恢复出厂设置前的准备如果你打算恢复出厂设置要知道恢复之后所有被ADB卸载的预装应用都会回来。所以恢复出厂设置之前先确认你的卸载清单还在恢复之后可以快速重新清理。恢复出厂设置还会清掉所有用户数据所以务必提前备份照片、联系人、聊天记录等重要数据。8.3 长期维护的建议和节奏我的建议是新手机到手后先花半小时清理一遍预装应用之后每次系统大版本更新后检查一次平时不用太频繁。维护清单文件记录哪些卸了、哪些保留换手机的时候直接复用。另外不建议追求极致精简把能卸的都卸了。有些应用虽然看起来没用但可能和其他系统功能有隐性关联。保留一点冗余系统反而更稳定。8.4 关于保修和系统稳定性的说明ADB卸载预装应用不会影响手机保修因为它不涉及解锁Bootloader或Root。如果手机出现硬件问题需要送修直接去就行售后不会因为你卸载了预装应用而拒绝保修。系统稳定性方面只要不卸载核心组件日常使用不会有明显影响。我自己的主力机用了两年多卸载了三十多个预装应用系统一直很稳定。关键还是那句话不确定的别动核心的别碰。