ADB 用法大全

目录

一、ADB命令简介

二、常用命令

1、命令语法

2、指定目标设备

3、正在运行的包名/Activity/进程

4、查看当前连接设备

5、安装/卸载apk文件

6、启动/停止

7.查看应用安装路径

8.屏幕截图

9.录制屏幕

10.设备里的文件复制到电脑

11.电脑里的文件复制到设备

12.adb 操作TV端

 13、IP 地址

14、Mac 地址

15、获取设备名称:

16、取设备model号。添加硬编黑名单时会用到

17、设备连接管理

1、 查询已连接设备/模拟器

2、USB 连接

3、无线连接(需要借助 USB 线)

4、无线连接(无需借助 USB 线)

18、读取apk的版本号

19、花椒杀死app后启动pushserver服务

20、查看版本等

21、崩溃获取log


一、ADB命令简介

ADB,即 Android Debug Bridge,它是 Android 开发/测试人员不可替代的强大工具,也是 Android 设备玩家的好玩具。安卓调试桥 (Android Debug Bridge, adb),是一种可以用来操作手机设备或模拟器的命令行工具。它存在于 sdk/platform-tools 目录下。虽然现在 Android Studio 已经将大部分 ADB 命令以图形化的形式实现了,但是了解一下还是有必要的。

二、常用命令

1、命令语法

adb 命令的基本语法如下:

adb [-d|-e|-s <serialNumber>] <command>

如果只有一个设备/模拟器连接时,可以省略掉 [-d|-e|-s <serialNumber>] 这一部分,直接使用 adb <command>

2、指定目标设备

如果有多个设备/模拟器连接,则需要为命令指定目标设备。

参数含义
-d指定当前唯一通过 USB 连接的 Android 设备为命令目标
-e指定当前唯一运行的模拟器为命令目标
-s <serialNumber>指定相应 serialNumber 号的设备/模拟器为命令目标

在多个设备/模拟器连接的情况下较常用的是 -s <serialNumber> 参数,serialNumber 可以通过 adb devices 命令获取。如:

$ adb devices

List of devices attached
cf264b8f	device
emulator-5554	device
10.129.164.6:5555	device

输出里的 cf264b8femulator-5554 和 10.129.164.6:5555 即为 serialNumber。

比如这时想指定 cf264b8f 这个设备来运行 adb 命令获取屏幕分辨率:

adb -s cf264b8f shell wm size

又如想给 10.129.164.6:5555 这个设备安装应用(这种形式的 serialNumber 格式为 <IP>:<Port>,一般为无线连接的设备或 Genymotion 等第三方 Android 模拟器):

adb -s 10.129.164.6:5555 install test.apk

遇到多设备/模拟器的情况均使用这几个参数为命令指定目标设备,下文中为简化描述,不再重复。

3、正在运行的包名/Activity/进程

adb shell dumpsys window | findstr mCurrentFocus   取手机当前正在显示的activity名称
adb shell ps |findstr "com.huajiao"   查看当前手机上是否有花椒进程在运行

4、查看当前连接设备

adb devices

5、安装/卸载apk文件

安装:adb install xxx.apk
覆盖安装:adb install -r xxx.apk
比分直接RUN出来的包是test-onlu的无法安装,推荐使用**-t**:adb install -r -t xxx.apk
adb uninstall com.qihoo360.mobilesafe

6、启动/停止

启动 adb server 命令:adb start-server
停止 adb server 命令adb kill-server 有时adb有问题连接不到手机时需要杀进程重启。

7.查看应用安装路径

命令:

adb shell pm path <PACKAGE>
输出应用安装路径

输出示例:

adb shell pm path ecarx.weather

package:/data/app/ecarx.weather-1.apk

8.屏幕截图

截图保存到电脑:

adb exec-out screencap -p > sc.png
如果 adb 版本较老,无法使用 exec-out 命令,这时候建议更新 adb 版本。无法更新的话可以使用以下麻烦点的办法:

先截图保存到设备里:

adb shell screencap -p /sdcard/sc.png
然后将 png 文件导出到电脑:

adb pull /sdcard/sc.png
可以使用 adb shell screencap -h 查看 screencap 命令的帮助信息,下面是两个有意义的参数及含义:

参数	含义
-p	指定保存文件为 png 格式
-d display-id	指定截图的显示屏编号(有多显示屏的情况下)
实测如果指定文件名以 .png 结尾时可以省略 -p 参数;否则需要使用 -p 参数。如果不指定文件名,截图文件的内容将直接输出到 stdout。

另外一种一行命令截图并保存到电脑的方法:

Linux 和 Windows

adb shell screencap -p | sed "s/\r$//" > sc.png
Mac OS X

adb shell screencap -p | gsed "s/\r$//" > sc.png
这个方法需要用到 gnu sed 命令,在 Linux 下直接就有,在 Windows 下 Git 安装目录的 bin 文件夹下也有。如果确实找不到该命令,可以下载 sed for Windows 并将 sed.exe 所在文件夹添加到 PATH 环境变量里。

而在 Mac 下使用系统自带的 sed 命令会报错:

sed: RE error: illegal byte sequence
需要安装 gnu-sed,然后使用 gsed 命令:

brew install gnu-sed

9.录制屏幕

录制屏幕以 mp4 格式保存到 /sdcard:

adb shell screenrecord /sdcard/filename.mp4
需要停止时按 Ctrl-C,默认录制时间和最长录制时间都是 180 秒。

如果需要导出到电脑:

adb pull /sdcard/filename.mp4
可以使用 adb shell screenrecord --help 查看 screenrecord 命令的帮助信息,下面是常见参数及含义:

参数	含义
--size WIDTHxHEIGHT	视频的尺寸,比如 1280x720,默认是屏幕分辨率。一般不用
--bit-rate RATE	视频的比特率,默认是 4Mbps。
--time-limit TIME	录制时长,单位秒。经常使用
--verbose	输出更多信息

10.设备里的文件复制到电脑

命令:adb pull <设备里的文件路径> [电脑上的目录]
其中 电脑上的目录 参数可以省略,默认复制到当前目录。

例:adb pull /sdcard/sr.mp4 ~/tmp/

11.电脑里的文件复制到设备

命令:adb push <电脑上的文件路径> <设备里的目录>
例:adb push ~/sr.mp4 /sdcard/

12.adb 操作TV端

1.电脑和TV(电视、盒子)处于同一个局域网中
2.adb connect ip :如:adb connect 201.238.10.200
3.adb devices(确认是否连接成功)
4.进行安装等操作

 13、IP 地址

每次想知道设备的 IP 地址的时候都得「设置」-「关于手机」-「状态信息」-「IP地址」很烦对不对?通过 adb 可以方便地查看。

命令:

adb shell ifconfig | grep Mask

输出示例:

inet addr:10.130.245.230  Mask:255.255.255.252
inet addr:127.0.0.1  Mask:255.0.0.0

那么 10.130.245.230 就是设备 IP 地址。

在有的设备上这个命令没有输出,如果设备连着 WiFi,可以使用如下命令来查看局域网 IP:

adb shell ifconfig wlan0

输出示例:

wlan0: ip 10.129.160.99 mask 255.255.240.0 flags [up broadcast running multicast]

wlan0     Link encap:UNSPEC
          inet addr:10.129.168.57  Bcast:10.129.175.255  Mask:255.255.240.0
          inet6 addr: fe80::66cc:2eff:fe68:b6b6/64 Scope: Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:496520 errors:0 dropped:0 overruns:0 frame:0
          TX packets:68215 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3000
          RX bytes:116266821 TX bytes:8311736

如果以上命令仍然不能得到期望的信息,那可以试试以下命令(部分系统版本里可用):

adb shell netcfg

输出示例:

wlan0    UP                               10.129.160.99/20  0x00001043 f8:a9:d0:17:42:4d
lo       UP                                   127.0.0.1/8   0x00000049 00:00:00:00:00:00
p2p0     UP                                     0.0.0.0/0   0x00001003 fa:a9:d0:17:42:4d
sit0     DOWN                                   0.0.0.0/0   0x00000080 00:00:00:00:00:00
rmnet0   DOWN                                   0.0.0.0/0   0x00000000 00:00:00:00:00:00
rmnet1   DOWN                                   0.0.0.0/0   0x00000000 00:00:00:00:00:00
rmnet3   DOWN                                   0.0.0.0/0   0x00000000 00:00:00:00:00:00
rmnet2   DOWN                                   0.0.0.0/0   0x00000000 00:00:00:00:00:00
rmnet4   DOWN                                   0.0.0.0/0   0x00000000 00:00:00:00:00:00
rmnet6   DOWN                                   0.0.0.0/0   0x00000000 00:00:00:00:00:00
rmnet5   DOWN                                   0.0.0.0/0   0x00000000 00:00:00:00:00:00
rmnet7   DOWN                                   0.0.0.0/0   0x00000000 00:00:00:00:00:00
rev_rmnet3 DOWN                                   0.0.0.0/0   0x00001002 4e:b7:e4:2e:17:58
rev_rmnet2 DOWN                                   0.0.0.0/0   0x00001002 4e:f0:c8:bf:7a:cf
rev_rmnet4 DOWN                                   0.0.0.0/0   0x00001002 a6:c0:3b:6b:c4:1f
rev_rmnet6 DOWN                                   0.0.0.0/0   0x00001002 66:bb:5d:64:2e:e9
rev_rmnet5 DOWN                                   0.0.0.0/0   0x00001002 0e:1b:eb:b9:23:a0
rev_rmnet7 DOWN                                   0.0.0.0/0   0x00001002 7a:d9:f6:81:40:5a
rev_rmnet8 DOWN                                   0.0.0.0/0   0x00001002 4e:e2:a9:bb:d0:1b
rev_rmnet0 DOWN                                   0.0.0.0/0   0x00001002 fe:65:d0:ca:82:a9
rev_rmnet1 DOWN                                   0.0.0.0/0   0x00001002 da:d8:e8:4f:2e:fe

可以看到网络连接名称、启用状态、IP 地址和 Mac 地址等信息。

14、Mac 地址

命令:

adb shell cat /sys/class/net/wlan0/address

输出示例:

f8:a9:d0:17:42:4d

15、获取设备名称:

adb shell cat /system/build.prop

16、取设备model号。添加硬编黑名单时会用到

adb shell getprop | findstr ro.product.model

17、设备连接管理

1、 查询已连接设备/模拟器

命令:

adb devices
输出示例:

List of devices attached
cf264b8f	device
emulator-5554	device
10.129.164.6:5555	device
输出格式为 [serialNumber] [state],serialNumber 即我们常说的 SN,state 有如下几种:

offline —— 表示设备未连接成功或无响应。

device —— 设备已连接。注意这个状态并不能标识 Android 系统已经完全启动和可操作,在设备启动过程中设备实例就可连接到 adb,但启动完毕后系统才处于可操作状态。

no device —— 没有设备/模拟器连接。

以上输出显示当前已经连接了三台设备/模拟器,cf264b8f、emulator-5554 和 10.129.164.6:5555 分别是它们的 SN。从 emulator-5554 这个名字可以看出它是一个 Android 模拟器,而 10.129.164.6:5555 这种形为 <IP>:<Port> 的 serialNumber 一般是无线连接的设备或 Genymotion 等第三方 Android 模拟器。
常见异常输出:

1.没有设备/模拟器连接成功。
List of devices attached

2.设备/模拟器未连接到 adb 或无响应。
List of devices attached
cf264b8f	offline

2、USB 连接

通过 USB 连接来正常使用 adb 需要保证几点:

硬件状态正常。

包括 Android 设备处于正常开机状态,USB 连接线和各种接口完好。

Android 设备的开发者选项和 USB 调试模式已开启。

可以到「设置」-「开发者选项」-「Android 调试」查看。

如果在设置里找不到开发者选项,那需要通过一个彩蛋来让它显示出来:在「设置」-「关于手机」连续点击「版本号」7 次。

设备驱动状态正常。

这一点貌似在 Linux 和 Mac OS X 下不用操心,在 Windows 下有可能遇到需要安装驱动的情况,确认这一点可以右键「计算机」-「属性」,到「设备管理器」里查看相关设备上是否有黄色感叹号或问号,如果没有就说明驱动状态已经好了。否则可以下载一个手机助手类程序来安装驱动先。

通过 USB 线连接好电脑和设备后确认状态。

adb devices
如果能看到

xxxxxx device
说明连接成功。

3、无线连接(需要借助 USB 线)

除了可以通过 USB 连接设备与电脑来使用 adb,也可以通过无线连接——虽然连接过程中也有需要使用 USB 的步骤,但是连接成功之后你的设备就可以在一定范围内摆脱 USB 连接线的限制啦!

操作步骤:

将 Android 设备与要运行 adb 的电脑连接到同一个局域网,比如连到同一个 WiFi。

将设备与电脑通过 USB 线连接。

应确保连接成功(可运行 adb devices 看是否能列出该设备)。

让设备在 5555 端口监听 TCP/IP 连接:

adb tcpip 5555
断开 USB 连接。

找到设备的 IP 地址。

一般能在「设置」-「关于手机」-「状态信息」-「IP地址」找到,也可以使用下文里 查看设备信息 - IP 地址 一节里的方法用 adb 命令来查看。

通过 IP 地址连接设备。

adb connect <device-ip-address>
这里的 <device-ip-address> 就是上一步中找到的设备 IP 地址。

确认连接状态。

adb devices
如果能看到

<device-ip-address>:5555 device
说明连接成功。

如果连接不了,请确认 Android 设备与电脑是连接到了同一个 WiFi,然后再次执行 adb connect <device-ip-address> 那一步;

如果还是不行的话,通过 adb kill-server 重新启动 adb 然后从头再来一次试试。

断开无线连接

命令:

adb disconnect <device-ip-address>

4、无线连接(无需借助 USB 线)

注:需要 root 权限。

上一节「无线连接(需要借助 USB 线)」是官方文档里介绍的方法,需要借助于 USB 数据线来实现无线连接。

既然我们想要实现无线连接,那能不能所有步骤下来都是无线的呢?答案是能的。

在 Android 设备上安装一个终端模拟器。

已经安装过的设备可以跳过此步。我使用的终端模拟器下载地址是:Terminal Emulator for Android Downloads

将 Android 设备与要运行 adb 的电脑连接到同一个局域网,比如连到同一个 WiFi。

打开 Android 设备上的终端模拟器,在里面依次运行命令:

su
setprop service.adb.tcp.port 5555
找到 Android 设备的 IP 地址。

一般能在「设置」-「关于手机」-「状态信息」-「IP地址」找到,也可以使用下文里 查看设备信息 - IP 地址 一节里的方法用 adb 命令来查看。

在电脑上通过 adb 和 IP 地址连接 Android 设备。

adb connect <device-ip-address>
这里的 <device-ip-address> 就是上一步中找到的设备 IP 地址。

如果能看到 connected to <device-ip-address>:5555 这样的输出则表示连接成功。

节注一:

有的设备,比如小米 5S + MIUI 8.0 + Android 6.0.1 MXB48T,可能在第 5 步之前需要重启 adbd 服务,在设备的终端模拟器上运行:

restart adbd
如果 restart 无效,尝试以下命令:

stop adbd
start adbd

18、读取apk的版本号

aapt dump xmltree  e:\desktop\test.apk AndroidManifest.xml | findstr  versionCode   读取apk的版本号。versionCode是16进制的,需要转换一下。命令中的versionCode可以替换为versionName,读取版本字符串。aapt.exe需要单独配置环境变量。

19、花椒杀死app后启动pushserver服务

adb shell am force-stop com.huajiao

adb shell am startservice -n com.huajiao/.push.service.BusinessHJReceive

20、查看版本等

aapt dump badging apk_file_name.apk

21、崩溃获取log

方法一:使用adb logcat -v time获取logcat日志。交给开发。(一般用于生成实时日志)

方法二:可尝试获取bugreport(部分手机不支持),获取方式:adb bugreport > report.txt。将输出的txt中会记录生成zip的路径。将zip交给开发。也可以直接用adb bugreport,会在执行目录下生成zip,注意查看命令行输出的文件名对应查找(可以抓取事后日志,具体可以看看https://blog.csdn.net/createchance/article/details/51954142)

 

 

参考:https://www.wanandroid.com/blog/show/2310

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本帖最后由 591691826 于 2013-4-10 13:32 编辑 0.我只说些常用的以及目前用的到的 1.下载附件。解压后拷到c:windows\system32里面。 2.打开运行(快捷键windows键+R)输入cmd 回车。 3.输入adb devices 可以获取当前连接的设备。 4.输入adb shell 回车 接着输入su。这时候$变成#。说明你已经取得权限了,可以进行各项调试命令了。 5.如果要从电脑上传送文件到手机的话,使用adb push命令。格式:adb push 本地路径 手机路径 ;举例:把c盘根目录下的456.txt传送到system。则:adb push c:\456.txt /system/ 传送文件到system文件夹的话。需要先挂载system分区。再改读写权限。 如下:mount -o rw,remount -t yaffs2 /dev/block/mtdblock1 /system回车 (这是挂载分区) chmod 777 /system回车 (修改权限为可读) 这两步做完后退出shell指令端(exit回车 exit回车)就可以push文件到system里面去了。 如果push文件到sdcard卡的话。一般来说直接push就行。如果出现premission denied 的话,需要修改sdcard权限为可读写。即chmod 777 sdcard。 6。adb pull 是从手机传送文件到电脑上。格式: adb pull 手机路径 电脑路径 。会push的话pull很简单。大同小异嘛。 7.关于这个地方的权限,具体说下: 在Unix和Linux的各种操作系统下,每个文件(文件夹也被看作是文件)都按读、写、运行设定权限。例如我用ls -l命令列文件表时,得到如下输出: -rw-r--r-- 1 bu users 2254 2006-05-20 13:47 tt.htm 从第二个字符起rw-是说用户bu有读、写权,没有运行权,接着的r--表示用户组users只有读权限,没有运行权,最后的r--指其他人(others)只有读权限,没有写权和运行权。这是系统默认设置,我可以改写tt.htm,同组的人和其他人只有权读,没人有权运行,因为只是一个html文件,不必运行。这在Novell的directory services之前很先进。 读、写、运行三项权限可以用数字表示,就是r=4,w=2,x=1。所以,rw-r--r--用数字表示成644。 反过来说777就是rwxrwxrwx,意思是该登录用户(可以用命令id查看)、他所在的组和其他人都有最高权限。 再多说一句。我用chmod o-r tt.htm命令改权限,o-r是others的权限中减掉读。结果是 -rw-r----- 1 bu users 2254 2006-05-20 13:47 tt.htm 如果用命令chmod 777 tt.htm,结果是 -rwxrwxrwx 1 bu users 2254 2006-05-20 13:47 tt.htm 任何人都有读、写、运行三项权限。8。以后比如替换系统文件神马的不能开机。可以通过救援模式下adb命令替换系统文件并该权限即可。 .想写的就是这么多了。仅把我的心得告诉大家。内容编辑可能有些混乱。不好意思。
ADB(Android Debug Bridge)是 Android 开发工具包中的一组命令行工具,用于与连接的 Android 设备进行通信。以下是 ADB 命令的详细介绍和用法大全。 1. adb devices 作用:列出所有已连接的 Android 设备 用法adb devices 2. adb install 作用:安装应用程序 用法adb install [path_to_apk] 3. adb uninstall 作用:卸载应用程序 用法adb uninstall [package_name] 4. adb push 作用:将文件从计算机推送到 Android 设备 用法adb push [source_path] [destination_path] 5. adb pull 作用:将文件从 Android 设备拉取到计算机 用法adb pull [source_path] [destination_path] 6. adb shell 作用:进入 Android 设备的 shell 环境 用法adb shell 7. adb logcat 作用:查看 Android 设备的日志信息 用法adb logcat 8. adb reboot 作用:重启 Android 设备 用法adb reboot 9. adb reboot bootloader 作用:重启 Android 设备并进入 bootloader 模式 用法adb reboot bootloader 10. adb remount 作用:重新挂载 Android 设备的系统分区为可读写状态 用法adb remount 11. adb forward 作用:将 Android 设备的端口转发到计算机上 用法adb forward [local] [remote] 12. adb tcpip 作用:将 Android 设备切换到 TCP/IP 模式 用法adb tcpip [port] 13. adb sideload 作用:通过 sideload 方式安装应用程序 用法adb sideload [path_to_zip] 14. adb backup 作用:备份 Android 设备的数据 用法adb backup [options] [package_name] 15. adb restore 作用:恢复 Android 设备的备份数据 用法adb restore [path_to_backup] 这些是 ADB 命令的一些常用用法,更多的 ADB 命令可以通过 adb --help 命令查看到。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值