☰
用adb卸载安卓预装软件:从包名查找到风险规避完整指南
2026/10/2 3:12:31 网站建设 项目流程

新手机买回来的前两天用着挺舒服,等系统把预装软件一个个“唤醒”之后,你就开始怀疑自己是不是买了个广告机。我不知道你那边情况怎么样,反正我手里好几台安卓设备都是这样:日历里塞推送、负一屏跳购物、自带的视频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 调试和各品牌开关

环境准备好之后,要把手机调到“可以被电脑指挥”的状态。常规路径是:

  1. 打开设置,进入“关于本机/我的设备”
  2. 连续点击“版本号”7 次,直到提示“已进入开发者模式”
  3. 返回设置,找到“开发者选项”
  4. 打开“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 uninstall

3.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 环境里用 grep:

adb shell "pm list packages | grep miui"

如果你知道目标应用大概属于哪个品牌或哪种类型,用这个方式能快速缩小范围。

更精准的方法是“前台应用包名识别法”。先在手机上打开你要卸载的那个 App,然后回到电脑执行:

adb shell "dumpsys window | grep mCurrentFocus"

输出的结果里通常会包含当前最上层窗口的包名和 Activity 名称,比如mCurrentFocus=Window{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,适合大部分普通安卓用户,也是这么多年我一直在用的精简方案。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询