㈠ 常用的adb命令
在平时的工作中,会经常用到adb命令,在这里稍微整理了一下。
一.概要
1.什么是adb?
adb全称为android Debug Bridge,就是起到调试桥的作用。顾名思义,adb就是一个debug工具。
2.adb工作原理
不是很理解?那就来看看它的工作原理吧。
上图是一个简单的adb工作原理图。adb客户端服务器端程序,由上图可以看出它主要三个组件组成:Client,Server,Daemon。
(1)当你启动一个adb Client(客户端),Client首先会选确认是否已有一个adb
Server(服务器)进程在运行,如果没有,则会启动Server进程。此时,adb Server就会绑定本地的TCP端口5037,并监听adb
Client发来的命令。
(2)接着,Server将会扫描所有5555到5585范围内的奇数端口来定位所有的模拟器或设备,并与之建立连接。一旦Server找到
了adb
daemon(守护程序),它将建立一个到该端口的连接,这样,我们就可以使用adb命令控制和访问模拟器或设备了。在这里,需注意的是任何模拟器或设备实例会取得两个连续的端口:一个偶数端口用来相应控制台的连接,和一个奇数端口用来响应adb连接。
3.adb的作用
借助adb工具,我们可以管理设备或手机模拟器的状态,还可以进行很多手机操作,如安装软件、系统升级、运行shell命令等等。简而言之,adb就是连接Android手机和PC端的桥梁,可以让用户在电脑上对手机进行全面的操作。
二.常用命令
这个部分主要介绍adb的使用方法和一些常用的命令。
设置adb环境:将android sdk工作目录添加到系统环境变量中,则可使用adb命令了。
1. adb devices
查看当前连接的设备(连接计算机的Android设备或者模拟器)。
2.adb install
adb install <apk文件路径>,将指定的apk安装到设备上,安装的apk包会放在/data/app目录下。
几个参数:
-r 强制安装
-d(真机,多个设备中只有一个真机时适用)
-e(模拟器,多个设备中只有一个模拟器时适用)
-s(指定设备,后接序列号)
adb –s 44a188f9 install –r test.apk(其中44a188f9即序列号,通过adb devices可获取)
3.adb uninstall
adb uninstall <apk包名>
adb uninstall –k <apk包名>
-k参数为卸载软件时保留配置和缓存文件
4.adb reboot
重启android设备
5.adb shell
通过adb shell 命令,就可以进入设备或者模拟器的shell环境了,在这个linux shell中,我们就可以执行各种Linux命令了。
如果只想执行一条shell命令,就可以采用:adb shell [shell_command]
在实际使用中,经常与grep或findstr一起使用,起到过滤作用,查看自己需要的关键信息。
6.adb shell su
前提手机已经root。获取adb shell的root权限。
使用su提权,用户命令提示符有$变成#,如果手机没有root,会提示su:permission denied。
7.adb shell ps/top
查看当前终端中的进程信息,如pid等。
8.adb shell am/pm
am全称为activity manager,可使用am命令模拟各种系统的行为,如去启动一个activity,强制停止进程,发送广播进程,修改设备屏幕属性等。
如:adb shell am start <apk包名>/<activityName>:启动一个activity。
pm全称为package manager,利用pm命令可模拟android行为或查询设备上的应用等。
如:adb shell pm list packages
列出当前设备所有已安装的程序的包名。
说明:
管道符“|”:可以把标准的输入流与标准的输出流进行合并,或者把某个命令的标准输出流作为另一个命令的标准输入流。
exit退出shell。
由于grep为linux命令,运行单条adb shell 时并没有进入linux
shell环境,并不能用grep等其他linux命令,只能用window cmd的命令。在这里可以用findstr来代替grep,使用方法为
findstr/grep [keyword]
更详细的内容可查看 参考文献3 和 参考文献4 。
对于常用的linux命令和常用的windows 控制台命令,以后再作总结。
9.adb pull 和 adb push
adb pull <设备中的文件路径> <本地路径>:从模拟器或设备中复制文件到本地。
adb push <本地文件路径> <设备中的路径>:将本地文件或目录复制到模拟器或设备。
这里还涉及到一个权限的问题,在后续的博文中再作介绍。
10.adb shell mpsys
Android提供的mpsys工具用于查看感兴趣的系统服务信息与状态。
参考下表:
11.adb shell monkey
跑monkey是android自动化测试的一种手段,所谓monkey测试就是模拟用户的按键输入,触摸屏输入,手势输入等。当Monkey程序在模拟器或设备运行的时候,如果用户比如点击,触摸,手势或一些系统级别的事件的时候,它就会产生随机脉冲,所以可以用Monkey的随机重复的方法对apk作压力测试,来测试android
app的稳定性。
如下为测试腾讯新闻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
更详细的参数可查看 参考文献5 。
部分测试结果如下:
对于测试结果的分析,通过搜索关键词来定位错误,主要包括以下四个方面:
1)ANR(Application Not
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关键词来定位到详细的堆栈信息。
12.kill
kill用来中止一个进程。
比如我们在跑monkey的时候,怎么强制关闭monkey呢,可以用kill <monkey进程PID>
说明:另开启一个cmd,找到monkey的pid号,然后杀掉即可。
参考文献:
1.Android调试桥: http://www.iteye.com/topic/260042
2.Android性能分析工具mpsys的使用: 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 和 mankey 命令
一、常用adb命令
1、adb devices:查看已连接的设备
2、adb version:查看adb的版本序列号
3、adb -s <设备名字>:指定某设备做什么(设备名字用1的方法可以查看)
4、adb install <安装包.apk>:安装应用(写清楚apk的完整路径)adb -s <设备名字> install <安装包.apk>:指定设备安装应用
5、adb shell:通过远程shell命令来控制模拟器/设备
6、exit:退出shell远程连接,回到原路径。(Ctrl+d,退出shell,回到默认路径)
7、adb pull <设备端路径> <pc端路径>:将指定的文件从设备/模拟器上拷贝到pc端(后面的pc端路径可以不指定,默认存储在当前路径下)。例: adb pull /sdcard/log.txt c:/monkey
8、adb push <pc端路径> <设备端路径>:将指定的文件从pc端拷贝到设备/模拟器上
9、adb shell pm list packages:列出电脑端所有apk的包名
10、adb logcat:查看pc端的日志输出。adb shell界面只需输入logcat,查看设备端日志输出(退出Ctrl+c)
二、Monkey命令扩展
1、最简单的monkey执行语句:(adb shell)monkey –p com.jianjiexuan.na –v 500 (对com.jianjiexuan.na 这个程序包单独进行一次500次的monkey测试)
名词解释:-p:用于约束限制,用此参数指定一个或多个包。指定包之后,Monkey将只允许系统启动指定的APP。如果不指定包,Monkey将允许系统启动设备中的所有APP。指定多个包:monkey -p –p -p -v 500-v:用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,分别对应的参数如下表所示:
日志级别 Level 0
例 monkey –p com.jianjiexuan.na –v 500说明:缺省值,仅提供启动提示、测试完成和最终结果等少量信息
日志级别 Level 1
例 monkey –p com.jianjiexuan.na –v -v 500说明:提供较为详细的日志,包括每个发送到Activity的事件信息
日志级别 Level 2
例 monkey –p com.jianjiexuan.na –v -v -v 500
说明:最详细的日志,包括了测试中选中/未选中的Activity信息
2、延时及固定序列(adb shell)monkey -s 100 -p com.jianjiexuan.na – -throttle 1000 -v 500 (每次执行一次有效的事件后休眠1000毫秒)(adb shell)monkey -p com.jianjiexuan.na – -throttle 1000 – -randomize-throttle -v 500 (每次执行一次有效事件后随机延时0-200毫秒)名词解释:-s:用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。出现问题下次可以重复同样的系列进行排错。–throttle:固定延时,用于指定用户操作(即事件)间的时延,单位是毫秒;–randomize-throttle:随机延时,用于指定用户操作(即事件)间的时延,单位是毫秒。
3、保存monkey运行结果1)保存在PC中adb shell monkey –p com.jianjiexuan.na –v 500 > d:\monkey\log.txt 2)保存在手机中手机端进入shell模式:adb shell monkey –p com.jianjiexuan.na –v 500 > /mnt/sdcard/monkey/log.txt
㈢ Android安全入门基础-ADB详解
adb的全称为Android Debug Bridge,就是起到调试桥的作用。通过adb我们可以在IDE中方面通过DDMS来调试Android程序,说白了就是debug工具。 adb的工作方式比较特殊,采用监听Socket TCP 5554等端口的方式让IDE和Qemu通讯,默认情况下adb会daemon相关的网络端口,所以当我们运行IDE时adb进程就会自动运行。
adb的全称为Android Debug Bridge,就是起到调试桥的作用。通过adb我们可以在Eclipse中方面通过DDMS来调试Android程序,说白了就是debug工具。 adb的工作方式比较特殊,采用监听Socket TCP 5554等端口的方式让IDE和Qemu通讯,默认情况下adb会daemon相关的网络端口,所以当我们运行Eclipse时adb进程就会自动运行。
对于安卓开发与测试来说就像一把“瑞士军刀”
ADB本身是Android手机开发时的调试工具,但是也可以用来作为手机管理工具。
基本上现在的豌豆荚(豌豆荚会自动在手机上安装其APP-静默安装)、360手机助手、qq手机助手对手机的管理功能都是通过ADB来实现。
ADB的管理功能需要手机打开调试选项,这为手机管理提供了方便,同时也造成了安全隐患。
因为ADB工具可以实现查看手机内容、向手机写入文件、给手机安装软件等功能,这些都不需要root权限。
当我们打开手机的调试选项,并使用USB线将手机连接到PC时,不仅仅是手机管理工具可以控制手机,只要调用ADB命令,任何PC端的程序都可以访问手机内容。
假设有一个运行在PC端的间谍程序,那么就很容易检测到手机与PC的连接,而且只要一条很简单的命令"adb.exe shell ls /"就可以列出手机根目录下的所有文件了。
其实如果打开了手机的调试选项,那么手机连接到PC后就是在“裸奔",手机中的所有信息都可以被PC端抓取,其实这也就是现在流行的手机管理工具的基本原理。
所以如果需要保护手机上的私密信息,那么最好谨慎打开手机的USB调试选项
㈣ 常用adb命令总结
前言
很早就想整理一下自己平时常用的一些adb命令,不仅为了便于以后查找,而且整理的过程自己又重新复习了一遍,但是当我开始在度娘一搜的时候,发现很多人已经写的非常详细了,尤其是当我发现了 这篇adb概括
心中一句NND,怎么可以写的这么详细,瞬间没了想写这篇文章的欲望,如果你点了链接发现确实很全,那么恭喜你可以关掉这篇了,哈哈哈。
我就不这么想的,虽然很全,但不是我常用的,因人而异,所以我就权当记笔记+替这哥们宣传了。
设备的状态有 3 种
常见的错误情况
-查看前台 Activity
最常用的就是启动指定的activity和发送指定的广播
操作指令 adb shell am start -n 包名/类名
启动默认浏览器打开一个网页
adb shell am start -a android.intent.action.VIEW -d http://testerhome.com
先停止目标应用,再启动
adb shell am start -s com.android.camera/.Camera
启动相机
adb shell am start -n com.android.camera/.Camera
启动设置
adb shell am start -n com.android.settings/com.android.settings.Settings
启动Wifi设置
adb shell am start -n com.android.settings/com.android.settings.wifi.WifiSettings
启动蓝牙设置
adb shell am start -n com.android.settings/com.android.settings.bluetooth.BluetoothSettings
其它的类似只要你能在manifest中找到配置的,都可以通过这种方法来调用
操作指令 adb shell am broadcast -a 广播名 --ei/es/ez 参数名 参数值 --ei/es/ez 参数名 参数值
--ei integer 值
--es String 值
--ez boolean 值
--ef float 值
--el long 值
例如之前写的
Android6.0 源码修改之Setting列表配置项动态添加和静态添加 , 当中就通过发送广播来接收增加配置列表项
adb shell am broadcast -a cn.dynamic.add.settingcategoryitem --es location "0-2" --es title "红" --es intent "com.android.settings.SCHEDULE_POWER_ON_OFF_SETTING"
命令:
adb shell settings put global policy_control <key-values>
<key-values> 可由如下几种键及其对应的值组成,格式为 key1=value1:key2=value2。
key 含义
这些键对应的值可则如下值用逗号组合:
value 含义
例如:
adb shell settings put global policy_control immersive.full=*
表示设置在所有界面下都同时隐藏状态栏和导航栏。(重启也不会失效,恢复需调用下面的命令)
adb shell settings put global policy_control immersive.preconfirms=*
表示恢复显示
adb shell settings put global policy_control immersive.status=com.package1,com.package2:immersive.navigation=apps,-com.package3
表示设置在包名为 com.package1 和 com.package2 的应用里隐藏状态栏,在除了包名为 com.package3 的所有应用里隐藏导航栏。
参考链接
Android 常用 adb 命令总结
ADB命令大全
㈤ Android常用的ADB命令
重启:adb reboot
推文件:adb push E:\xxx.txt storage/sdcard
拉文件:adb push storage/sdcard .
将日志保存到电脑文件: adb logcat > xxx. xxx电脑文本地址
清除指定应用的数据和缓存:adb shell pm clear 例:adb shell pm clear com.yzl.test
查看日志缓冲区大小:adb shell logcat-g
设置日志缓冲区大小:adb logcat-G10M
打开蓝牙:adb shell svc bluetooth enable
关闭蓝牙:adb shell svc bluetooth disable
查询蓝牙是否打开:adb shell settingsgetglobalbluetooth_on
获取蓝牙Mac地址:adb shell settingsgetsecure bluetooth_address
获取某个包名的安装路径:adb shell pm path com.xx.xx
查看所有存活的进程:adb shell ps
过滤关键字查看adb shell ps|findstr xxx
强制安装版本号更低的apk:adb install -r -d "C:\xx.apk"
对指定应用进行500次模拟触摸事件:adb shell monkey -p com.yzl.test -v 500
查看某个apk的应用信息、版本信息:adb shell mpsys package com.yzl.test
查看已安装应用列表:adb shell pm list package或adb shell pm list packages-s
㈥ 干货|做App测试,那些必知必会的Adb常用命令
> 本文节选自霍格沃兹测试学院内部教材
为了让大家更好的学习Adb常用命令,我们先从安装Android环境搭建开始讲解哦。
安装jdk
### **
**
**
**
### 因为 Android SDK 是依赖于 java 环境的,所以需要先把 java 的环境搭建好。Java
环境可以参考搭建帖子:https://ceshiren.com/t/topic/4001
安装Android SDK
###
###
### adb 包含在 Android SDK 平台工具软件包中。具体的 Android SDK
环境搭建步骤请参考帖子:https://ceshiren.com/t/topic/4001
adb简介
adb 全称为 Android Debug Bridge(Android 调试桥),是 Android SDK 中提供的用于管理 Android
模拟器或真机的工具。
adb 是一种功能强大的命令行工具,可让 PC 端与 Android 设备进行通信。adb 命令可执行各种设备操作,例如安装和调试应用。
adb组成
采用了客户端-服务器(C/S)模型,包括三个部分:
* adb client
* adb server
* adb daemon
ADB client:运行在电脑上,可以在命令行中运行 adb 命令来调用该客户端。Client 本质上就是 Shell,用来发送命令给
Server。发送命令时,首先检测 PC 上有没有启动 Server,如果没有 Server,则会自动启动一个,然后将命令发送到 Server。
ADB server:是运行在电脑上的后台进程,用于管理客户端与运行在模拟器或真机的守护进程通信。
ADB Daemon:守护进程作为一个后台进程在 Android 设备或模拟器系统中运行。它的作用是连接 adb 服务端,并且为运行在主机上的 adb
客户端提供一些服务。
adb工作原理
当 adb 客户端启动时,客户端会先检查 adb 服务端是否启动。如果没有,会先启动服务端进程。adb 服务端在启动后,会与 5037 端口绑定,并监听
adb 客户端发出的命令。
然后,服务端会与所有正在运行的 Android 设备建立连接。它通过扫描 5555 到 5585 之间的奇数号端口查找 Android 设备。服务端一旦发现
Android 设备上的 adb 守护进程在运行,便会与相应的端口建立连接。每个 Android 设备都使用一对端口,偶数端口用于控制台连接,奇数端口用于
adb 连接。
例如:服务端与所有 Android 设备建立连接后,就可以使用 adb 命令来访问这些设备了。服务端会管理已经建立的连接,并处理来自 adb 客户端的命令。
启动adb调试
### Android 真机可以通过 USB 连接到 adb,连接时需要在设备的系统设置中启用 USB 调试(位于开发者选项下),启动 USB
调试后,设备上的 adb 守护进程就会被启动,adb 服务端才可以和设备建立连接。除了用 USB 的方式连接之外,也可以通过 WLAN
的方式连接,这种方式不做赘述。
1. 模拟器:不需要手动设置 USB 调试开关,默认是打开的
2. 真机通过 USB 连接
* 安装 Android 手机驱动
* 设备启用 USB 调试
adb命令格式
*
adb [-d|-e|-s <serialNumber>] <command>
* -d:指定当前唯一通过 USB 连接的 Android 设备为命令目标
* -e:指定当前唯一运行的模拟器为命令目标
* -s:指定相应 serialNumber 号的设备/模拟器为命令目标
方括号中的内容是可选的,尖括号内容的是必填的。方括号中参数可以指定设备,关于设备的指定有三个参数可以使用。-d、-e 和 -s,其中使用最多的是 -s
参数,在连接多台设备的时候,一般都是使用 -s 加上设备的序列号这种方式去指定具体设备。
adb 可以同时连接多台设备,但是一次只能对一台设备执行命令。所有连接多台设备的时候,是必须要制定设备,命令才可以执行成功的。
查询设备
把 Android 设备连接到 adb 服务端后,需要确认设备的连接状态。这时可以使用查询命令进行查询。
**连接模拟器** (以 mumu 模拟器为例)
* *
adb connect 127.0.0.1:7555adb devices
* `adb connect` 命令可以通过 WLAN 的方式连接到模拟器,7555 为 mumu 模拟器的端口
* `adb devices` 可以查询设备连接的状态
Windows 系统中,连接模拟器需要先执行 connect 命令去连接模拟器,127.0.0.1 是本地的 IP
地址,因为模拟器就是安装在本地的,所以要使用本地的 IP 地址,加上模拟器本身规定的一个端口号。mumu 的端口号是
7555,如果使用的是其他的模拟器的话,需要先去了解它的端口号是什么,然后再去连接。MacOS 系统中连接模拟器不需要先执行 connect 命令,直接执行
`adb devices` 命令即可。
**连接真机**
**
**
真机直接用 USB 连接到电脑,不需要执行 connect 命令。
直接用 `adb devices`命令查看已经连接的设备列表即可。
feier@ ~ % adb devices
List of devices attached
emulator-5554 device
直接命令后,如果设备已经成功连接,那么设备列表中就会展示已连接设备的信息。以图中的信息为例:
* emualotr-5554:设备序列号
* device:设备连接状态为成功
安装卸载应用
测试过程中,如果需要安装或者卸载应用,可以直接用 adb 命令来操作。
* 普通安装:`adb install <apk路径>`
* 覆盖安装:`adb install -r <apk路径>`
* 完全卸载:`adb uninstall <包名>`
* 保留配置文件:`adb uninstall -k <包名> `
设备与电脑传输文件
adb 命令支持电脑和 Android 设备之间的文件互传。比如我们需要提取 Android 设备中的日志文件到本地,就可以通过 adb 命令的方式来完成。
* 从电脑上传文件至设备:`adb push <电脑路径> <设备路径>`
* 从设备复制文件至电脑:`adb pull <设备路径> <电脑路径>`
日志
打印链接设备的 log 信息
* 屏幕输出日志:`adb logcat`
* 通过标签过滤:`adb logcat -s 标签`
* 显示时间:`adb logcat -v time`
* 输出所有信息:`adb logcat -v long`
* 输出日志到文件:`adb logcat -v time > log.txt`
* 清除旧日志信息:`adb logcat -c`
adb shell命令
使用 adb shell 命令相当于远程登录了 Android 系统,可以进入 Android 设备的系统内部。进入系统内部既可以执行一些简单的 Linux
命令也支持很多特有的命令。
使用 adb shell 命令有两种方式。
一种是直接在 adb shell 后面跟上命令。
*
adb [-s serial_number] shell <command>
比如:
* * * * * * * * * * *
feier@ ~ % adb shell .propdevetc...
另一种方式是在设备上启动交互式 shell
*
adb [-s serial_number] shell
进入 shell 之后,再执行对应的命令。
比如我们进入设备内部,可以查看设备内部的目录结构和内容
* * * * * * * * * * *
feier@ ~ % adb shellroot@x86:/ # .propdev...
要退出交互式 shell,可以按 Ctrl + D 键或输入 exit。
**Android常用测试命令**
下面整理出了Android常用的一些测试命令及用法。
设备截图/录屏
在测试过程中,如果需要截图或者是录屏,也可以直接使用 adb 命令来完成。
* 截图:`adb shell screencap <设备路径>`
* 录屏:`adb shell screenrecord <设备路径>`
调用Activity管理器
在 adb shell 中,可以使用 Activity 管理器 (am) 工具发出命令以执行各种系统操作,如启动
Activity、强行停止进程、修改设备屏幕属性,等等。
在测试过程中,如果需要启动 app 或者强制关闭 app,可以通过 adb 命令来实现。
* 启动应用:`adb shell am start -n <包名>/<Activity名>`
* 强制停止应用:`adb shell am force-stop <包名>`
调用软件包管理器
在 adb shell 中,可以使用软件包管理器 (pm) 工具发出命令,以对设备上安装的应用软件包执行操作和查询。
如果需要查询设备里都安装了什么应用,就可以使用 adb shell pm list 来查看,还可以加上不同的参数去查看不同类型的应用。而且也可以通过 adb
命令来清除应用相关的数据。
* 显示设备中安装的所有应用:`adb shell pm list packages`
* 只显示系统应用:`adb shell pm list packages -s`
* 只显示第三方应用:`adb shell pm list packages -3`
* 删除与软件包关联的所有数据:`adb shell pm clear <包名>`
adb shell mpsys
mpsys 是一种在 Android 设备上运行的工具,可提供有关系统服务的信息。可以使用 adb 从命令行调用
mpsys,获取在连接的设备上运行的所有系统服务的诊断输出。
比如在测试中,如果需要通过 adb 命令启动 app,则需要知道 app 的包名和入口的 Activity
名。这个时候,就可以通过下面这条命令获取到这两个信息。
这个场景,需要先把要获取信息的应用启动,让它在前台运行,然后执行命令
`adb shell mpsys activity | grep mFocusedActivity`
* * *
feier@ ~ % adb shell mpsys activity | grep mFocusedActivity mFocusedActivity: ActivityRecord{9dae968 u0 com.xueqiu.android/.common.MainActivity t139}
下方的日志中就会展示出来当前的包名和 Activity 名称。
* 包名:`com.xueqiu.android`
* Activity 名:`.common.MainActivity`
adb shell mpsys
adb 命令还支持直接获取应用的页面信息。这个页面信息包含了页面中元素的属性,可以方便做自动化测试的时候去定位元素。获取到的页面布局会输出到一个 xml
文件中。
* 当前窗口的 UI 布局简化信息:`adb shell uiautomator mp --compressed`
* *
feier@ ~ % adb shell uiautomator mp --compressedUI hierchary mped to: /sdcard/window_mp.xml
不指定输出文件路径时,mp 下来的文件默认存储路径为 `/sdcard/window_mp.xml`
可以通过 adb pull 命令把文件传输到电脑中,然后用 uiautomatorviewer 工具打开查看布局。
* 指定输出文件路径:`adb shell uiautomator mp file <设备路径>`
adb常用命令就先讲到这里啦,下期我们分享App常见bug解析。大家还想看什么内容的文章也可以留言告诉我们哦!
** _
来霍格沃兹测试开发学社,学习更多软件测试与测试开发的进阶技术,知识点涵盖web自动化测试 app自动化测试、接口自动化测试、测试框架、性能测试、安全测试、持续集成/持续交付/DevOps,测试左移、测试右移、精准测试、测试平台开发、测试管理等内容,课程技术涵盖bash、pytest、junit、selenium、appium、postman、requests、httprunner、jmeter、jenkins、docker、k8s、elk、sonarqube、jacoco、jvm-sandbox等相关技术,全面提升测试开发工程师的技术实力
QQ交流群:484590337
公众号 TestingStudio
视频资料领取:https://qrcode.testing-studio.com/f?from=jianshu&url=https://ceshiren.com/t/topic/15844
点击查看更多信息
㈦ adb 简介及常用命令
adb全称(Android Debug Bridge),它是一个通用命令行工具,它可以做为Android与PC端连接的一个桥梁,所以adb又称为Android调试桥,用户可以通过adb在电脑上对Android设备进行全面操作,比如安装和调试应用,操作文件的传输等。
首先用户启动一个adb客户端时,此客户端先检查是否存在已运行的adb服务器进程。如果没有,它将启动一个服务器进程,当服务器进程启动时,adb服务器就会绑定本地的TCP端口5037并监听adb客户端发来的命令,使用的adb客户端都使用端口5037与adb服务器进行对话的。接着服务器将所有运行中的模拟器或设备实例进行连接。它通过扫描所有5555到5585范围内的奇数端口来定位所有的模拟器或设备。一旦服务器找到了adb守护程序,将建立一个到该端口的连接。
客户端发送的命令分为三种:
输出状态:
adb install安装原理过程:
Android系统的日志分为两部分:底层的Linux内核日志输出到/proc/kmsg, Android日志输出到/dev/log。Android的Log等级通常有六类,按照日志级别由低到高分别是:Verbose、Debug、Info、Warning、Error、Assert。
㈧ ADB常用命令
Android 调试桥 (adb) ,可与设备进行通信。adb 命令可用于执行各种设备操作(例如安装和调试应用),并提供对 Unix shell(可用来在设备上运行各种命令)的访问权限。它是一种客户端-服务器程序,包括以下三个组件:
客户端: 用于发送命令。客户端在开发机器上运行。可以通过发出 adb 命令从命令行终端调用客户端。(可以通过它对Android应用进行安装、卸载、调试)
PC上的手机助手基本都是通过adb命令去完成的。有时候装了这类手机助手的话,它自带的adb程序可能会与Android SDK下的adb程序产生冲突,5037端口被占用,导致adb命令无法连接到设备。Windows下通过netstat -ano|findstr "5037"
守护程序 (adbd): 用于在设备上运行命令。守护程序在每个设备上作为后台进程运行
执行adb shell ps | grep adbd, 可以找到该后台进程,Windows使用findstr替代grep.
adb nodaemon server
服务器(Service): 用于管理客户端与守护程序之间的通信。服务器在开发机器上作为后台进程运行
adb服务启动后,Windows可以在任务管理中找到adb.exe; linux ps -ef | gref adb 可以查看service
一般都是通过这样子的格式 adb [-d|-e|-s <设备序列号>] <子命令>
通常只有一台设备就忽略 [-d|-e|-s ] 这一部分
这里介绍一些常用的命令:
获取设备列表及设备状态
获取设备的状态
注意:设备的状态有 3 钟,device , offline , unknown
device:设备正常连接
offline:连接出现异常,设备无响应
unknown:没有连接设备
结束 adb 服务
启动 adb 服务
注意:通常两个命令一起用,有时候我们开启server会失败,这是因为我们装了的手机助手,豌豆荚或者其他软件自带有自己的adb,导致端口冲突开启失败。一般在连接出现异常,使用 adb devices 未正常列出设备, 设备状态异常时使用 kill-server,然后运行 start-server 进行重启服务。
打印 Android 的系统日志
打印 mpsys、mpstate、logcat 的输出,也是用于分析错误输出比较多
打印日志后重定向到一个文件中
安装应用,覆盖安装是使用 -r 选项
注意:有些adb版本无法支持安装中文的apk
查看手机应用包名
查看应用对应的apk文件在手机上的安装位置则可以在上面的命令后加-f参数
卸载应用,后面跟的参数是应用的包名,请区别于 apk 文件名
'-k' means keep the data and cache directories , -k 选项,卸载时保存数据和缓存目录
将 Android 设备上的文件或者文件夹复制到本地
adb pull /sdcard/test.txt C:\Users\Administrator\Desktop\log
推送本地文件至 Android 设备
获取连接到的手机的序列号
获取设备的连接状态
等待设备连接成功
该命令将会阻塞一直到默认连接的那部机器状态变为device,也就是连接成功。
其实adb shell命令就是调用的是Android设备中的system/bin目录下的命令。
Android的内核本身就是Linux,所以Android本身也支持Linux命令,但是因为是手机系统,所以进行了一定的删减,部分命令不支持,而不支持的部分,我们可以通过安装busybox这个软件进行。
如何在手机中执行Shell命令?
每次都加上adb shell来进行命令的发送与执行
先通过adb shell进入手机Shell执行状态,然后直接输入Linux命令。
使一个apk处于禁用状态,相当于卸载了:
其中 PACKAGE_OR_COMPONENT的格式是 package/class, 如 com.UCMobile/.main.UCMobile
eg:adb shell su disable com.UCMobile/.main.UCMobile
同时我们在手机上发现,UC浏览器的图标不见了
让一个apk从禁用状态恢复过来
其中 PACKAGE_OR_COMPONENT的格式是 package/class, 如 com.UCMobile/.main.UCMobileeg:
adb shell su enable com.UCMobile/.main.UCMobile
同时我们从手机上发现,UC浏览器的图标又出现了。
查看一个apk所在的路径
adb shell pm path com.UCMobile
查看手机中装的所有的包
屏幕开始录像并且储存到/sdcard中,同时名字为demo.mp4
录屏设置时长10s,命名为demo.mp4
注意:现在仅支持一部分手机录屏,不支持的手机会出现以下提示
解决方法:
安装了scrcpy之后,只需要输入如下命令,即可录取指定设备的屏幕
scrcpy -s device --render-expired-frames -Nr ./demo.pm4
--render-expired-frames:尽可能最大帧率
-N:不在PC端展示
-r:录制mp4/mkv文件
关闭设备请求,开启设备
设备关机以及重启
pm(package manager)可以获取一些安装到Android设备上的app的信息
pm list packages 用法:list packages [ options] filter
获取所有的应用的包名
列出系统应用
列出第三方应用
查看它们的关联文件
adb shell pm list package -f
查看软件包的安装来源
pm mp 包名 很多mp信息
安装应用
apk如果在电脑用 adb install
如果在Android设备上用 adb shell pm install
卸载应用,同adb uninstall ,后跟包名
清除应用数据
am(activity manager,字面意思就跟activity有关,大家都知道Android的界面都是由一个个activity显示的)
启动一个Activity
获取到package和launch_activity
AndroidSDK中aapt工具,检索命令结果,可以获取到package和launch_activity
这里涉及到一个点,如何找到程序的入口,首先你要知道是哪个activity才能启动;
启动华为系统相机
打开音乐播放器
播放指定音乐:
先停止目标应用,再启动
等待应用完成启动
启动网页(android.intent.action.VIEW具体参考Android官网)
结束应用
input
模拟输入,向获得焦点的EditText控件输入内容
返回主界面
发送一个点击操作的指令,参数是<x> <y>坐标
从左往右滑动屏幕, /从 100 100 经历300毫秒滑动到 200 200
长按操作,在 100 100 位置长按 1000毫秒