ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

用adb卸载安卓预装软件:从包名查找到风险规避完整指南

2026/10/2 3:12:40 拓冰建站 浏览量
用adb卸载安卓预装软件:从包名查找到风险规避完整指南 新手机买回来的前两天用着挺舒服等系统把预装软件一个个“唤醒”之后你就开始怀疑自己是不是买了个广告机。我不知道你那边情况怎么样反正我手里好几台安卓设备都是这样日历里塞推送、负一屏跳购物、自带的视频App根本用不上点设置里的“卸载”却是灰色要么干脆只有“停用”和“卸载更新”两个选项。后来我基本靠 adb 命令把这些预装软件一个个清理掉能卸的卸、没把握的冻结今天就把这套完整方案和踩过的坑一次性写清楚。文章适合刚接触 adb 的新手也适合已经会一点命令、但害怕误删系统组件的朋友照着做基本都能成功。1. 系统预装软件为什么这么难缠以及 adb 凭什么能删1.1 预装软件装在了一个不给你写权限的分区里安卓的存储分区划分得比较明确正常情况下用户安装的第三方 App 都在/data/app分区而手机出厂自带的预装软件大多放在/system/app或/system/priv-app这两个目录。关键问题就出在这里用户在使用手机时只有普通权限对/system分区是没有写权限的。系统设置里的“卸载”按钮本质上是让包管理器去删除这个应用的安装记录和用户数据但删除的动作需要对应分区的写权限。你卸一个自己装的 App写的是/data分区没问题可预装软件住在/system分区普通用户根本删不动。所以你会看到一种迷惑现象很多预装软件在设置里显示的是“卸载更新”而不是“卸载”。这说明系统允许你把这个 App 更新过的版本回退到出厂版本但出厂版本本身是焊死在系统分区里的没给你移除的入口。另外哪怕你用了一些“一键禁用”工具把图标藏起来只要系统应用没有真正在当前用户空间里被移除它依然会在后台被某些关联组件唤醒。1.2 adb 的本质一条电脑与手机的调试通道adb 全称 Android Debug Bridge是 Google 提供给开发者的官方调试工具。它通过 USB 连接电脑和手机手机端有一个常驻的 adbd 守护进程电脑端通过 adb 客户端发送命令Adb 服务器负责中转。开发者平时用它安装 App、抓日志、传文件普通用户听到 adb 会害怕其实它只是一条很克制的命令通道。利用 adb 卸载预装软件靠的是这条命令adb shell pm uninstall --user 0 包名这条命令的含义是让系统的包管理器在当前用户User 0也就是你正在使用的这个系统用户的空间中把这个应用“卸载掉”。注意这里是“在当前用户空间内卸载”而不是从/system分区物理删除。系统分区里的 apk 文件其实还在但在你的用户空间里它已经被移除出应用列表桌面图标消失不会再启动也不占用运行内存。以后恢复出厂设置或系统 OTA 升级它可能还会回来这也是免 root 方案必须接受的一个特点。很多教程喜欢对比“真删”和“假删”我的理解是对普通用户来说只要它不在我的桌面出现、不后台自启、不推送广告它就是“删掉”了。何必冒着系统变砖的风险去动系统分区。2. 动手前把环境备齐adb 工具、驱动和 USB 调试开关2.1 从哪下载 adb环境变量配不配都行现在 adb 已经不需要你去装一套完整的 Android Studio 了。Google 官方提供了单独的 SDK Platform Tools 压缩包Windows、macOS、Linux 都有解压之后里面就是adb.exe、fastboot.exe这一堆文件。Windows 用户最简单的用法是把压缩包解压到一个路径里比如C:\adb然后在这个目录下打开命令行窗口直接执行adb version能输出版本号就说明工具没问题。嫌每次都要 cd 到目录太麻烦可以把C:\adb加到系统环境变量的 Path 里之后在任何终端都能直接敲adb。网上流行的“15 seconds adb installer”这类一键安装包本质上也是帮你做这件事同时帮你装好通用 USB 驱动对小白确实省事。但我的建议是尽量从可信渠道获取安装包很多来路不明的整合包会顺手捆点私货得不偿失。macOS 用户同样下载 platform-tools然后在解压目录里执行./adb或者干脆用 Homebrew 安装android-platform-tools。Linux 用户类似。2.2 手机端的开发者选项、USB 调试和各品牌开关环境准备好之后要把手机调到“可以被电脑指挥”的状态。常规路径是打开设置进入“关于本机/我的设备”连续点击“版本号”7 次直到提示“已进入开发者模式”返回设置找到“开发者选项”打开“USB 调试”这一步不同品牌会有额外门槛。小米和红米 MIUI/HyperOS 系统里通常还需要打开“USB 调试安全设置”否则后面执行卸载命令时可能报错。某些 MIUI 版本打开这个开关时会要求登录小米账号甚至插卡联网验证这是防止陌生人通过 USB 随意改动手机的正常安全策略。vivo 的开发者选项藏得比较深在“更多设置”里部分机型连接后还需要在手机上确认允许 USB 调试。华为/荣耀机型第一次连接时可能需要输入锁屏密码并二次确认。不管什么品牌第一次用数据线连电脑时手机屏幕都会弹一个“是否允许 USB 调试”的对话框记得勾选“一律允许”不然每次断开重连都要重新授权。2.3 连接不上、unauthorized、offline 的排查思路把手机连上电脑后在终端执行adb devices正常情况下会看到一行列表设备名称左边是序列号右边是状态。状态一般为三种状态含义处理方式device正常连接可以执行命令直接开始下一步unauthorized手机端没有确认授权看手机屏幕弹窗点“允许”没有弹窗就关掉 USB 调试再重新打开offline设备状态异常换一根原装数据线、换一个 USB 口执行adb kill-server后再试如果 Windows 设备管理器里完全看不到设备大概率是驱动问题。可以先安装手机品牌官方的 USB 驱动或者装 Google USB Driver。老款设备偶尔还要求关闭手机的“仅充电”模式把 USB 连接方式改成“文件传输/MTP”否则 adb 无法识别。还有一个特别容易踩的坑电脑上开了多个 adb 服务或者之前装过各种手机助手导致adb devices怎么都刷不出设备。这时候先执行adb kill-server再执行adb start-server重启 adb 服务大部分假死都能解决。模拟器上如果连不上往往不是驱动问题而是端口连接方式不同这个我放到后面专门讲。3. adb 卸载预装软件全流程从查看包名到执行 pm uninstall3.1 第一步先确认设备真的在线流程走到这里你的终端应该已经能正常显示adb devices且状态为 device。我习惯执行一条命令确认 shell 通道通畅adb shell echo ok如果返回ok说明电脑和手机之间的通信没问题接下来所有操作都建立在 shell 通道上。这一步看似多余但它能帮你区分“adb 端口通”和“shell 命令能跑通”是两码事特别是模拟器或电视盒子这种特殊设备。3.2 第二步定位目标应用的包名卸载预装软件最大的门槛不是执行卸载而是搞清楚你要卸载的那个 App 的包名是什么。安卓应用的包名长这样com.example.something它不会直接显示在桌面图标下方。查询包名的命令有几条非常实用adb shell pm list packages这条命令会把手机里所有应用的包名列出来包括系统应用和第三方应用。数据量很大一般要配合过滤条件使用adb shell pm list packages -s adb shell pm list packages -3 adb shell pm list packages -d adb shell pm list packages -e建议收藏这几个参数-s表示 system只看系统应用-3表示只看第三方应用-d是看已被禁用/卸载的应用-e是当前可用应用。Windows 的 cmd 终端里没有 grep可以用findstr过滤也可以直接在 adb shell 环境里用 grepadb shell pm list packages | grep miui如果你知道目标应用大概属于哪个品牌或哪种类型用这个方式能快速缩小范围。更精准的方法是“前台应用包名识别法”。先在手机上打开你要卸载的那个 App然后回到电脑执行adb shell dumpsys window | grep mCurrentFocus输出的结果里通常会包含当前最上层窗口的包名和 Activity 名称比如mCurrentFocusWindow{xxx com.some.app/com.some.app.MainActivity}中间那段com.some.app就是你要找的包名。如果是视频、音乐、游戏中心这类常见预装包名还算好认麻烦的是品牌自带的一堆服务框架名字看不出用途。我个人习惯是先不急着卸用adb shell pm list packages -s导出完整列表存成 txt 文件再结合手机应用信息页面去核对。很多应用信息页能显示包名也可以在电脑端先对比判断确认一个卸一个。3.3 第三步执行卸载并读懂返回结果确认包名后执行adb shell pm uninstall --user 0 com.某预装应用.包名注意--user 0这个参数一定要带。它的含义是仅针对当前主用户执行卸载操作不碰系统底层文件。如果不带这个参数在某些环境里可能直接报权限错误或者出现预期之外的行为。命令执行后终端会返回结果Success代表卸载成功。Failure [DELETE_FAILED_INTERNAL_ERROR]通常是权限不足常见于小米/红米没开“USB 调试安全设置”或者该应用有设备管理员权限。Failure [DELETE_FAILED_USER_RESTRICTED]表示当前用户被限制了卸载操作比如某些系统应用被厂商锁了卸载入口。Failure [not installed for 0]说明包名写错了或者这个应用本来就只安装在别的用户空间里。我遇到过一种情况返回 Success但桌面图标还在。这是因为部分厂商桌面会缓存应用图标等一会儿或者重启桌面就好了。如果重启后图标还在再查一下pm list packages -d确认这个包是不是已经出现在“已卸载”列表里。3.4 卸载错了怎么办恢复命令和风险预案很多人不敢玩 adb就是怕卸载之后救不回来。实际上pm uninstall --user 0卸载掉的预装软件是可以无损找回的因为系统分区里的文件没有动。如果发现卸载了不该卸载的应用马上执行adb shell pm install-existing 包名这条命令会让系统重新在当前用户空间注册这个应用相当于“安装回系统预装版本”。如果是冻结状态用pm enable也可以恢复。恢复出厂设置是最后的兜底方案这个操作会重置整个用户空间所有预装软件都会按出厂状态重新出现。所以只要你不是 root 后去物理删了/system分区里的文件就没什么可慌的。我自己的习惯是动手前先把要卸载的包名整理到一个 txt 里卸载一个勾一个万一哪天真要用回某个应用也能照着列表恢复不用临时瞎猜包名。4. 什么能卸什么不能碰风险清单与误卸后的补救办法4.1 可以安心处理的几类预装软件卸载预装之前先分清目标属于哪一类。根据我多年玩机的经验以下几类基本属于“卸了不影响系统只影响你少看一堆广告”的类型预装类型典型例子说明品牌自带的视频、音乐、阅读XX视频、XX音乐、XX阅读卸了不影响系统更新桌面清爽很多购物、生活服务品牌商城、钱包、本地生活关掉或卸载后推送立刻消失游戏中心、应用推荐游戏中心、热门推荐通常是广告大户海外服务大部分国内机型用不到的国际服务无害但占空间可卸浏览器、输入法有替代品时品牌浏览器、品牌输入法建议先装好替代品再卸判断标准其实很简单这个 App 是不是系统运行的基础依赖。日历、计算器这类看似普通但不少系统把它们和账号同步、桌面组件绑定在一起卸载前最好用“停用”试水而不是直接卸载。4.2 绝对不要碰的系统组件有一批系统组件看着不起眼一旦卸载会让你连桌面都进不去。下面这几类我的建议是直接拉黑组件类型作用卸载后果系统桌面/桌面启动器负责显示桌面和应用图标桌面直接黑屏只能恢复出厂系统设置所有设置入口设置打不开系统基本瘫痪系统 UI状态栏、通知栏、手势操作状态栏消失交互混乱包安装器负责安装 apk后面无法安装任何应用电话/短信/联系人存储通讯基础服务电话短信功能异常网络/蓝牙/定位相关基础通信能力网络异常、蓝牙断连、定位失效品牌账号框架/云服务账号、备份、查找手机账号退出、查找手机失效很多小伙伴会问那到底哪些包名危险说实话不同品牌的包名规则千差万别光看名字容易误判。更靠谱的做法是先看这个应用在手机上的“使用场景”凡是你每天都离不开的、名字里带 Settings、SystemUI、Launcher、Phone、Telephony、Network 的一个都别动。我见过最惨的例子是有人误卸了某个品牌的桌面启动器重启后手机停在开机动画最后只能恢复出厂设置。所以我的原则是宁可少卸一个不能多卸一个。4.3 风险更低的操作方式停用而不是卸载如果你对一个应用是否安全没把握我强烈建议先用“停用”替代“卸载”。在 adb 里停用命令是adb shell pm disable-user --user 0 包名停用和卸载的效果很接近应用图标消失、无法启动、不占后台。区别在于停用是可逆的想恢复的时候执行adb shell pm enable 包名恢复成本比install-existing还低状态也不容易被系统更新破坏。我自己的玩机顺序是先停用观察一周如果系统没有异常、我的使用习惯也没受影响再考虑真正执行pm uninstall --user 0。停用期间如果出现异常直接 enable 回去一点风险都没有。这里还有个很容易被忽略的细节有些预装软件卸载后如果你在应用商店里点了“更新”它可能会被系统当作一个普通应用重新安装回来。因为它的安装包已经在应用商店服务器上关联了设备你一点更新等于主动把它装回来。所以精简完系统之后应用商店里的更新提醒尽量别乱点尤其是你明明已经卸载过的应用。5. 不同手机品牌和电视、模拟器上的差异化处理5.1 小米、红米、vivo 等品牌下的特殊限制小米和红米设备在 MIUI/HyperOS 上做 adb 卸载最需要注意的是“USB 调试安全设置”这个开关。红米 K70 这类新机型是可以用 adb 冻结应用的条件就是把这个开关打开。很多人在这一步卡住弹出的提示要求登录小米账号其实这是正常的账号验证机制主要是为了防止手机丢失后被陌生人通过 adb 抹掉数据。vivo 的老机型操作起来有一点绕。“vivo adb 精简列表”在网上流传很广但你需要知道同一品牌不同型号的预装差异很大别人的精简列表不能无脑照抄。vivo 的预装包名很多以com.vivo、com.bbk、com.iqoo开头但这不代表看到这些前缀就能卸。我建议以你自己的手机为准先把完整包名列表导出来对照手机应用信息逐个确认。vivo 有一个特别需要注意的点某些系统应用和系统更新、桌面手势绑定得很紧卸载前优先用停用方式测试。其他品牌如华为、荣耀、OPPO、三星基本思路类似。华为的部分预装应用卸载后如果华为移动服务HMS被牵连部分依赖 HMS 的应用会闪退。所以动华为设备之前先看看包名是不是 HMS 核心框架是的话不要碰。5.2 电视和电视盒子上也能用 adb 卸载预装不只是手机很多智能电视和电视盒子里的预装软件同样烦人。老款创维电视如何打开 adb可能每个型号入口都不一样常见的路径是设置 - 关于 - 连续点击版本号进入开发者模式然后在开发者选项里打开 ADB 调试。电视不像手机不一定方便插数据线。这时候可以用网络 adb 连接adb connect 电视IP地址:5555前提是电视和电脑在同一个局域网里。连接成功后再执行adb devices确认状态之后卸载命令和手机完全一样。但电视上卸载预装的危险等级比手机更高。电视系统的桌面 Launcher 一旦被卸载很可能会直接黑屏而且电视没有实体恢复菜单可以方便清除数据。我自己的经验是电视上只卸载明显没用的视频源、购物应用桌面、设置、应用商店、系统更新服务一律保留。宁可让它留在那里吃灰也别冒开不了机的风险。5.3 夜神模拟器等安卓模拟器里的 adb 差异模拟器场景下我最近用得比较多的是夜神模拟器。它的 adb 连接和真机不太一样不需要调 USB 调试而是通过本地网络端口连接。常见的连接命令是adb connect 127.0.0.1:62001新版夜神模拟器多开以后每个实例的端口可能不同具体端口可以先打开模拟器的安装目录用里面自带的 adb 工具看或者参考多开管理器里显示的端口信息。连接成功之后同样可以用pm uninstall --user 0卸载模拟器系统里自带的预装应用。模拟器里卸载预装比真机更“抗造”一些因为模拟器随时可以新建一个镜像或者重置系统玩坏了损失也不大。但原理是相通的不建议乱卸系统桌面和框架类应用。由于模拟器没有实体手机屏幕授权弹窗如果连接后状态一直是 unauthorized 或 offline先检查模拟器的 adb 调试开关有没有打开再重启模拟器多数情况下能解决。6. 会了 adb 之后顺手就能用的几个高频场景6.1 adb logcat 抓日志比各种助手都好用预装软件卸载后如果某个应用闪退或者你想查系统底层的运行日志logcat 是绕不开的工具。命令很简单adb logcat -v time app.log先执行adb logcat -c清空旧日志再复现问题最后用Ctrl C结束抓取。整个日志文件里信息很杂重点看AndroidRuntime和FATAL EXCEPTION字段adb logcat -s AndroidRuntime:E这条命令只输出 AndroidRuntime 的错误级别日志排查崩溃问题非常高效。Windows 终端下如果发现输出中文乱码可以切到 cmd 环境或者把终端编码切到 UTF-8否则日志里中文会变成乱码。6.2 截图、录屏和文件传输adb 截图是我平时经常用的一条命令不需要手机 root也不需要额外装截图工具adb exec-out screencap -p screen.png注意Windows 的 PowerShell 对二进制重定向支持不太好建议在 cmd 里执行这条命令否则生成的截图可能打不开。录屏的话直接让手机自己录更省事adb shell screenrecord /sdcard/demo.mp4文件传输方面把电脑文件推到手机用adb push 本地文件 /sdcard/把手机文件拉到电脑用adb pull /sdcard/文件 本地目录。系统应用里有些文件没有文件管理器权限不好拿但 adb 的 shell 权限基本够用。6.3 冻结应用、刷新率调整等更多实用指令会了 adb 之后能做的事远不止卸载系统应用。冻结应用用pm disable-user恢复用pm enable这在前面已经说过。部分支持高刷新率的手机可以通过 settings 命令临时调整屏幕刷新率adb shell settings put system peak_refresh_rate 120 adb shell settings put system min_refresh_rate 120需要说明的是这个命令不是所有手机都通用。有些手机的品牌 ROM 有自己的刷新率管理策略改了没反应或者重启还原都是正常现象。想在非高刷机型上强行拉高刷新率没有硬件支持也白搭。还有一些自动化操作需要授予无障碍权限也可以用 adb 辅助完成。大概格式是adb shell settings put secure enabled_accessibility_services 包名/无障碍服务类名 adb shell settings put secure accessibility_enabled 1具体包名和类名要以实际 App 为准。这个操作比较进阶新手如果只是清理预装没必要一上来就折腾它。6.4 使用 adb 的几条通用提醒折腾了这么多设备我最后想总结几条通用提醒。第一用完 adb 之后记得把手机上的“USB 调试”关掉。一直开着会增加被电脑端恶意软件操作的风险特别是你如果经常在陌生电脑上插数据线充电。第二不要全盘照抄网络上任何一份“精简列表”。同一个品牌、同一个型号不同系统版本的预装清单都可能不一样。别人列表里写着“可卸载”在你的设备上可能就是系统依赖。照着列表删出问题最后恢复成本还得自己承担。第三预装软件“卸载”之后系统 OTA 升级可能会把它重新带回来。这不一定表示你的操作白费了只是说明系统升级包会把出厂区里的预装重新注册到用户空间。碰到这种情况再按老办法处理一遍就行不用慌。第四如果你不确定一个应用是干什么的最稳妥的方式是先停用而不是直接卸载。停用还能随时恢复卸载虽然也能恢复但多一道install-existing的步骤就多一次出错的机会。我自己现在的习惯是清理完一批明显用不上的预装软件后就把 usb 调试关掉把包名清单保存在手机备忘录里下次升级系统如果发现又回来了再对照清单处理一次。这套方法不挑品牌、不用 root适合大部分普通安卓用户也是这么多年我一直在用的精简方案。