3、ADB设备管理:连接真机、连接模拟器、无线连接ADB、多设备管理、断开连接

设备管理这块,说白了就是让电脑和你的Android设备「对上话」。我见过不少新手,卡在这一步就放弃了,其实没那么复杂。咱们一个一个来拆解。

3.1 连接真机:USB调试是第一步

连接真机,核心就一句话:打开USB调试。但很多人找不到开关在哪。

操作路径是这样的:

  1. 打开手机「设置」 → 「关于手机」
  2. 连续点击「版本号」7次,直到提示「您已处于开发者模式」
  3. 返回设置主菜单,找到「开发者选项」
  4. 打开「USB调试」开关
注意:不同品牌的手机,开发者选项的位置可能略有不同。比如小米在「更多设置」里,华为在「系统和更新」里。找不到就搜一下「开发者选项」。

插上数据线后,手机会弹出一个「允许USB调试吗?」的对话框。记得勾选「一律允许」,然后点确定。这时候在电脑上输入:

adb devices

如果看到类似这样的输出,就说明连上了:

List of devices attached
0123456789ABCDEF    device

嗯,这里要注意。如果显示的是 unauthorized,说明你手机没点确认。如果显示 offline,大概率是数据线有问题。我个人习惯用原装线,或者那种带数据传输功能的线,千万别用那种只能充电的「快充线」。

3.2 连接模拟器:各有各的套路

模拟器这块,我踩过不少坑。不同的模拟器,连接方式不太一样。

模拟器类型 连接命令 备注
Android Studio自带模拟器 adb connect 127.0.0.1:5554 默认端口,一般自动连接
Genymotion adb connect 192.168.x.x:5555 IP地址在模拟器设置里看
夜神模拟器 adb connect 127.0.0.1:62001 端口可能不同,看版本
雷电模拟器 adb connect 127.0.0.1:5555 多开时端口会变

为什么端口不一样?因为每个模拟器厂商都有自己的「小算盘」。我曾经在项目里同时开了三个模拟器做兼容性测试,结果端口全乱了。后来我学乖了,每次连接前先用 adb devices 扫一遍,看看哪些设备在线。

小技巧:如果你不确定模拟器的端口,可以打开模拟器的「设置」或「关于」页面,里面通常会显示ADB调试端口。或者直接重启模拟器,有时候能解决连接不上的问题。

3.3 无线连接ADB:摆脱数据线

无线连接,说白了就是让手机和电脑连同一个WiFi,然后通过IP地址连接。我个人特别喜欢这个功能,尤其是调试的时候,不用被数据线束缚着。

操作步骤:

  1. 先用USB线连接手机和电脑
  2. 输入 adb tcpip 5555,让手机在5555端口监听
  3. 拔掉数据线
  4. 输入 adb connect 手机IP地址:5555

举个例子:

adb tcpip 5555
adb connect 192.168.1.100:5555

如果连接成功,你会看到:

connected to 192.168.1.100:5555
警告:无线连接有个坑——手机和电脑必须在同一个网段。比如都是192.168.1.x,或者都是10.0.0.x。如果一个是192.168.1.x,另一个是192.168.2.x,那就连不上。我曾经在公司里折腾了半天,最后发现是连了不同的WiFi热点。

另外,无线连接的速度比USB慢,尤其是传输大文件的时候。所以日常调试用无线没问题,但刷机或者传大文件,还是老老实实用数据线吧。

3.4 多设备管理:同时操作多个设备

当你手上有多个设备时,adb devices 会列出所有设备。比如:

List of devices attached
0123456789ABCDEF    device
emulator-5554       device
192.168.1.100:5555  device

这时候如果你直接输入 adb install app.apk,ADB会报错:

error: more than one device/emulator

解决方法很简单,用 -s 参数指定设备:

adb -s 0123456789ABCDEF install app.apk
adb -s emulator-5554 install app.apk
adb -s 192.168.1.100:5555 install app.apk

嗯,这里有个小技巧。如果你经常要在多个设备之间切换,可以给每个设备起个「别名」。比如:

export ANDROID_SERIAL=0123456789ABCDEF

这样你就不用每次都加 -s 参数了。想切换设备时,重新设置一下环境变量就行。

实战经验:我在做自动化测试时,经常要同时操作10台设备。我的做法是写一个脚本,循环遍历 adb devices 的输出,然后对每个设备执行相同的命令。这样效率高很多。

3.5 断开连接:优雅地结束

断开连接很简单,但不同场景下方法不一样。

  • USB连接:直接拔掉数据线就行。但建议先点手机上的「断开USB调试」,或者直接关闭USB调试开关。
  • 无线连接:用命令断开:adb disconnect 192.168.1.100:5555
  • 模拟器:直接关闭模拟器窗口,或者用 adb kill-server 杀掉ADB服务。

为什么要「优雅地断开」?我曾经有一次直接拔线,结果ADB服务卡死了,所有设备都连不上。最后只能 adb kill-serveradb start-server 重启服务。

建议:如果你不确定当前连接状态,可以用 adb devices 检查。如果发现设备状态异常,先断开再重新连接,往往能解决问题。

好了,设备管理这块就这些。说白了就是「连得上、管得住、断得开」。下一章咱们聊聊文件操作,怎么往手机里传东西、怎么把手机里的文件拉出来。