Android ADB 常用使用指令

##ADB调试妙用:

1. 基本用法

   1.1 adb 等待设备连接:

   #adb wait-for-device

   eg://windows运行工具指令如下:

   识别并连接设备后输出devices信息

   #adb wait-for-device

   #adb devices

   1.2 重启adb

   #adb kill-server

   #adb start-server

   1.3 修改权限

   #adb root //获取root权限

   #adb disable-verity //关闭检测功能

   #adb remount //重新挂载system分区为可读可写

   1.4 文件处理

   #adb push xxx data/ //推送文件到 data/目录下

   #adb pull data/xxx //拉取 data/目录下的xxx文件

   #adb sync //同步数据

   #adb shell sync //同步数据

   1.5 安装卸载

   #adb install xxx.apk //安装名称为xxx的APP

   #adb uninstall com.xxx.app //卸载包名为com.xxx.app的APP

   1.6 重启

   #adb reboot

   #adb reboot bootloader //重启进入bootloader模式

   #adb reboot fastboot //重启进入fastboot模式

   #adb reboot recovery //重启进入recovery模式

   1.7 屏幕信息

   #adb shell wm size //查看屏幕分辨率

   #adb shell wm density //查看屏幕密度

   #adb shell wm density 320 //修改屏幕密度=320ppi

   #adb shell wm density reset //恢复原屏幕密度

2. Adb shell 调试

   2.1 dumpsys查看系统数据

   帮助文档:

   #adb shell dumpsys -h

   命令格式:

   #adb shell dumpsys [-t timeout] [--help | -l | --skip services | service [arguments] | -c | -h]

   列出 dumpsys 支持的所有系统服务:

   #adb shell dumpsys -l

   获取当前APP窗口名/包名:

   #dumpsys window | grep mCurrentFocus //shell环境

   #adb shell dumpsys window | findstr mCurrentFocus //window下

   获取某个app package的activity栈:

   #dumpsys activity activities | grep com.android.mms | grep Hist

   #adb shell dumpsys activity activities | findStr com.android.mms | findStr Hist

   查看正在运行的应用/服务:

   #dumpsys activity | grep -i run

   #adb shell dumpsys activity | findStr -i run

   查看前台Activity:

   #adb shell dumpsys activity activities

   #adb shell dumpsys activity top

   查看某个APP包名的版本信息:

   #dumpsys package com.android.mms | grep version

   #adb shell dumpsys package com.android.mms | findStr version

   内存分析:

   #adb shell dumpsys meminfo

   #adb shell dumpsys meminfo [pid/pkg] //dump某个pid进程或者app的内存信息

   eg-> #adb shell dumpsys meminfo com.android.mms

   2.2 PM

   帮助文档:

   #adb shell pm -h

   列出所有包名:

   #adb shell pm list packages

   列出所有不可用的包名:

   #adb shell pm list packages -d

   列出所有可用的包名:

   #adb shell pm list packages -e

   列出系统所有包名:

   #adb shell pm list packages -s

   列出系统所有第三方包名:

   #adb shell pm list packages -3

   列出系统所有包名及对应的UID: (UID 是安装APK 时,系统赋予的,是不变的,除非卸载重装)

   #adb shell pm list packages -U

   查看包名和versionCode

   #adb shell pm list packages --show-versioncode

   过滤包名:

   #adb shell pm list packages -U [pkg]

   2.3 AM

   启动activity:

   #adb shell am start <package>/<activity>

   #eg: adb shell am start com.android.mms/com.android.mms.MainActivity

   触发内存级别回调

   adb shell am send-trim-memory [--user <USER_ID>] <PROCESS>

          [HIDDEN|RUNNING_MODERATE|BACKGROUND|RUNNING_LOW|MODERATE|RUNNING_CRITICAL|COMPLETE]

   #eg: adb shell am send-trim-memory com.android.mms RUNNING_LOW

   计算APP启动时间:

   #adb shell am start -W packagename/MainActivity

   总共返回了三个结果,我们以 WaitTime 为准

   Waittime = endTime - startTime

  • startTime记录的刚准备调用startActivityAndWait()的时间点
  • endTime记录的是startActivityAndWait()函数调用返回的时间点
  • WaitTime = startActivityAndWait()调用耗时。

3. Adb查看服务

   3.1 查看所有服务:

   #adb shell service list

   //dump service 数据

   #adb shell dumpsys activity services

   3.2 查看某个服务xxxx是否在运行

   #adb shell service list | grep xxxx

   #adb shell dumpsys activity services | grep xxxx

   3.2 使用pidof 指令查看app/service 运行情况,如果运行则返回pid num

   #adb shell pidof com.xxx.app

   #adb shell pidof com.xxx.service

<think>好的,我现在需要帮助用户解决使用scrcpy连接多个ADB设备时出现的错误。用户提到了“server connection failed”和需要选择serial的问题,可能还涉及usb和tcpip的连接方式。首先,我需要回忆一下scrcpy和ADB的相关知识,并结合用户提供的引用内容来分析可能的解决方法。 首先,用户提供的引用中有提到adb devices显示设备离线的情况,解决方法包括重启adb服务(adb kill-server和adb start-server)[^1]。这可能是因为ADB服务器没有正确识别设备,导致设备状态异常。此外,引用[2]提到使用adb devices命令可以列出连接的设备实例,这对于确认设备是否被正确识别很重要[^2]。引用[3]则提到如果更改了端口号,需要使用adb connect指定IP和端口[^3]。这可能涉及到TCP/IP连接设备的情况。 用户的问题是当连接多个ADB设备时,scrcpy无法选择正确的设备,导致连接失败。scrcpy在启动时如果检测到多个设备连接,需要明确指定序列号或选择其中一个设备。因此,可能的解决方法包括: 1. 使用adb devices确认当前连接的设备列表,确保所有设备都处于在线状态。如果有设备显示为offline,可能需要重新插拔USB或重启ADB服务器[^1]。 2. 如果设备是通过USB和TCP/IP同时连接的,需要检查是否有冲突,可能需要断开其他设备,或明确指定要连接的设备。 3. 使用scrcpy的命令行参数指定序列号,例如scrcpy -s 设备序列号,这样可以直接选择特定的设备。 4. 对于TCP/IP连接的设备,确保已经正确执行了adb connect命令,并且设备在线[^3]。 5. 如果多个设备导致ADB无法自动选择,可能需要设置ANDROID_SERIAL环境变量,或者在adb命令中指定-s参数。 接下来,我需要验证这些步骤是否正确,并确保用户能够按照步骤操作。例如,用户需要知道如何获取设备的序列号,可以通过adb devices -l来查看详细的设备信息。此外,如果设备是通过网络连接的,可能需要先使用adb tcpip 5555开启调试端口,然后再连接[^3]。 可能还需要考虑权限问题,比如USB调试是否已授权,或者防火墙是否阻止了TCP/IP连接。用户可能需要检查设备上的授权对话框,或者暂时禁用防火墙测试。 总结可能的解决步骤: - 检查设备连接状态,确保所有设备在线。 - 重启ADB服务以解决潜在的服务器问题。 - 使用scrcpy的-s参数指定设备序列号。 - 确保TCP/IP设备正确连接,端口设置正确。 - 必要时断开其他设备,保持单一连接。 最后,生成相关问题,帮助用户深入理解ADB设备管理和scrcpy的使用技巧。</think>要解决`scrcpy`连接多个ADB设备时的`server connection failed`错误,需明确指定设备序列号并确保设备在线。以下是分步解决方案: --- ### **步骤 1:确认已连接的ADB设备列表** 输入命令: ```bash adb devices ``` 输出示例: ``` List of devices attached ABCD1234 device 192.168.1.5:5555 device ``` - 若设备状态为`offline`,需重启ADB服务: ```bash adb kill-server && adb start-server ``` - 若设备未授权,需在手机上允许USB调试--- ### **步骤 2:通过序列号指定目标设备** `scrcpy`需通过`-s`参数指定设备序列号: ```bash scrcpy -s ABCD1234 # 替换为adb devices中显示的序列号 ``` - 序列号可从`adb devices -l`获取更详细信息(如厂商、型号)。 --- ### **步骤 3:处理TCP/IP连接的设备** 若设备通过Wi-Fi连接: 1. 确保设备已开启TCP/IP调试: ```bash adb tcpip 5555 # 默认端口为5555[^3] ``` 2. 连接设备IP: ```bash adb connect 192.168.1.5:5555 # 替换为实际IP和端口 ``` 3. 连接成功后,使用`scrcpy -s 192.168.1.5:5555`启动。 --- ### **步骤 4:强制单设备连接** 若需临时仅连接一个设备: 1. 断开其他设备(如拔掉USB线)。 2. 重启ADB服务: ```bash adb kill-server && adb start-server ``` --- ### **常见错误排查** - **权限问题**:确保手机已授权电脑的USB调试请求。 - **端口冲突**:若修改过ADB端口,需在`adb connect`中显式指定端口号。 - **防火墙限制**:关闭防火墙或允许ADB通信端口(如5555)。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

村里小码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值