随笔 - 331,  文章 - 92,  评论 - 54,  阅读 - 60万

一、adb的工作原理

adb是cs架构,由三部分组成,分别是client,server,daemon,他们的关系见下图

 

server是整个架构的核心

server负责接收client的指令,然后将指令发送给手机上的daemon

server负责接收daemon的执行结果,然后将结果返回给client

 

二、adb环境搭建

a、安装java环境,并配置环境变量

b、安装安卓adk,下载路径如下

https://developer.android.com/studio/releases/platform-tools?hl=zh-cn

 

三、adb的基础使用

1、连接设备

1
2
3
4
5
adb -#指定当前唯一通过usb连接的安卓设备作为命令的目标
 
adb -#指定当前唯一运行模拟器的安卓设备作为命令的目标
 
adb -#指定相应的设备id作为命令的目标

  

2、查看设备的状态

1
2
3
adb devices  #查看当前pc可以查询到的安卓的设备,并可以查看对应的设备的状态
 
adb get-state  #作用同adb devices

  

设备的状态有以下几种

device   是属于正常的状态

offline    连接出现异常

unauthorized  设备未授权

3、连接模拟器(这里我们采用网易的木木模拟器)

1
2
adb_server.exe connect 127.0.0.1:7555
adb_server shell # 进入对应的安卓设备,我们知道,安卓底层其实也是linux

  

 

4、连接真机,需要有以下条件

a、手机需要进入调试模式(打开开发者模式,打开usb调试)

b、电脑需要安装对应的手机的驱动

c、手机通过usb和pc连接

 

5、通过adb安装和卸载app

1
2
3
adb install apk路径        #首次安装
 
adb install -r apk路径     #覆盖安装

  

1
2
3
adb uninstall   包名  #卸载,会删除缓存文件和配置文件
 
adb uninstall -k 包名   #卸载,不删除缓存文件和配置文件

  

6、adb获取当前的页面和启动页面

这里需要给大家介绍2个名词

package包:是安卓应用的唯一标识
Activity活动页:安卓应用的页面,一个页面就是一个activity

a、我们可以先在手机打开一个app

b、执行下面的命令,可以获取包名和当前的activity

1
adb shell "dumpsys window |grep mCurrentFocus"

  

 

 包名:com.taobao.taobao

activity:com.taobao.tao.welcome.Welcome

 

c、其他查看包名的方法

1
adb shell pm list packages -3  #查看当前手机上安装的第三方的应用

  

 

d、获取到包名和activity后,我们就可以通过adb命令启动某个app的某个页面

1
启动页面的命令:adb shell am start -n com.taobao.taobao(包名)/com.taobao.tao.welcome.Welcome(activity名)

  

 

e、上面是获取指定的页面的activity,这里我们介绍下如何获取到启动界面

首先执行下面的命令

1
先执行adb命令:adb logcat ActivityManager:I | findstr "cmp"

  

然后启动应用,出现的第一个cmp就是启动页

 

7、adb清理app缓存

1
2
3
4
5
adb shell pm list packages   #获取当前手机上安装的所有应用
adb shell pm list packages -s #获取当前手机上安装的系统应用
adb shell pm list packages -3  #获取当前手机的第三方应用
 
adb shell pm clear 包名        #清理的应用的缓存

  

 

8、adb如何执行安卓的内部命令

1
adb shell linux命令

  

 

9、adb命令在pc和手机间传输文件

1
2
3
adb pull /sdcart/aaaa.txt ./    #手机到电脑到 pull文件
 
adb  push "C:\Program Files\python\Scripts\pip.exe" /sdcard/    #电脑到手机,push

  

 

 

四、adb高级用法

1、adb查看日志

a、安卓的日志级别

 

b、查看日志的命令
1
adb logcat   #默认的每一列的是:日志的时间、父进程、子进程、日志的级别、日志的tag、日志的内容

 

 

c、查看日志常用参数

 

d、日志的过滤参数(过滤某个tag的某个级别以上的日志)

 

1
adb logcat SntpClient:D "*:S"   #过滤SntpClient模块D以及D级别以上的日志  ,*:S的意思是其他的日志都不要显示

  

 

 

 

2、adb模拟按键操作

a、根据坐标来做点击操作

在手机的开发者选项中打开“指针位置”

 

1
adb shell input tap x坐标 y坐标(根据坐标点击,点下去抬起来)

  

 

b、input输入框操作
1
输入框的输入,鼠标先要放到输入框中:>adb shell input text 13925293887

  

c、滑动操作
1
滑动:adb shell input swipe 初始x坐标,初始y坐标,结束x坐标,结束y坐标,滑动用的时间(单位毫秒)

  

e、模拟按键操作
1
2
3
4
5
6
adb shell input keyevent 4(返回上一步操作)
adb shell input keyevent 3(返回主页)
 
1、官方文档使用,后面的命令就会执行通话键:adb shell input keyevent KEYCODE_CALL
 
2、官方文档说明,后面的命令就会执行相机键:adb shell input keyevent KEYCODE_CAMERA

  其他按键说明:https://developer.android.com/reference/android/view/KeyEvent

1
<em id="__mceDel"><br><br>3、adb获取安卓的性能指标<br><br>a、获取cpu的信息</em>
1
获取cpu的使用情况:>adb shell dumpsys cpuinfo,后面加包名可以获取应用的资源占用情况

  

b、获取内存的信息
1
获取内存的使用情况:>adb shell dumpsys meminfo,后面加包名可以获取应用的资源占用情况

  

c、同样可以查看top命令
1
adb shell top

  

d、获取电池的状态信息
1
adb shell dumpsys battery

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Max charging current: 20000000  #最大充电电流;mA
 
health: 2      #电池健康状态:只有数字2表示good
 
status: 2      #电池状态:2:充电状态,其他数字为非充电状态
 
present: true   #电池是否安装在机身
 
level:81          #电量:百分比
 
scale: 100    #电池当前可用的百分比
 
voltage: 4108   #电池电压
 
temperature: 353  #电池温度,单位是0.1摄氏度
 
technology: Li-poly  #电池种类

  

 

4、monkey的用法

a、基础命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
1、添加100个事件数:adb shell monkey 100
 
 
#会随机选n个应用,然后做各种动作
 
 
 
2、只对具体的某个某几个app做monkey测试,其中-p可以写多个,每个可以接一个应用的包名:
 
adb shell monkey -p org.mozilla.firefox 100
 
 
3、设置事件和事件的相隔多少毫秒:
 
adb shell monkey -p org.mozilla.firefox --throttle 100 100
 
 
4-s选项设置种子数,相同的种子数可以做回放seed可以看到本次monkey的种子数:
 
 
adb shell monkey -p org.mozilla.firefox -s 3456789 --throttle 100 100

  

b、事件种类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
--pct-touch
触摸事件<br>
--pct-motion
滑动事件<br>
--pct-trackball
轨迹球事件<br>
--pct-nav
导航事件,比如输入设备上、下、左左、右键<br>
--pct-majornav
主要导航事件,,比如中间键、返回键、菜单键
 
--pct-syskeys
系统按键事件,比如HOME键、BACK建、拨号键及音量键<br>
--pct-appswitch:
activity之间的切换
 
--pct-pinchzoom:
缩放事件
 
--pct-rotation
屏幕旋转事件<br>
--pct-flip
键盘事件
 
--pct-anyevent
任意事件

  

c、可以设置不同事件类型的比例,这里需要注意(设备的比例要小于等于100%)

 

 

d、设置monkey忽略异常

 

1
2
3
4
5
6
7
8
9
--ignore-crashes  #忽略奔溃异常
--ignore-timeouts #忽略超时异常
--ignore-security-exceptions #忽略安全异常
--kill-process-after-error   #发生错误后直接杀掉进程
--dbg-no-events   #初始化启动的activitye,但是不产生任何事件
--hprof   #指定该项后在事件序列发送前后会立即生成分析报告
--moitor-native-crashes   #跟踪本地方法的奔溃问题
--wait-dbg   #直到连接了调试器才执行monkey测试
-bugreport    #当ANR,系统无响应。crash的时候获取bugreport

  

e、monkey日志

 

1
2
3
adb shell monkey 10 > 文件路径
 
adb logcat -v time "*E" > 文件路径

  

posted on   bainianminguo  阅读(533)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
历史上的今天:
2018-11-19 bs4.BeautifulSoup的基础用法
2017-11-19 Django基础学习六之渲染

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示