ADB这玩意儿,说起来算是Android搞机路上绕不开的一个老伙计了。无论是当年刷机折腾Recovery,还是现在帮家里人收拾电视盒子里的预装软件,又或者是开发调试时想快速抓一份日志定位崩溃,ADB始终是那个最底层的“万能钥匙”。很多新手一听到命令行就头皮发麻,觉得这是大神才干的事,但实际上ADB的入门门槛远比你想的低,只要把从下载安装到环境配置这条路走通,再掌握几个高频命令,你就能干翻一大半日常需求。
这篇文章我不打算给你罗列一份几百条命令的冷冰冰清单,而是从实际使用场景出发,从零开始把ADB讲透。包括怎么下载靠谱的工具包、怎么配置环境变量让电脑随时能调用ADB、怎么解决连接设备时的各种疑难杂症,再到怎么用ADB抓日志、装应用、冻结预装软件、调整系统隐藏设置,顺便把模拟器、电视盒子、车机这些特殊场景下的玩法也一并聊透。不管你是刚入坑的小白,还是已经会用两三条命令但想系统补课的老玩家,这篇都能让你有所收获。
1. 环境搭建:ADB工具从下载到配置的完整流程
1.1 下载渠道与版本选择:别再用来历不明的“绿色版”
先说下载。ADB本身不是一个独立的大软件,它是Google官方Android SDK Platform Tools里的核心组件,官方下载页面在Android开发者网站,Windows、macOS、Linux三个平台都有对应压缩包。我强烈建议你直接下载官方ZIP包,体积只有十几兆,解压出来就是adb.exe、fastboot.exe、AdbWinApi.dll这几个文件,够用且干净。
很多人习惯去某度搜“ADB工具包下载”,下回来一个几百兆的“全家桶”,里面捆绑了各种改版工具甚至是推广软件,我见过不少人在这一步就中招了。ADB这种基础工具,官方一直在更新,新版会修复旧版在高版本Android上的兼容性问题,比如新版adb才能识别Android 14以后的无线调试配对流程,老版本就可能卡在连接环节。所以如果你发现设备连不上,先别急着怀疑驱动,可能就是你手里的ADB太老了。
另外说一下“15 seconds ADB installer”这个一键安装工具。它本质上是一个批处理脚本,帮你把ADB文件复制到系统目录,并自动配置好环境变量,对不想手动折腾环境变量的朋友来说确实省事。但我个人的建议是,你可以用它来快速部署,但心里要清楚它的原理,因为它做的工作无非就是“拷贝文件+写注册表/环境变量”,如果你以后想换版本,手动删旧引新也不复杂。推荐的做法还是官方ZIP包+手动配置环境变量,整个过程五分钟搞定,后面你在任何路径下打开终端都能直接敲adb,不用反复cd到工具目录。
1.2 Windows/macOS/Linux下的安装与环境变量配置
以Windows为例,具体操作是这样的:先把下载好的platform-tools压缩包解压到一个路径里,比如D:\platform-tools,注意路径里最好不要带中文和空格,否则某些脚本或命令解析时容易出幺蛾子。
解压完成后,按Win键搜索“环境变量”,打开“编辑系统环境变量”,点右下角“环境变量”,在“系统变量”里找到Path这一项,双击进入编辑界面,点“新建”,把D:\platform-tools粘贴进去,确定保存。这一步的意思是告诉Windows:当你输入adb这个命令时,系统会去这个目录里找adb.exe。配置好之后,重新打开一个CMD或PowerShell窗口,输入adb version,如果能看到版本号输出,就说明环境变量生效了。
macOS用户相对简单,把platform-tools解压到~/platform-tools,然后编辑~/.zshrc(或~/.bash_profile),加一行export PATH=$PATH:~/platform-tools,保存后执行source ~/.zshrc。Linux同理,用export PATH=$PATH:/路径/platform-tools追加到~/.bashrc即可。
这里还有一道关键的工序:驱动。Windows上,很多手机插上电脑后,在设备管理器里会显示为一个带黄色感叹号的未知设备,这种状态adb基本连不上。建议你安装手机厂商的官方USB驱动,像小米、华为、三星的官网上都有对应驱动下载。或者直接用官方通用的Google USB Driver,在Android Studio的SDK Manager里就能勾选安装。装完驱动后,设备管理器里应该能识别出类似“ADB Interface”的设备,这就对了。
1.3 验证环境是否就绪:先跑通第一条命令
环境配置完,别急着连手机,先把工具本身跑通。打开CMD,依次输入这几条命令验证:
adb version fastboot --version能正常输出版本号,说明工具本身没问题了。如果提示“adb不是内部或外部命令”,大概率是环境变量没配置对,或者你改了Path之后没有重开终端。这种问题几乎占环境问题的八成,检查一下路径是不是真的指向了包含adb.exe的目录。
接下来你可以随便接一台Android设备,进入开发者模式打开USB调试,连上电脑后执行adb devices,能看到一串序列号加device字样,恭喜,整个链路全部打通了。到这里,ADB环境搭建这关就算正式过关,后面所有玩法都建立在这个基础上。
2. 让电脑连上手机:设备连接、模式切换与连接故障排查
2.1 打开开发者选项与USB调试:各品牌入口大同小异
ADB要连上手机,前提是手机开启了“USB调试”。这个开关藏在开发者选项里,而开发者选项默认是隐藏的,需要你连续点击“版本号”多出来。绝大多数国产手机(小米、华为、荣耀、OPPO、vivo等)都是在“设置-我的设备-全部参数与信息”里,找到“版本号”这一项连续点击7次,系统会提示“你已进入开发者模式”。有的系统还需要你输入锁屏密码确认,或者登录账号才算数。
打开后回到设置首页,搜索“开发者选项”,进去把“USB调试”打开。小米的MIUI比较特殊,里面还有一个“USB调试(安全设置)”开关,允许USB调试时修改权限或模拟点击,如果不打开这个,后面你用adb进行模拟点击、授权某些操作时会被拒绝。强烈建议一起打开。另外,建议你在开发者选项里把“锁屏时禁用USB调试”关掉,不然手机亮屏锁屏状态下电脑端可能识别不到调试权限。
如果你是为了刷机或者搞底层操作,还会用到“OEM解锁”选项,这个在小米、一加等机型上位于开发者选项里,用于后续fastboot模式下的解锁操作。注意,OEM解锁会清除手机数据,而且有些品牌解锁后会影响保修,动这个开关之前先想清楚。
2.2 ADB、Recovery、Fastboot三种模式到底有什么区别
很多新手会被“红米k50 fastboot连adb”这种问题搞懵,根本原因是没分清楚ADB和Fastboot是两个不同的工作模式。
日常使用的ADB模式,是手机正常开机进入系统后,通过USB调试接口与电脑通信,你可以执行安装应用、抓日志、查看文件等操作,所有命令都由系统里的adbd守护进程响应。
Fastboot模式是一个更底层的引导模式,手机开机时按住音量下加电源键进入(各品牌略有差异),屏幕上会显示一只兔子或“FASTBOOT”字样。在这个模式下,系统还没完全启动,你无法用adb命令,而是要用fastboot命令,比如fastboot devices来确认设备连接,然后执行fastboot flash刷入镜像、fastboot reboot重启等操作。Fastboot和ADB用的是两套驱动,Windows上如果你刷机时电脑识别不了fastboot设备,多半是缺少fastboot驱动,得单独装。
Recovery模式则是手机上的独立恢复系统,常用于刷入刷机包、双清、备份等。现在很多玩机用户会刷第三方Recovery,但本文不展开,因为内容太庞杂,而且很多品牌的解锁和刷入流程差异很大。记住一点:ADB命令在系统内用,fastboot命令在bootloader下用,别混了。
2.3 连接故障排查:unauthorized、offline、空列表,逐一击破
这一节聊聊大家问得最多的“adb unauthorized怎么解决”。
第一次用adb连接一台新手机时,手机上会弹出一个“是否允许USB调试”的授权对话框,你必须勾选“始终允许”并点击确定。如果你手速太快点了拒绝,或者压根没弹窗,那电脑端执行adb devices时就会显示unauthorized,意思是设备未授权。解决办法是:在开发者选项里找到“撤销USB调试授权”,点一下,然后重新插拔手机,这时手机会再次弹出授权框,点允许即可。
如果插上手机后adb devices列表里连设备编号都没有,那说明电脑根本没识别到设备。按这个顺序排查:
- 换数据线。很多线只能充电不能传数据,这是头号坑。
- 检查手机通知栏的USB连接方式,确保选择了“文件传输(MTP)”而不是“仅充电”,部分机型必须选MTP模式adb才能识别。
- 检查设备管理器里有没有带感叹号的设备,有就手动更新驱动,指向你下载的驱动目录。
- 执行
adb kill-server和adb start-server,重启ADB服务,有时服务僵死就会出现识别不到的情况。
还有一种情况是设备状态显示offline,连着但不响应。这通常是因为ADB版本太旧,或者手机系统版本与电脑端ADB不匹配,优先升级platform-tools到最新版,重启电脑再试。如果是刷机后出现offline,还可能是因为系统里没有打开USB调试,或者刷的包本身禁止了调试。
2.4 无线连接与多设备管理:摆脱数据线的束缚
每次调试都要找线实在麻烦,Android 11开始官方支持无线调试,我经常直接用WiFi连设备测试,省事不少。
无线调试有两种方式。第一种,手机和电脑连同一个WiFi,手机打开开发者选项里的“无线调试”,点击“使用配对码配对设备”,屏幕上会显示一个IP端口和6位配对码。电脑端执行adb pair IP:端口,输入配对码,就会配对成功。之后执行adb connect IP:端口即可连接。这里的IP是手机在局域网里的地址,端口是无线调试界面动态分配的,每次可能不一样。第二种方式适用于安卓10及以下的老设备,需要先用USB线连接一次,然后执行adb tcpip 5555,把ADB服务切换到TCP模式,再拔掉线,执行adb connect 手机IP:5555。
关于“adb动态密码计算器”这个词,我猜你可能看到的是某些厂商调试界面会显示动态验证码或配对码,想让电脑自动算出来。但严格来说,ADB的配对码是设备随机生成的,不存在外部计算器能逆推。碰见要密码的窗口,老老实实看设备屏幕上的码,别迷信什么计算器,那多半是有问题的工具。
如果你同时连着多台设备,执行adb devices会列出所有设备,但直接敲命令会被系统提示“more than one device”,这时需要在命令里加-s参数指定设备,格式是adb -s 设备序列号 shell xxx。我通常会在多设备调试时用一个小技巧:先执行adb devices复制目标设备的序列号,再配合-s操作,避免误操作到另一台手机。
3. 日常最常用的ADB命令:安装、文件传输与日志抓取
3.1 安装与卸载应用:比商店安装更底层的操作
安装APK是ADB最常用的功能,特别是你要安装一个商店里搜不到的测试包,或者想给电视、车机装应用时,ADB几乎是唯一路径。基础命令是adb install 路径\app.apk,但实际使用中我更喜欢带上参数:
adb install -r -d -g app.apk-r表示覆盖安装保留数据,-d允许降级安装(比如你要从新版本退回旧版本,Android默认不允许,加上这个参数才能覆盖),-g表示安装时直接授予所有运行权限。这三个参数组合起来,基本覆盖了绝大多数安装场景。如果安装失败提示INSTALL_FAILED_USER_RESTRICTED,多半是手机开启了“USB安装监控”,需要你到开发者选项里关掉“USB安装”相关限制,或者用小米的“USB调试(安全设置)”授权。
卸载应用用adb uninstall 包名,但这里有个很关键的点:卸载前你得知道包名。很多人不知道包名到底怎么看,最简单的方法是adb shell pm list packages,把系统里所有包列出来,然后用| grep过滤关键词,比如我要找微信的包名:
adb shell pm list packages | grep tencent输出package:com.tencent.mm,这个com.tencent.mm就是包名。如果你不想在电脑上过滤,也可以在手机上装个“App包名查看器”之类的工具,但ADB这条命令最通用。
3.2 logcat抓日志:崩溃定位的关键手段
“adb logcat 抓取日志”几乎是每一个做Android开发或者测试的人都绕不开的操作。Logcat是Android的系统日志缓冲区,应用崩溃、ANR、网络请求失败、权限拒绝等问题都会在这里留下痕迹。
最简单的用法是直接执行adb logcat,但这会像瀑布一样刷屏,根本看不完。更高效的方式是配合筛选条件。比如要看崩溃信息,可以执行:
adb logcat -v time *:E-v time表示每条日志前面显示时间和进程信息,*:E表示只显示Error级别及以上的日志。如果你只想看某一个应用或进程的日志,还可以按包名过滤(Android 7.0以上支持):
adb logcat --pid=$(adb shell pidof -s com.tencent.mm)这条命令先用pidof拿到微信的进程ID,再传给logcat,只输出这个进程的日志。崩溃一般会伴随FATAL EXCEPTION或者AndroidRuntime字样,你可以配合grep来抓:
adb logcat -v time | grep AndroidRuntime等到崩溃复现,按Ctrl+C停掉,基本就能在日志里看到异常堆栈,定位到哪一行代码出了问题。如果需要把日志保存下来发给别人分析,可以加输出重定向:
adb logcat -v time > crash.log操作完按Ctrl+C结束,生成的crash.log文件就在当前目录。这里有个小细节:抓取日志前最好先执行adb logcat -c清空一下缓冲区,确保你抓到的是最新一次操作产生的日志,不然容易混入历史记录导致误判。
3.3 文件传输、截图录屏与模拟操作:ADB不只是命令行
ADB的文件传输能力常被人忽略,但实际非常有用。adb pull从手机往电脑拉文件,adb push从电脑往手机推文件:
adb pull /sdcard/Download/test.pdf D:\backup\ adb push D:\tools\app.apk /sdcard/Download/注意,Android的权限分区很严格,往/system这类目录写文件需要root权限,但往/sdcard、/data/local/tmp这种目录push文件是没问题的。我经常用adb push给电视盒子装第三方APK,比U盘拷来拷去方便得多。
截图和录屏也是高频操作。不需要root,不需要额外装App,一行命令搞定:
adb exec-out screencap -p > screen.png adb shell screenrecord --time-limit 10 --bit-rate 4000000 demo.mp4exec-out的意思是把截图的数据直接输出到电脑终端再重定向成文件,兼容性比adb shell screencap /sdcard/x.png然后pull更稳。录屏的--bit-rate参数控制视频码率,值越大越清晰但文件越大,日常演示4000000(4Mbps)够用了。
再提一下“adb键盘”这个词。你可能会看到有人说“用ADB模拟键盘输入”,其实这里指的是adb shell input系列命令,比如:
adb shell input text "hello" adb shell input keyevent 4input text直接把字符串输入到当前聚焦的输入框,input keyevent 4是模拟按下返回键。这套命令常用于自动化测试脚本、会议投屏演示、以及某些无法手动操作的场景。但要注意,它在微信、抖音等应用里输入时可能会被输入法的安全策略拦截,毕竟有些应用会禁止外部注入输入事件,这是应用自身的安全机制,不是ADB的问题。
4. 进阶玩法:用ADB把手机、电视和模拟器调教得更好用
4.1 冻结与卸载预装应用:动手前先想清楚后果
“vivo adb精简列表”“华为adb禁用大全”“红米k70能用adb冻结吗”这些热搜词背后有一个共同的需求:系统预装应用太多了,想删又怕删出错。ADB确实能管这事,但这里我必须先把安全原则讲透。
有两个核心操作,一个是pm uninstall -k --user 0 包名,一个是pm disable-user --user 0 包名。前者是卸载当前用户下的应用(不是真正的卸载,只是对当前用户隐藏并删除数据,系统分区里的包还在,恢复出厂设置后还会回来),后者是禁用应用。两者效果类似,都是让应用从桌面消失、不再运行,区别在于卸载会清掉应用数据,禁用则保留数据随时可恢复。
对应的恢复命令分别是:
adb shell cmd package install-existing 包名 adb shell pm enable 包名我推荐的思路是:优先用disable-user而不是uninstall,因为禁用可逆性更好,误操作后恢复成本低。对于绝大多数用户来说,只禁用那些明显没用的东西就够了,千万不要碰系统核心组件。比如你在网上看到有人列了一长串“精简列表”,里面可能有com.android.phone这种电话应用,你要是禁了,直接变成一台没法打电话的“砖头”。
判断包名能不能动,有一个缓冲区思维:凡是名字里带android、google.android、miui(小米)、huawei(华为)的,都先别急着动手,尤其是有system、settings、phone、input这些关键词的,基本是系统运行依赖。如果非要参考网上列表,务必对照自己手机的Android版本和品牌,不同机型包名差异很大,照搬很容易出事。红米K70这类机型用ADB冻结是完全可以的,MIUI对pm disable-user的支持很完善,操作前用adb shell pm list packages -s先看看系统包列表,心里有个底再说。
4.2 禁止应用联网:比系统设置更底层的手段
有些应用不给它网络权限,它就嚣张不起来,这点在Windows上可以靠防火墙,Android上则要用到AppOps。
AppOps是Android的一个底层权限管理机制,通过ADB可以直接修改应用的权限记录。禁止某个应用联网,命令是这样的:
adb shell appops set 包名 INTERNET deny比如禁止某个浏览器联网:
adb shell appops set com.android.browser INTERNET deny恢复联网只需要把deny改成allow。这个命令对绝大多数应用有效,比你去系统设置里关“应用联网控制”更直接,因为它写的是底层权限记录。但要注意,有些应用联网用的是底层socket直接绕过AppOps检测,或者应用自身有守护进程互相拉起,这时候AppOps就不一定拦得住了。另外,系统核心应用(比如应用商店、系统更新)不建议禁网,禁了可能导致系统功能异常,甚至卡在登录验证环节。
还有一个更温和的方案是直接限制网络策略:
adb shell cmd netpolicy set restrict-background 包名 1这个命令只限制后台联网,前台使用不受影响,对微信这类既要推送又不想让它后台乱跑的App比较友好。具体选哪种,看你需求。
4.3 修改系统隐藏设置:屏幕刷新率、DPI等参数
很多手机把屏幕刷新率选项藏得很深,或者默认只给“智能切换”,有些用户就是想强制全局90Hz、120Hz,又不想Root,这时候ADB可以绕道修改系统设置。
命令格式是:
adb shell settings put system peak_refresh_rate 120 adb shell settings put system min_refresh_rate 120peak_refresh_rate是最高刷新率,min_refresh_rate是最低刷新率,两个都设置成120,就相当于强制全局120Hz。如果你的设备不支持120Hz,设了也没效果,但不会出错。设置完可以重启手机让设置彻底生效,或者直接在开发者选项里切换一下“显示刷新率”验证。
类似的还有修改屏幕密度DPI:
adb shell wm density 440修改之后屏幕显示的元素会更小、内容更多,适合喜欢高密度显示的玩家。恢复用adb shell wm density reset即可。修改系统设置的原理,本质上是直接写系统Settings数据库,所以很多UI里没有暴露的选项都能通过settings put来调整。这个命令的用法是settings put 命名空间 键 值,命名空间一般是system、secure、global,键和值就是系统配置项。如果你想挨个探索,可以执行adb shell settings list system把当前系统所有设置项拉出来慢慢看,但注意别乱改,有些核心设置项改错会导致系统异常。
4.4 模拟器、电视盒子与车机:ADB适用的“非手机”场景
ADB的价值不仅在手机上。用“夜神模拟器 adb模式”这种关键词搜的人,多半是游戏多开或者自动化测试的用户。夜神模拟器的ADB端口是62001,你可以在夜神安装目录下找到adb.exe直接连,也可以用电脑上的ADB连接:
adb connect 127.0.0.1:62001不同模拟器端口不一样,雷电模拟器是5555,逍遥模拟器是21503,MuMu一般是7555,连接前先去模拟器设置里看“ADB调试”端口是多少。连接模拟器之后,所有adb命令照常可用,对于跑自动化脚本、批量安装应用、抓取模拟器内应用日志都非常方便。
电视盒子是另一个高频场景。“老款创维如何打开adb”这类问题的答案,不同品牌差异很大,但总体套路一致:进入设置,找到“关于”,连续点击“版本号”或“产品型号”进入开发者模式,然后开启“ADB调试”。有的品牌机器第一次还需要联网,有的还要求插上鼠标操作。老款设备如果找不到入口,可以试试遥控器上的特定组合键(比如“菜单键连续按几次”),或者去应用商店装一个“开发者选项”快捷入口App。不过这里要提醒一句:电视盒子属于嵌入式设备,不同芯片方案的ADB兼容性差别很大,我在老设备上就遇到过连上了adb但adb install装不进去的问题,多半是系统签名校验或者空间不足,这事急不来,多试试不同版本的APK(比如armeabi-v7a架构的就别装arm64-only的包)。
车机上的ADB类似,但更“封闭”。大部分车机要进工程模式才能打开ADB,常见做法是在拨号界面输入特定代码(比如*#*#8888#*#*),或者在某系统设置页面连续点击版本号。打开ADB后可以连电脑,实现安装软件、修改设置、抓取日志等操作。因为车机系统版本一般偏低,优先使用老版本ADB连接提高兼容性。
4.5 自定义ADB脚本:把常用操作打包成一键执行
玩到一定程度你会发现,很多命令其实是重复的。比如每次调试都要先连设备、清日志、打开某个App、抓日志、保存文件。这些操作完全可以写成一个脚本,放到桌面上双击运行。
Windows上我一般写一个批处理文件:
@echo off adb devices adb logcat -c echo 日志已清空,请操作手机后按任意键开始抓取... pause adb logcat -v time > crash_%date:~0,4%%date:~5,2%%date:~8,2%.log echo 日志已保存 pause这样每次需要抓日志,双击这个bat文件,手机会自动清空缓冲,等你操作完复现问题,回来按一下回车,日志就按日期命名保存好了。macOS/Linux下就是写shell脚本,思路一样。脚本化之后,ADB的使用效率能提升不少,这也是很多“大神”看着效率高的原因,不是手速快,是好用的工具链提前准备好了。
5. 常见问题速查与踩坑手记
5.1 高频问题汇总:设备和命令问题一次讲清
我整理了一份平时被问到最多的ADB问题表,按症状和解决办法对照,方便你排查。
| 现象 | 可能原因 | 解决办法 |
|---|---|---|
| adb不是内部或外部命令 | 环境变量未配置或终端未重启 | 检查Path路径,重新打开CMD |
| adb devices列表为空 | 数据线不支持数据传输/未选MTP/USB调试未开 | 换线、切换USB模式、确认USB调试 |
| 设备状态是unauthorized | 未在手机上允许授权弹窗 | 撤销授权后重新连接,点击允许 |
| 设备状态是offline | ADB版本过旧/服务僵死 | 升级platform-tools,adb kill-server后重连 |
| fastboot devices无设备 | 缺少fastboot驱动 | 安装厂商驱动或Google USB Driver |
| adb install报INSTALL_FAILED_USER_RESTRICTED | 手机限制USB安装 | 关闭开发者选项里的USB安装监控 |
| 无线调试connect超时 | 手机和电脑不在同一WiFi/端口变化 | 确认IP和端口,重新pair |
5.2 我踩过的几个典型坑
第一个坑是数据线。我早期调试时遇到过特别邪门的情况:设备管理器里能看到设备,但adb devices始终是空的,排查了驱动、端口、系统,最后换了根线秒连。那根线是什么问题呢?它是那种“充电快”的两芯线,根本不含数据线芯,有些杂牌线还把数据线芯做成很细的铜丝,时通时断。所以,如果你连接有问题,第一反应必须是换数据线,别跟我一样在驱动上折腾一小时。
第二个坑是驱动装多了反而乱。Windows上如果装了各种手机助手(比如某某手机助手、某某管家),它们会自动安装一堆通用ADB驱动,导致你在设备管理器里看到好几个“ADB Interface”,一个能用,另一个不能用。我的习惯是连接前先把这些助手类软件退掉,让系统只加载正规驱动,避免冲突。
第三个坑跟“adb键盘”有关。早期我用adb shell input text给应用自动填入表单,发现有些应用输入框根本收不到字,后来才明白是应用自己做了安全拦截,或者是输入框聚焦状态不对。解决办法是先用adb shell input tap 坐标点一下输入框,再执行input text,有时候还得配合adb shell input keyevent 61切换焦点,总之这类模拟输入不算稳,别在重要场景里过度依赖。
第四个坑是抓日志时分不清时间。Android的logcat时间戳默认是系统启动以来的运行时间(uptime),不是现实时间。如果你在分析崩溃日志时发现时间对不上,需要加-v datetime或者-v threadtime参数,让日志显示可读的现实时间。我之前习惯用-v time,但后来发现它显示的其实是相对启动时间,一度被误导过。
5.3 安全操作红线:这些事千万别做
ADB权限很大,正因为大,更要克制。有几条红线我每次讲ADB都会强调。
第一,不要轻易卸载或禁用系统核心应用,尤其是电话、短信、桌面、系统UI这些,一旦禁用可能直接进不去桌面,只能恢复出厂设置。第二,不要随便执行pm disable系列命令去“精简”你根本不熟悉的包,最好每次操作前用pm list packages -s和pm list packages -3分别查看系统包和第三方包,只对你确定没用的第三方包下手。第三,不要在没备份的情况下直接改系统底层配置,比如settings put改错了某些全局配置,虽然不至于变砖,但某些功能可能打不开,到时候要逐条找回来很麻烦。第四,不要从不明来源下载所谓的“ADB工具包”或“adb动态密码计算器”,这类工具常常自带后门,你的手机一旦授权给恶意ADB,等同于把设备管理权交了出去。
记住一条原则:ADB是管理你自己设备的工具,不是用来破坏的。操作之前先确认包名和作用,操作之后发现问题立刻用可逆命令恢复,基本就不会出大乱子。
写在最后的个人经验
如果你从头看到这里,恭喜,你已经比绝大多数只会“adb connect”的人强太多了。ADB的体系其实不大,核心就是环境、连接、常用命令、系统设置这几个模块,但每个模块延伸出来的玩法非常深。我个人的体会是,学ADB最好的方式不是背命令,而是带着问题去用:设备连不上了,去查连接原理;想给电视装软件,去查无线连接和install参数;想优化手机续航,去查appops和pm命令。每解决一个实际问题,你对ADB的理解就会加深一层。
最后再分享一个小技巧:把常用的ADB命令整理成自己的工具脚本库,比如connect.bat、logcat.bat、install.bat、packages.bat,每次用到直接双击,比临时敲命令高效太多。等你对ADB熟悉到一定程度,你会发现它不只是调试工具,更像是一把打开Android系统大门的钥匙,很多隐藏的功能和自定义玩法,都藏在那扇门后面等你探索。