adb从基础到进阶
一、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、连接设备
adb -d #指定当前唯一通过usb连接的安卓设备作为命令的目标 adb -e #指定当前唯一运行模拟器的安卓设备作为命令的目标 adb -s #指定相应的设备id作为命令的目标
2、查看设备的状态
adb devices #查看当前pc可以查询到的安卓的设备,并可以查看对应的设备的状态 adb get-state #作用同adb devices
设备的状态有以下几种
device 是属于正常的状态
offline 连接出现异常
unauthorized 设备未授权
3、连接模拟器(这里我们采用网易的木木模拟器)
adb_server.exe connect 127.0.0.1:7555
adb_server shell # 进入对应的安卓设备,我们知道,安卓底层其实也是linux

4、连接真机,需要有以下条件
a、手机需要进入调试模式(打开开发者模式,打开usb调试)
b、电脑需要安装对应的手机的驱动
c、手机通过usb和pc连接
5、通过adb安装和卸载app
adb install apk路径 #首次安装 adb install -r apk路径 #覆盖安装
adb uninstall 包名 #卸载,会删除缓存文件和配置文件 adb uninstall -k 包名 #卸载,不删除缓存文件和配置文件
6、adb获取当前的页面和启动页面
这里需要给大家介绍2个名词
package包:是安卓应用的唯一标识
Activity活动页:安卓应用的页面,一个页面就是一个activity
a、我们可以先在手机打开一个app
b、执行下面的命令,可以获取包名和当前的activity
adb shell "dumpsys window |grep mCurrentFocus"

包名:com.taobao.taobao
activity:com.taobao.tao.welcome.Welcome
c、其他查看包名的方法
adb shell pm list packages -3 #查看当前手机上安装的第三方的应用

d、获取到包名和activity后,我们就可以通过adb命令启动某个app的某个页面
启动页面的命令:adb shell am start -n com.taobao.taobao(包名)/com.taobao.tao.welcome.Welcome(activity名)

e、上面是获取指定的页面的activity,这里我们介绍下如何获取到启动界面
首先执行下面的命令
先执行adb命令:adb logcat ActivityManager:I | findstr "cmp"
然后启动应用,出现的第一个cmp就是启动页

7、adb清理app缓存
adb shell pm list packages #获取当前手机上安装的所有应用
adb shell pm list packages -s #获取当前手机上安装的系统应用
adb shell pm list packages -3 #获取当前手机的第三方应用 adb shell pm clear 包名 #清理的应用的缓存
8、adb如何执行安卓的内部命令
adb shell linux命令

9、adb命令在pc和手机间传输文件
adb pull /sdcart/aaaa.txt ./ #手机到电脑到 pull文件 adb push "C:\Program Files\python\Scripts\pip.exe" /sdcard/ #电脑到手机,push

四、adb高级用法
1、adb查看日志
a、安卓的日志级别

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

c、查看日志常用参数

d、日志的过滤参数(过滤某个tag的某个级别以上的日志)
adb logcat SntpClient:D "*:S" #过滤SntpClient模块D以及D级别以上的日志 ,*:S的意思是其他的日志都不要显示


2、adb模拟按键操作
a、根据坐标来做点击操作
在手机的开发者选项中打开“指针位置”

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

b、input输入框操作
输入框的输入,鼠标先要放到输入框中:>adb shell input text 13925293887
c、滑动操作
滑动:adb shell input swipe 初始x坐标,初始y坐标,结束x坐标,结束y坐标,滑动用的时间(单位毫秒)
e、模拟按键操作
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
3、adb获取安卓的性能指标
a、获取cpu的信息
获取cpu的使用情况:>adb shell dumpsys cpuinfo,后面加包名可以获取应用的资源占用情况
b、获取内存的信息
获取内存的使用情况:>adb shell dumpsys meminfo,后面加包名可以获取应用的资源占用情况
c、同样可以查看top命令
adb shell top
d、获取电池的状态信息
adb shell dumpsys battery
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、添加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、事件种类
--pct-touch 触摸事件
--pct-motion
滑动事件
--pct-trackball 轨迹球事件
--pct-nav
导航事件,比如输入设备上、下、左左、右键
--pct-majornav 主要导航事件,,比如中间键、返回键、菜单键 --pct-syskeys 系统按键事件,比如HOME键、BACK建、拨号键及音量键
--pct-appswitch: activity之间的切换 --pct-pinchzoom:
缩放事件 --pct-rotation 屏幕旋转事件
--pct-flip 键盘事件 --pct-anyevent 任意事件
c、可以设置不同事件类型的比例,这里需要注意(设备的比例要小于等于100%)

d、设置monkey忽略异常

e、monkey日志

adb从基础到进阶的更多相关文章
- jQuery基础---Ajax进阶
原文:jQuery基础---Ajax进阶 内容提纲: 1.加载请求 2.错误处理 3.请求全局事件 4.JSON 和 JSONP 5.jqXHR 对象 发文不易,转载请注明出处! 在 Ajax 基础一 ...
- python基础——面向对象进阶下
python基础--面向对象进阶下 1 __setitem__,__getitem,__delitem__ 把对象操作属性模拟成字典的格式 想对比__getattr__(), __setattr__( ...
- python基础——面向对象进阶
python基础--面向对象进阶 1.isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 ...
- Python基础与进阶
1 Python基础与进阶 欢迎来到Python世界 搭建编程环境 变量 | 字符串 | 注释 | 错误消除 他只用一张图,就把Python中的列表拿下了! 使用 If 语句进行条件测试 使用字典更准 ...
- Dart编程语言从基础到进阶1
Dart编程语言从基础到进阶Dart的语言的发展史以及Dart能做什么未来发展怎么样等等问题我们在这里是不讨论的.我相信既然选择了来学习它,那你内心基本已经认可了它,所以我们废话不多说直接进入主题. ...
- Git基础及进阶-系统总结
Git基础及进阶-系统总结 by 小强 2019-07-01 考虑到入职后不仅需要熟练掌握git的基本使用,在企业实际操作中还涉及一些进阶指令.作为一个程序员,熟练使用工具是一项基本技能,也是程序员的 ...
- 第4章 基础知识进阶 第4.1节 Python基础概念之迭代、可迭代对象、迭代器
第四章 基础知识进阶第十七节 迭代.可迭代对象.迭代器 一. 引言 本来计划讲完元组和字典后就讲列表解析和字典解析,但要理解列表解析和字典解析,就需要掌握Python的高级的类型迭代器,因此本节 ...
- Python_Mix*re模块基础方法,进阶,正则表达式的使用
re模块import re 基础方法 findall:匹配所有 ,每一项都是列表中的一个元素,返回的是列表 search只匹配从左到右的第一个,得到的不是直接的结果,而是一个变量,通过这个变量的gro ...
- Node.js学习看这里:基础、进阶、文章
Node.js是基于Chrome JavaScript运行时建立的一个平台,实际上它是对Google Chrome V8引擎进行了封装,它主要用于创建快速的.可扩展的网络应用. Node.js采用事件 ...
- WDA-文档-基础篇/进阶篇/讨论篇
本文介绍SAP官方Dynpro开发文档NET310,以及资深开发顾问编写的完整教程. 链接:http://pan.baidu.com/s/1eR9axpg 密码:kf5m NET310 ABAP ...
随机推荐
- 重温C#中的值类型和引用类型
在C#中,数据类型分为值类型和引用类型两种. 引用类型变量存储的是数据的引用,数据存储在数据堆中,而值类型变量直接存储数据.对于引用类型,两个变量可以引用同一个对象.因此,对一个变量的操作可能会影响另 ...
- 一款开源免费、更符合现代用户需求的论坛系统:vanilla
对于个人建站来说,WordPress相信很多读者都知道了.但WordPress很多时候我们还是用来建立自主发布内容的站点为主,适用于个人博客.企业主站等.虽然有的主题可以把WordPress变为论坛, ...
- 新一代开源流数据湖平台Apache Paimon入门实操-下
@ 目录 实战 写表 插入和覆盖数据 更新数据 删除数据 Merge Into 查询表 批量查询 时间旅行 批量增量查询 流式查询 时间旅行 ConsumerID 查询优化 系统表 表指定系统表 分区 ...
- 【Nacos篇】Nacos基本操作及配置
官方文档:https://nacos.io/zh-cn/docs/v2/ecology/use-nacos-with-spring-cloud.html 前置条件:SpringCloud脚手架 单机模 ...
- [ABC284F] ABCBAC
2023-01-09 题目 题目传送门 翻译 翻译 难度&重要性(1~10):2.5 题目来源 AtCoder 题目算法 Z函数,KMP,字符串Hash 解题思路 对于一个 \(f_S\),我 ...
- 三维模型OSGB格式轻量化顶点压缩主要技术方法分析
三维模型OSGB格式轻量化顶点压缩主要技术方法分析 在三维模型应用中,轻量化处理是提高数据传输效率.减少渲染时间和优化用户体验的重要手段.而OSGB格式是一种常见的三维模型格式,在进行轻量化处理时,顶 ...
- Web通用漏洞--sql注入
SQL注入 mysql注入目的:获取当前web权限 mysql注入--常规查询&union联合查询 MYSQL--Web组成架构 服务器搭建web服务可能存在多个站点搭建在一台服务器中,数据集 ...
- 《Kali渗透基础》05. 主动信息收集(二)
@ 目录 1:端口扫描 2:UDP 扫描 2.1:Scapy 2.2:nmap 3:半开放扫描 3.1:Scapy 3.2:nmap 3.3:hping3 4:全连接扫描 4.1:Scapy 4.2: ...
- GPT-4 到底能帮你干点啥?
目录 1. 从哪儿聊起呢 2. 潮起潮退 3. 遇强则强,遇我则-- 3.1 玩法一:辅助技能提升 3.2 镜头背后的故事 3.3 玩法二:综合"技术选型" 3.4 镜头背后的故事 ...
- API接口开发管理平台--多领域企业数字化管理解决方案
随着数字化时代的到来,企业需要进行数字化转型才能更好地适应市场需求和用户需求.而API接口则是数字化转型中的重要组成部分,可以帮助企业更好地管理信息,提高效率.本文将介绍挖数据解决方案--API接口开 ...