您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > Android 常用 adb 命令总结
Android常用adb命令总结Android常用adb命令总结针对移动端Android的测试,adb命令是很重要的一个点,必须将常用的adb命令熟记于心,将会为Android测试带来很大的方便,其中很多命令将会用于自动化测试的脚本当中。AndroidDebugBridgeadb其实就是AndroidDebugBridge,Android调试桥的缩写,adb是一个C/S架构的命令行工具,主要由3部分组成:??运行在PC端的Client:可以通过它对Android应用进行安装、卸载及调试Eclipse中的ADT、SDKTools目录下的DDMS、Monitor等工具,都是同样地用到了adb的功能来与Android设备进行交互。??PC端的手机助手,诸如360手机助手、豌豆荚、应用宝等,其除了安装第三方应用方便,其他的功能,基本上都可以通过adb命令去完成,这里建议测试人员尽量不要在电脑上安装这类手机助手,因为其自带的adb程序可能会与AndroidSDK下的adb程序产生冲突,5037端口被占用,导致使用adb命令时无法连接到设备??运行在PC端的Service:其管理客户端到Android设备上adb后台进程的连接adb服务启动后,Windows可以在任务管理器中找到adb.exe这个进程??运行在Android设备上的adb后台进程执行adbshellps|grepadbd,可以找到该后台进程,windows请使用findstr替代grep[xuxu:~]$adbshellps|grepadbdroot2322716672832ffffffff00019bb4S/sbin/adbd?这里注意一个地方,就是adb使用的端口号,5037,有必要记一下??接下来我将adb命令分为三部分进行介绍,adb命令、adbshell命令、linux命令adb命令在开发或者测试的过程中,我们可以通过adb来管理多台设备,其一般的格式为:adb[-e|-d|-s在配好环境变量的前提下,在命令窗口当中输入adbhelp或者直接输入adb,将会列出所有的选项说明及子命令。这里介绍一些里面常用的命令:??adbdevices,获取设备列表及设备状态[xuxu:~]$adbdevicesListofdevicesattached44c826a0device??adbget-state,获取设备的状态[xuxu:~]$adbget-statedevice设备的状态有3钟,device,offline,unknown??device:设备正常连接??offline:连接出现异常,设备无响应??unknown:没有连接设备??adbkill-server,adbstart-server,结束adb服务,启动adb服务,通常两个命令一起用一般在连接出现异常,使用adbdevices未正常列出设备,设备状态异常时使用kill-server,然后运行start-server进行重启服务??adblogcat,打印Android的系统日志,这个可以单独拿出来讲??adbbugreport,打印dumpsys、dumpstate、logcat的输出,也是用于分析错误输出比较多,建议重定向到一个文件中adbbugreportd:\bugreport.log??adbinstall,安装应用,覆盖安装是使用-r选项windows下如果需要安装含有中文名的apk,需要对adb进行修改,百度可以找到做出修改的adb,支持中文命令的apk,请自行搜索??adbuninstall,卸载应用,后面跟的参数是应用的包名,请区别于apk文件名'-k'meanskeepthedataandcachedirectories,-k选项,卸载时保存数据和缓存目录??adbpull,将Android设备上的文件或者文件夹复制到本地??例如复制Sdcard下的pull.txt文件到D盘:adbpullsdcard/pull.txtd:\如果需要重命名为rename.txt:adbpullsdcard/pull.txtd:\rename.txt注意权限,复制系统权限的目录下的文件,需要root,并且一般的Android机root之后并不能使用命令去复制,而需要在手机上使用类似于RE的文件浏览器,先对系统的文件系统进行挂载为可读写后,才能在手机上复制移动系统文件,这里推荐使用小米手机的开发版本,IUNI也是不错滴~~??adbpush,推送本地文件至Android设备??例如推送D盘下的push.txt至Sdcard:adbpushd:\push.txtsdcard/sdcard后面的斜杠不能少,否则会出现下面的错误:[xuxu:~]$adbpushpush.txtsdcardfailedtocopy'push.txt'to'sdcard':Isadirectory权限问题同pull命令??adbroot,adbremount,只针对类似小米开发版的手机有用,可以直接已这两个命令获取root权限,并挂载系统文件系统为可读写状态??adbreboot,重启Android设备bootloader,重启设备,进入fastboot模式,同adbreboot-bootloader命令??recovery,重启设备,进入recovery模式,经常刷机的同学比较熟悉这个模式??adbforward,将宿主机上的某个端口重定向到设备的某个端口adbforwardtcp:1314tcp:8888执行该命令后所有发往宿主机1314端口的消息、数据都会转发到Android设备的8888端口上,因此可以通过远程的方式控制Android设备。adbshell命令有人问过我,为什么会知道这么多的命令,答案就是我比较爱折腾,这里大家先要了解我为什么要区分adb命令和adbshell命令。简单点讲,adb命令是adb这个程序自带的一些命令,而adbshell则是调用的Android系统中的命令,这些Android特有的命令都放在了Android设备的system/bin目录下,例如我再命令行中敲这样一个命令:[xuxu:~]$adbshellhehe/system/bin/sh:hehe:notfound很明显,在bin目录下并不存在这个命令。自己爱折腾,想看看有哪些命令,也不想去找文档,于是就启动模拟器,将整个system/bin目录复制了出来,然后一个一个的去试。。囧~~打开这些文件就可以发现,里面有些命令其实是一个shell脚本,例如打开monkey文件:#Scripttostartmonkeyonthedevice,whichhasaveryrudimentary#shell.#base=/systemexportCLASSPATH=$base/framework/monkey.jartrapHUPexecapp_process$base/bin*再比如打开am:#!/system/bin/sh##Scripttostartamonthedevice,whichhasaveryrudimentary#shell.#base=/systemexportCLASSPATH=$base/framework/am.jarexecapp_process$base/bin@还有SDKsources/android-20/com/android/commands目录下:[xuxu:...oid-20/com/android/commands]$pwd/Users/xuxu/utils/android/android-sdk-macosx/sources/android-20/com/android/commands[xuxu:...oid-20/com/android/commands]$lltotal0drwxr-xr-x3xuxustaff102B4210:57amdrwxr-xr-x3xuxustaff102B4210:57bmgrdrwxr-xr-x3xuxustaff102B4210:57budrwxr-xr-x3xuxustaff102B4210:57contentdrwxr-xr-x3xuxustaff102B4210:57imedrwxr-xr-x3xuxustaff102B4210:57inputdrwxr-xr-x3xuxustaff102B4210:57mediadrwxr-xr-x3xuxustaff102B4210:57pmdrwxr-xr-x3xuxustaff102B4210:57requestsyncdrwxr-xr-x3xuxustaff102B4210:57settingsdrwxr-xr-x7xuxustaff238B4210:57svcdrwxr-xr-x6xuxustaff204B4210:57uiautomatordrwxr-xr-x3xuxustaff102B4210:57wm有没有熟悉的命令?am、pm、uiautomator...下面介绍一些常用的adbshell命令(其中pm、am命令比较庞大,使用四级标题)pmPackageManager,可以用获取到一些安装在Android设备上得应用信息pm的源码Pm.java,直接运行adbshellpm可以获取到该命令的帮助信息??pmlistpackage列出安装在设备上的应用不带任何选项:列出所有的应用的包名(不知道怎么找应用的包名的同学看这里)adbshellpmlistpackage-s:列出系统应用adbshellpmlistpackage-s-3:列出第三方应用adbshellpmlistpackage-3-f:列出应用包名及对应的apk名及存放位置adbshellpmlistpackage-f-i:列出应用包名及其安装来源,结果显示例子:??package:com.zhihu.androidinstaller=com.xiaomi.marketadbshellpmlistpackage-i命令最后增加FILTER:过滤关键字,可以很方便地查找自己想要的应用?参数组合使用,例如,查找三方应用中知乎的包名、apk存放位置、安装来源:[xuxu:~]$adbshellpmlistpackage-f-3-izhihupackage:/data/app/com.zhihu.android-1.apk=com.zhihu.androidinstaller=com.xiaomi.market??pmpath列出对应包名的.apk位置[xuxu:~]$adbshellpmpathcom.tencent.mobileqqpackage:/data/app/com.tencent.mobileqq-1.apk??pmlistinstrumentation,列出含有单元测试case的应用,后面可跟参数-f(与pmlistpackage中一样),以及[TARGET-PACKAGE]??pmdump,后跟包名,列出指定应用的dump信息,里面有各种信息,自行查看?adbshellpmdumpcom.tencent.mobileqqPackages:Package[com.tencent.mobileqq](4397f810):userId=10091gids=[3003,3002,3001,1028,1015]pkg=Package{43851660com.tencent.mobileqq}codePath=/data/app/com.tencent.mobileqq-1.apkresourcePath=/data/app/com.tencent
本文标题:Android 常用 adb 命令总结
链接地址:https://www.777doc.com/doc-7845512 .html