adb 命令(adb常用的20个命令)

admin 421 0

大家好,如果您还对adb 命令不太了解,没有关系,今天就由本站为大家分享adb 命令的知识,包括adb常用的20个命令的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

一、常用的adb命令

在平时的工作中,会经常用到adb命令,在这里稍微整理了一下。

adb全称为Android Debug Bridge,就是起到调试桥的作用。顾名思义,adb就是一个debug工具。

不是很理解?那就来看看它的工作原理吧。

上图是一个简单的adb工作原理图。adb客户端服务器端程序,由上图可以看出它主要三个组件组成:Client,Server,Daemon。

(1)当你启动一个adb Client(客户端),Client首先会选确认是否已有一个adb

Server(服务器)进程在运行,如果没有,则会启动Server进程。此时,adb Server就会绑定本地的TCP端口5037,并监听adb

(2)接着,Server将会扫描所有5555到5585范围内的奇数端口来定位所有的模拟器或设备,并与之建立连接。一旦Server找到

daemon(守护程序),它将建立一个到该端口的连接,这样,我们就可以使用adb命令控制和访问模拟器或设备了。在这里,需注意的是任何模拟器或设备实例会取得两个连续的端口:一个偶数端口用来相应控制台的连接,和一个奇数端口用来响应adb连接。

借助adb工具,我们可以管理设备或手机模拟器的状态,还可以进行很多手机操作,如安装软件、系统升级、运行shell命令等等。简而言之,adb就是连接Android手机和PC端的桥梁,可以让用户在电脑上对手机进行全面的操作。

这个部分主要介绍adb的使用方法和一些常用的命令。

设置adb环境:将android sdk工作目录添加到系统环境变量中,则可使用adb命令了。

查看当前连接的设备(连接计算机的Android设备或者模拟器)。

adb install<apk文件路径>,将指定的apk安装到设备上,安装的apk包会放在/data/app目录下。

-d(真机,多个设备中只有一个真机时适用)

-e(模拟器,多个设备中只有一个模拟器时适用)

adb–s 44a188f9 install–r test.apk(其中44a188f9即序列号,通过adb devices可获取)

adb uninstall–k<apk包名>

-k参数为卸载软件时保留配置和缓存文件

通过adb shell命令,就可以进入设备或者模拟器的shell环境了,在这个Linux shell中,我们就可以执行各种Linux命令了。

如果只想执行一条shell命令,就可以采用:adb shell [shell_command]

在实际使用中,经常与grep或findstr一起使用,起到过滤作用,查看自己需要的关键信息。

前提手机已经root。获取adb shell的root权限。

使用su提权,用户命令提示符有$变成#,如果手机没有root,会提示su:permission denied。

查看当前终端中的进程信息,如pid等。

am全称为activity manager,可使用am命令模拟各种系统的行为,如去启动一个activity,强制停止进程,发送广播进程,修改设备屏幕属性等。

如:adb shell am start<apk包名>/<activityName>:启动一个activity。

pm全称为package manager,利用pm命令可模拟android行为或查询设备上的应用等。

如:adb shell pm list packages

列出当前设备所有已安装的程序的包名。

管道符“|”:可以把标准的输入流与标准的输出流进行合并,或者把某个命令的标准输出流作为另一个命令的标准输入流。

由于grep为linux命令,运行单条adb shell时并没有进入linux

shell环境,并不能用grep等其他linux命令,只能用window cmd的命令。在这里可以用findstr来代替grep,使用方法为

更详细的内容可查看参考文献3和参考文献4。

对于常用的linux命令和常用的windows控制台命令,以后再作总结。

adb pull<设备中的文件路径><本地路径>:从模拟器或设备中复制文件到本地。

adb push<本地文件路径><设备中的路径>:将本地文件或目录复制到模拟器或设备。

这里还涉及到一个权限的问题,在后续的博文中再作介绍。

Android提供的dumpsys工具用于查看感兴趣的系统服务信息与状态。

跑monkey是android自动化测试的一种手段,所谓monkey测试就是模拟用户的按键输入,触摸屏输入,手势输入等。当Monkey程序在模拟器或设备运行的时候,如果用户比如点击,触摸,手势或一些系统级别的事件的时候,它就会产生随机脉冲,所以可以用Monkey的随机重复的方法对apk作压力测试,来测试android

如下为测试腾讯新闻apk的一个简单实例:

说明:第一个-s指定设备,如果只连接了一台设备,可不用该参数。

-p<apk包名>只允许系统启动指定的app,如果不指定,将允许系统启动设备中的所有app,也可指定多个包。

--throttle<毫秒数>指定用户操作(事件)间的时延。

--ignore-crashes指定当应用程序崩溃时,Monkey依然发送事件,直到事件计数完成。

--ignore-timeouts当应用程序发生ANR错误时,Monkey依然会发送事件,直到事件计数完成。

第2个-s,用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。

-v用于指定反馈信息级别,总共分为level 0、level 1、level 2三个级别,级别越高,输出的日志越详细。

最后的数字(这里是500):表示Monkey程序模拟500次随机用户操作事件。

>输出测试结果到D:\monkeylog.txt

对于测试结果的分析,通过搜索关键词来定位错误,主要包括以下四个方面:

Response):程序无响应,一般主线程超过5秒没处理就会出现ANR错误。通过搜索ANR关键词来定位关键的事件信息。除了导出日志外,还可以将/data/anr/目录下的trace.txt文件导出,用来定位分析问题。使用>adb

pull/data/anr/trace.txt d:\将trace.txt文件导出到d盘。

2)ForceClosed或其他异常退出信息:通过搜索Fatal关键词来定位。

3)崩溃问题:通过搜索Exception关键词来定位。

4)发生异常后,通过搜索Crash关键词来定位到详细的堆栈信息。

比如我们在跑monkey的时候,怎么强制关闭monkey呢,可以用kill<monkey进程PID>

说明:另开启一个cmd,找到monkey的pid号,然后杀掉即可。

1.Android调试桥: http://www.iteye.com/topic/260042

2.Android性能分析工具dumpsys的使用: http://www.open-open.com/lib/view/open1405061994872.html

3.adb shell中的am pm命令: http://www.android100.org/html/201312/09/4957.html

4.adb shell启动应用程序的方法: http://blog.chinaunix.net/uid-26997997-id-3350449.html

5.Monkey压力测试详解: http://blog.csdn.net/huangbiao86/article/details/8490743

二、ADB常用命令

1、Android调试桥(adb) ,可与设备进行通信。adb命令可用于执行各种设备操作(例如安装和调试应用),并提供对 Unix shell(可用来在设备上运行各种命令)的访问权限。它是一种客户端-服务器程序,包括以下三个组件:

2、客户端:用于发送命令。客户端在开发机器上运行。可以通过发出 adb命令从命令行终端调用客户端。(可以通过它对Android应用进行安装、卸载、调试)

3、 PC上的手机助手基本都是通过adb命令去完成的。有时候装了这类手机助手的话,它自带的adb程序可能会与Android SDK下的adb程序产生冲突,5037端口被占用,导致adb命令无法连接到设备。Windows下通过netstat-ano|findstr"5037"

4、守护程序(adbd):用于在设备上运行命令。守护程序在每个设备上作为后台进程运行

5、执行adb shell ps| grep adbd,可以找到该后台进程,Windows使用findstr替代grep.

6、服务器(Service):用于管理客户端与守护程序之间的通信。服务器在开发机器上作为后台进程运行

7、 adb服务启动后,Windows可以在任务管理中找到adb.exe; linux ps-ef| gref adb可以查看service

8、一般都是通过这样子的格式 adb [-d|-e|-s<设备序列号>]<子命令>

9、通常只有一台设备就忽略 [-d|-e|-s ]这一部分

10、注意:设备的状态有 3钟,device , offline , unknown

11、 offline:连接出现异常,设备无响应

12、注意:通常两个命令一起用,有时候我们开启server会失败,这是因为我们装了的手机助手,豌豆荚或者其他软件自带有自己的adb,导致端口冲突开启失败。一般在连接出现异常,使用 adb devices未正常列出设备,设备状态异常时使用 kill-server,然后运行 start-server进行重启服务。

13、 打印 dumpsys、dumpstate、logcat的输出,也是用于分析错误输出比较多

14、 安装应用,覆盖安装是使用-r选项

15、注意:有些adb版本无法支持安装中文的apk

16、查看应用对应的apk文件在手机上的安装位置则可以在上面的命令后加-f参数

17、卸载应用,后面跟的参数是应用的包名,请区别于 apk文件名

18、'-k' means keep the data and cache directories,-k选项,卸载时保存数据和缓存目录

19、 将 Android设备上的文件或者文件夹复制到本地

20、 adb pull/sdcard/test.txt C:\Users\Administrator\Desktop\log

21、该命令将会阻塞一直到默认连接的那部机器状态变为device,也就是连接成功。

22、其实adb shell命令就是调用的是Android设备中的system/bin目录下的命令。

23、 Android的内核本身就是Linux,所以Android本身也支持Linux命令,但是因为是手机系统,所以进行了一定的删减,部分命令不支持,而不支持的部分,我们可以通过安装busybox这个软件进行。

24、 每次都加上adb shell来进行命令的发送与执行

25、 先通过adb shell进入手机Shell执行状态,然后直接输入Linux命令。

26、使一个apk处于禁用状态,相当于卸载了:

27、其中 PACKAGE_OR_COMPONENT的格式是 package/class,如 com.UCMobile/.main.UCMobile

28、 eg:adb shell su disable com.UCMobile/.main.UCMobile

29、同时我们在手机上发现,UC浏览器的图标不见了

30、其中 PACKAGE_OR_COMPONENT的格式是 package/class,如 com.UCMobile/.main.UCMobileeg:

31、 adb shell su enable com.UCMobile/.main.UCMobile

32、同时我们从手机上发现,UC浏览器的图标又出现了。

33、 adb shell pm path com.UCMobile

34、屏幕开始录像并且储存到/sdcard中,同时名字为demo.mp4

35、录屏设置时长10s,命名为demo.mp4

36、注意:现在仅支持一部分手机录屏,不支持的手机会出现以下提示

37、安装了scrcpy之后,只需要输入如下命令,即可录取指定设备的屏幕

38、 scrcpy-s device--render-expired-frames-Nr./demo.pm4

39、--render-expired-frames:尽可能最大帧率

40、 pm(package manager)可以获取一些安装到Android设备上的app的信息

41、 pm list packages用法:list packages [ options] filter

42、 pm dump 包名 很多dump信息

43、 apk如果在电脑用 adb install 

44、如果在Android设备上用 adb shell pm install

45、卸载应用,同adb uninstall,后跟包名

46、 am(activity manager,字面意思就跟activity有关,大家都知道Android的界面都是由一个个activity显示的)

47、获取到package和launch_activity

48、 AndroidSDK中aapt工具,检索命令结果,可以获取到package和launch_activity

49、这里涉及到一个点,如何找到程序的入口,首先你要知道是哪个activity才能启动;

50、启动网页(android.intent.action.VIEW具体参考Android官网)

51、模拟输入,向获得焦点的EditText控件输入内容

52、发送一个点击操作的指令,参数是<x><y>坐标

53、从左往右滑动屏幕, /从 100 100 经历300毫秒滑动到 200 200

54、长按操作,在 100 100 位置长按 1000毫秒

三、adb命令详解

4.adb shell进入手机shell目录下

7.adb start-server启动adb服务

8.adb connect[:]通过TCP/IP连接到设备,端口号默认为5555可省略,例如:adb connect 192.168.3.150

9.adb push...从本地复制文件到设备中

10.adb pull...从设备复制文件到本地

14.adb shell top-m 10-d 30-n 10显示cpu,内存数据,-m表示显示的最大数,-d表示监控的间隔时间,-n表示抓取次数

16.adb shell ps|grep logcat查看logcat进程

17.adb shell kill [pid]杀死进程

18.adb shell dumpsys window w|findstr\/|findstr name=查看当前activity名,应用包名

19.adb shell screencap-p/mnt/sdcard/screen.png截图命令

20.adb shell screenrecord/mnt/sdcard/haha.mp4录屏命令

21.adb shell am start-n package/launch_activity启动activity

22.adb shell pm path [PackageName ]  查看应用包所在位置

四、什么是adb命令行

adb命令行是androidsdk里的一个工具,用这个工具可以直接操作管理android模拟器或者真实的android设备(如G1手机),它的主要功能有:

3、计算机和设备之间上传/下载文件

4、将本地apk软件安装至模拟器或android设备

ADB是一个客户端-服务器端程序,其中客户端是你用来操作的电脑,服务器端是android设备。

这个命令是查看当前连接的设备,连接到计算机的android设备或者模拟器将会列出显示

*adbinstall<apk文件路径>

这个命令将指定的apk文件安装到设备上

如果加-k参数,为卸载软件但是保留配置和缓存文件。

后面加<command命令>将是直接运行设备命令,相当于执行远程命令。

*adbpush<本地路径><远程路径>

用push命令可以把本机电脑上的文件或者文件夹复制到设备(手机)。

参考资料来源:百度百科—ADB(Android调试桥)

好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!