
手机买回来系统里塞了一堆我永远用不上的App有些还在后台偷偷跑流量、弹广告常规的“卸载”按钮却是灰的只能看着干瞪眼。这个问题其实有个非常成熟的解法就是ADB工具。ADB全称Android Debug Bridge安卓调试桥它是安卓官方提供给开发者和玩家的调试通道你不需要root不需要刷机只要电脑上装好ADB工具再用数据线连上手机就能把那些系统自带应用“请”出去。这篇文章就是把我这些年用ADB精简手机的经验整理一遍从环境搭建、包名查找到卸载恢复、踩坑避雷全部讲透适合所有想给手机减负又不想折腾root的用户。1. 为什么我推荐用ADB而不是其他方式精简手机1.1 三种主流精简方案横向对比处理手机自带应用市面上最常见的思路无非三条root后卸载、厂商自带的停用功能、ADB命令卸载。root这条路我不建议普通用户走。root之后确实可以彻底删除系统分区里的apk文件但风险很高轻则某功能失效重则开不了机而且很多手机root之后直接失去保修某些银行类App也会检测root环境不让登录。再加上现在手机系统对root的限制越来越严格解锁Bootloader都可能需要申请权限这套路对大多数人来说不划算。厂商自带的“卸载”或“停用”功能是最无脑的方案但限制也最多。以我试过的多台机器来看厂商允许你停用的基本都是那些不痛不痒的应用真正吃资源的应用商店、游戏中心、钱包、助手之类的很多在设置界面里连停用按钮都藏起来了。ADB方案正好卡在两者之间。它借助的是安卓系统为开发者开放的调试接口不需要root也不需要厂商允许只要手机开启“USB调试”并授权电脑就能通过系统级的包管理命令对应用做“用户级卸载”。这种卸载不是把apk从系统分区删除而是从当前用户空间移除所以可逆性非常强后悔了随时可以恢复。我做了个对比表看得更直观方案需要root可逆性风险适用人群root后删除是基本不可逆高可能变砖折腾型玩家厂商自带停用否可逆低不想动脑子的大众用户ADB卸载否可逆低误删可恢复想深度精简的普通用户1.2 ADB能“指挥”系统的底层逻辑ADB之所以能做到这一步得从它的架构说起。ADB整体是客户端-服务器模式电脑上的adb client负责接收你输入的命令后台的adb server负责管理连接手机端则运行着一个adbd守护进程。当手机开启USB调试并授权后电脑就能通过这个通道执行shell命令。关键点在于adb shell里运行命令时虽然你拿到的不是root权限但本身已经是shell用户权限这个权限等级高于普通App。配合pmPackage Manager包管理服务这个系统组件就可以执行很多操作包括针对某个用户卸载指定的包。Android系统在设计时就允许调试模式下对“用户0”也就是机主用户做应用的安装和卸载操作这本来是为了方便开发者调试被我们拿来精简系统算是标准的“正规途径干正经事”。也正因为走的是官方接口这类操作不会触发系统完整性校验也不会破坏签名所以安全性比root方案高得多。你想想开发者天天用adb install装测试包、用adb uninstall卸载调试包这本身就是系统日常承受的操作自然要放心很多。1.3 删之前先分清“该删”和“不能删”工具再安全也架不住乱用。用ADB卸载系统应用最大的风险不是命令失败而是你自己分不清哪些应用能删、哪些不能删。根据我多年的实操经验可以按下面的规则来分类。能删的通常是这些手机厂商和互联网公司合作的预装应用比如某东、某头条、某视频App、游戏中心、钱包、阅读器、浏览器等等。这类应用多数是纯粹的商业推广删了不影响系统任何核心功能。另外一些厂商自家的全家桶应用比如云服务、音乐、视频、主题商店如果你确实不用也是可以删的但要注意有些应用被其他功能依赖删之前最好先冻结观察一下。不能动的是这些系统UI一般是com.android.systemui、系统设置、电话、短信、联系人存储、蓝牙、Wi-Fi、存储管理、权限管理、输入法至少保留一款、应用商店除非你完全依赖adb安装应用、安全中心/手机管家等涉及系统基础能力的应用。还有一个规律是包名以android开头的组件基本都是系统核心比如com.android.phone、com.android.settings这些最好别碰。我的经验是拿不准的应用严格执行“先冻结、后卸载”的策略。先用pm disable-user把应用停用用一周没问题再卸载这样能把风险降到最低。2. 动手前的准备工作ADB环境与手机端设置2.1 电脑端环境安装官方工具与驱动ADB工具本身并不复杂核心就是一套可执行文件。最干净的获取方式是下载Android官方提供的Platform Tools里面包含adb.exe、fastboot.exe以及相关dllGoogle官方持续维护版本新、兼容性好。不想去官网折腾的也可以用网上流传的“15 seconds ADB installer”这个小工具会自动帮你解压并安装到指定目录还会自动配置好环境变量对新手很友好。下载之后建议把platform-tools解压到一个固定位置比如D:\adb然后在系统环境变量Path里加上这个目录这样以后在任何终端窗口里都能直接敲adb命令。不配置环境变量也没关系每次在platform-tools目录里打开命令行窗口就行只是稍微麻烦点。驱动方面在Windows上第一次连接手机时如果系统没有自动识别出Android设备就需要手动装驱动。最简单的方法是用设备管理器查看有没有带黄色感叹号的设备右键更新驱动手动定位到platform-tools目录里的usb_driver文件夹。现在大部分手机连上电脑后系统都能自动装好驱动这一步更多是备用。2.2 手机端开启USB调试的完整步骤手机端需要先开启“开发者选项”。不同品牌的入口略有差异但大体逻辑都差不多打开“设置”找到“关于手机”或“版本信息”连续点击“版本号”7次左右系统会提示“你已进入开发者模式”。这一步要注意有的手机需要点击的是“系统版本”而不是“版本号”找不到就多在关于页面里点点看。进入开发者选项后打开“USB调试”。为了保证后续各种操作顺利我建议顺手把“USB安装”也打开毕竟后面可能需要通过adb install安装调试包之类的操作。有一些手机在开启USB调试时会要求你登录账号或插入SIM卡验证这是厂商的安全策略按提示走就行。接着用数据线把手机连到电脑。连接后手机会弹出一个USB用途选择记得选“传输文件MTP”模式。有些手机在“仅充电”模式下也能识别但MTP兼容性最好。首次连接时手机会弹窗“是否允许USB调试”勾选“一律允许”并点击确定。如果这个弹窗没出现大概率是之前授权被拒绝了需要在开发者选项里“撤销USB调试授权”再重新插线。2.3 验证连接adb devices 和 unauthorized 处理环境都配好后在命令行输入adb devices正常情况下会输出一行类似12345678 device的信息状态是device表示连接正常可以开始操作了。如果状态显示unauthorized说明手机端没有授权重新拔插数据线再看弹出的授权窗口或者去开发者选项里撤销授权后重连。如果显示offline多半是驱动不对或者数据线质量太差换一条原装线、换一个USB接口试试。我还遇到过一种情况就是adb服务端口被占用提示adb server version doesnt match this client或cannot connect to daemon这时候执行adb kill-server adb start-server重启adb服务就能解决。如果是模拟器或者电视盒子这类设备走的是网络adb模式需要用adb connect 127.0.0.1:62001这样的命令指定设备的IP和端口比如夜神模拟器的默认adb端口就是62001。电视机的网络adb开启方式就五花八门了有的进工厂菜单有的需要安装第三方工具具体看型号但核心原理都是让设备上的adbd开始监听网络端口。3. 删除手机自带应用核心操作全流程3.1 摸清目标应用的“真实包名”很多新手卡在第一步因为在桌面上看到的应用图标名字和系统里的包名完全对不上。包名是这个应用在Android系统里的唯一ID比如微信的包名是com.tencent.mm桌面上叫“微信”。要卸载某应用必须先拿到它的包名。最直接的办法是把所有应用包名列出来。打开命令行执行下面这条命令会列出手机上所有用户已安装的包adb shell pm list packages如果只想看系统应用加个参数adb shell pm list packages -s只想看自己装的第三方应用用-3参数adb shell pm list packages -3命令输出的结果很多几百行是常事手动找不现实。Windows上可以用findstr过滤关键词adb shell pm list packages | findstr xiaomi如果看到太多包名无从下手还有一个反向定位的办法。先在手机上把这个应用打开切到前台然后电脑上执行adb shell dumpsys window | findstr mCurrentFocus输出里的mCurrentFocus字段会显示当前前台应用的包名和Activity名比如mCurrentFocusWindow{... com.miui.home ...}这样就能反推出桌面上那个应用的真实包名。这个方法在找“不知道叫什么名字但想删”的应用时非常好用。3.2 备份与卸载一条命令的安全删除姿势拿到包名后我强烈建议先备份再卸载。系统应用的apk文件在系统分区里文件路径可以通过pm path命令查看adb shell pm path 包名比如输出package:/system/app/SogouInput/SogouInput.apk那就说明该应用的安装包在这个路径下。接下来用pull命令把apk拉回电脑备份adb pull /system/app/SogouInput/SogouInput.apk D:\backup\这一步的意义在于虽然ADB卸载本身可逆但万一你手抖把某个系统应用的原始文件覆盖或者破坏掉了备份就是后悔药。备份完成后就可以执行卸载命令了adb shell pm uninstall -k --user 0 包名拆解一下这行命令。pm uninstall是包管理服务的卸载指令-k表示保留应用数据这样万一以后恢复数据还都在--user 0表示只针对用户0也就是机主用户执行卸载。这个是整条命令的关键加上--user 0后卸载操作并不会真正删除系统分区里的apk文件只是把该应用从当前用户空间中移除所以随时能恢复风险非常低。卸载完成后可以用下面这条命令验证一下adb shell pm list packages | findstr 包名如果命令没有输出任何内容说明卸载成功。这时候回到手机桌面对应图标应该已经消失了。整个过程中手机屏幕可能会闪一下这是正常的系统在刷新应用状态。3.3 反弹恢复误删之后如何把应用找回来只要是使用pm uninstall -k --user 0做的卸载恢复起来就非常简单执行adb shell pm install-existing 包名这个命令会让包管理器把之前卸载的应用重新安装到当前用户空间。一般情况下几秒钟就能完成回到桌面就能看到图标回来了。如果没看到图标也不用慌重启一下手机基本就能恢复。如果不小心把桌面本身都删了也别慌。只要adb还能连上设备就还有救。可以用下面的命令恢复系统桌面或其他关键应用adb shell cmd package install-existing com.android.settings adb shell cmd package install-existing com.miui.home注意这里用的是cmd package install-existing和pm install-existing效果一样只是命令入口不同。恢复之后如果手机没反应直接adb reboot重启。这套恢复机制就是ADB卸载方案最大的底气所在即使你折腾得再狠只要没root、没动系统分区随时都能还原。4. 精简之外ADB日常实用命令与进阶思路4.1 比卸载更稳的“冻结”操作pm disable-user对很多不敢直接卸载系统应用的朋友我更推荐先“冻结”而不是“卸载”。冻结的命令是adb shell pm disable-user --user 0 包名冻结之后这个应用不会出现在应用列表里也不会被启动相当于暂时“隐藏”起来。但比卸载更安全的一点是冻结状态不会被系统应用商店的更新行为影响换句话说系统更新不会把冻结的应用重新装回来而卸载的应用在部分机型上偶尔会被系统更新“复活”。想恢复冻结的应用执行adb shell pm enable 包名或者直接用adb shell pm install-existing重新安装也行。冻结和卸载怎么选择我的习惯是拿不准、可能有依赖关系的系统应用一律先冻结观察纯粹的第三方预装推广应用直接卸载厂商自家服务类应用能冻结就不卸载。比如我见过有人问“红米k70能用adb冻结吗”答案是当然可以种命令是安卓系统通用的跟具体机型无关小米、华为、vivo、三星都一样适用。4.2 一表收好ADB常用命令熟练使用ADB之后你会发现它远不止用来删应用日常维护手机也离不开它。我把这些年用得最多的一批命令整理成了表格方便查阅。功能分类命令说明查看应用adb shell pm list packages列出所有已安装应用包名查看系统应用adb shell pm list packages -s过滤系统应用查看前台应用adb shell dumpsys window查看当前焦点窗口定位前台应用包名清空应用数据adb shell pm clear 包名清除应用数据解决很多异常问题安装APKadb install xxx.apk安装本地apk到手机卸载APKadb uninstall 包名卸载普通应用推送文件adb push 本地路径 手机路径把文件从电脑传到手机拉取文件adb pull 手机路径 本地路径把文件从手机传到电脑抓取日志adb logcat实时输出系统日志排查闪退关键截屏adb exec-out screencap -p a.png截取手机屏幕保存到电脑录屏adb shell screenrecord /sdcard/a.mp4录制手机屏幕输入文字adb shell input text 字符串向当前输入框填充文字重启手机adb reboot重启设备这些都是高频命令尤其是adb logcat排查应用闪退、系统异常时日志几乎能告诉你所有真相。adb push和adb pull则是我平时传文件懒得找数据线管理工具时的首选。4.3 冷门但好用的ADB技巧除了上面这些通用命令还有几个冷门技巧一旦用上就非常顺手。第一个是修改屏幕分辨率和密度。想给老手机减负或者让某些大屏App显示更多内容可以执行adb shell wm size 1080x2340 adb shell wm density 440执行完手机画面会瞬间变化恢复原状就执行adb shell wm size reset和adb shell wm density reset。这个操作有风险设得太离谱会黑屏但黑屏也能靠reset救回来胆子可以大一点。第二个是设置屏幕刷新率。部分手机性能一般默认的高刷新率反而让系统掉帧可以通过adb提前锁定刷新率adb shell settings put system peak_refresh_rate 60.0 adb shell settings put system min_refresh_rate 60.0不同品牌的属性名略有区别有的还兼顾user_refresh_rate但思路是一样的。改完之后系统会强制使用60Hz发热和流畅度都会有改善。第三个是禁止应用联网。Android 10以上的系统对网络权限管理严格但部分应用仍然可以偷偷在后台联网通过adb可以针对单个应用关闭联网adb shell appops set 包名 INTERNET ignore恢复联网就改成adb shell appops set 包名 INTERNET allow这个命令在部分机型上可能提示不支持但绝大多数主流手机都认。用它来管住那些“卸载不了又不许联网”的应用非常实用。第四个是授予应用无障碍权限。如果你想用一些自动化工具但不想在设置里一级级找开关可以试试adb shell settings put secure enabled_accessibility_services 包名/无障碍服务名 adb shell settings put secure accessibility_enabled 1执行完再进入设置里的无障碍页面对应的开关就已经是被打开的状态了。注意授予这类权限务必用于正当用途自己折腾手机没问题如果拿去做灰色操作风险自担。5. 这些坑我踩过常见问题排查与避坑建议5.1 高频问题速查表用ADB删应用的过程中我前前后后踩过不少坑也帮朋友处理过各种疑难杂症下面把出现频率最高的问题列成速查表。现象原因解决办法adb devices显示unauthorized手机端未授权或授权被撤销重新插线勾选“一律允许”adb devices显示offline驱动不兼容或数据线有问题换原装线、换USB口、重装驱动no devices/emulators found驱动没装好或没开启USB调试打开USB调试、检查驱动、换MTP模式adb server version doesnt match本机有多个adb版本冲突执行adb kill-server后重试5037端口被占用其他程序占用adb端口结束占用进程或重启电脑卸载后应用被系统更新“复活”系统组件自动恢复预装应用改用pm disable-user冻结其中“unauthorized”是最常见的很多新手第一次插线都卡在这一步。其实解决办法就三件事手机屏幕上弹窗必须点“允许”拔插一次数据线重新触发弹窗最后实在不弹出就去开发者选项里“撤销USB调试授权”再重来一遍。5.2 不同品牌手机的特殊注意事项各品牌手机对ADB的限制策略不同操作前最好心里有数。小米和红米系列在开发者选项里除了“USB调试”还要打开“USB安装安全设置”否则部分操作会受限。另外MIUI和HyperOS对系统应用的保护比较强某些应用即使卸载了重启后也可能被应用商店悄悄装回来所以对小米系手机我建议优先使用冻结而不是卸载。vivo和iQOO的开发者选项里也需要注意同时开启“USB调试”和“USB安装”。有些vivo机型在未插入SIM卡的状态下不让开启USB调试这是一个很隐蔽的限制网上搜“vivo adb精简列表”能找到大量的折腾经验但建议动手前先做好包名备份。华为和荣耀对ADB的限制更严格一些部分机型需要登录账号绑定而且卸载系统应用后系统更新时可能出现“恢复预装应用”的情况。如果手机还在保内建议少折腾核心服务。至于电视盒子和模拟器这类设备它们没有屏幕授权弹窗开启网络adb的方式各不相同老款电视可能要在工厂菜单里打开adb开关模拟器一般直接支持adb connect网络adb模式下要特别注意局域网安全别随意暴露adb端口。5.3 我的精简原则与最后提醒在多个品牌手机上反复操作之后我给自己定了一套精简规矩分享给所有准备动手的朋友。一是删除前列一份完整的系统应用清单用adb shell pm list packages -s把输出保存到本地文本文件万一误删可以对照恢复。二是坚持“一次只动一个应用”删完重启一天确认没有任何异常再删下一个别一时兴起连着删几十个出了问题都不知道是哪一个引起的。三是顺手记录下你删过的每一个包名和操作日期这份记录在几个月后系统更新出乱子时能帮你快速定位问题。四是永远保留至少一款输入法和系统应用商店否则手机日常使用会陷入寸步难行的状态。最后再说一个细节。有人卸载系统应用后遇到“无法开机”的情况我的经验是绝大多数不是卸载本身导致的而是同时删了几个存在依赖关系的系统组件比如删了应用商店又删了系统服务框架。遇到这种情况最稳的救法是重启进Recovery模式用adb命令行把之前记录的关键包名全部install-existing一遍一般都能救回来。只要没root、没动系统分区永远都有回头路。我平时帮朋友精简手机最常说的就是一句ADB本身只是个工具真正考验人的是判断力和耐心。先冻结、再卸载、随时备份、谨慎操作这套流程走下来你的手机不仅能甩掉三十年都用不上的预装垃圾还能真正回到流畅清爽的状态。精简完那一下看着干净的桌面你会觉得这半小时折腾完全值了。