全网最全ADB命令,没有之一-程序员宅基地

技术标签: Android开发  # Android自动化测试  adb命令  Android 日志  android  adb  

和优秀的人在一起,会被他的趣味、热情所感染、喜欢探索世间的一切事物,并从中得到感悟与成长。

注意:本篇文章中所展示的案例是在Mac book 运行。

1.ADB概念

ADB,全名Android Debug Bridge,是Android提供的一个通用的调试工具,是一个C/S架构的命令行工具,通过这个工具,使得我们的PC能够和Android设备来进行通信。

1.2 ADB的工作原理:

adb包含三个部分:

a. Client端:运行在开发机器中,用来发送adb命令,比如电脑

b. Daemon守护进程:运行在调试设备,比如手机、模拟器中,用来接收并执行adb命令

c. Server端:运行在开发机器中,用来管理Client端和手机端Daemon之间的通信。

当在电脑命令行窗口中输入adb 命令时,会先执行adb客户端,客户端拿到命令之后,会发送给adb服务端,server再将命令传给Daemon,最后在手机上执行。假如在手机上安装一个应用,会有一个返回信息,会将信息传递给adb服务器,adb 在给客户端,最后显示在命令行。

总结:

a.client端将命令发送给server端

b.server端会将命令发送给daemon端

c.daemon端进行执行

d.将执行结果,返回给server端

e.server端将结果再返回给client端

2.准备工作

2.1 打开调试模式

为了使用adb来控制、调试Android设备,我们需要使用USB数据线将PC和Android手机设备进行连接,当然必须要将手机设备的USB调试模式打开。

Android模拟器种类:
- Android Studio emulator(官方),要根据电脑的性能进行使用
- genymotion(国外的软件,需要访问外网才可以使用)
- mumu、雷电、夜神、逍遥等第三方模拟器(强烈推荐第三方软件)

2.2 安装adb

1)安装JDK

2)Mac中安装ADB命令

brew install android-platform-tools

3.ADB相关指令牛刀小试

3.1 简单指令

1)验证adb 是否安装成功

adb help
或者
adb --help
会出现adb的版本和帮助信息

2)开启或者关闭服务

adb start-server:开启adb服务
adb kill-server:关掉adb服务

3)adb devices : 查看电脑是否连接设备

adb devices
或者
adb devices -l
或者
adb get-state

使用该指令将返回设备状态信息,该状态信息包含三种

  • devices状态:表示移动设备或者模拟器已经连接到adb服务器上
  • offline状态:表示移动设备或者模拟器没有连接到adb服务器或者没有响应
  • no devices状态:表示没有设备或者模拟器连接

3)adb install :安装

第一种情况:当只有一台设备时

a. adb install apk路径
b. adb install -r :覆盖原来安装的软件,并保留数据
c. adb install-multiple demo1.apk demo2.apk
d. adb install -t demo1.apk : 如果在安装中,遇到Failure [INSTALL_FAILED_TEST_ONLY installPackageLI],则使用该命令
e. adb install -d demo.apk :允许版本代码升级
f. adb install -g demo.apk :授权所有运行时权限

第二种情况:当有多台设备时,使用-s 序列号 进行指定设备

adb -s 序列号 install apk路径

4)adb uninstall :卸载

adb unstall demo.apk
卸载设备中的应用,并希望保留配置和缓存文件
adb -s 序列号 shell pm uninstall -k 包名

5)adb pull : 将移动设备中的文件传送到PC上

adb pull 移动设备路径 PC路径

6)adb push :将PC中的文件传送到移动设备端

adb push PC路径 移动设备路径
adb push PC路径 /sdcard/

7)adb logcat:查看和跟踪系统日志缓冲区的信息,

adb logcat >/Users/xxxx/demo.log
或者
adb -s 序列号 logcat >/Users/xxxx/demo.log
日志等级,优先级从低到高分为以下几种:

V——Verbose(最低等级,开发调试中的一些详细信息,仅在开发中使用,不可再发布产品中)

D——Debug(调试,用于调试的信息,可以在发布产品中关闭,比较常见)

I——info(信息,一般提示性的信息)

W——Warning(警告)

E——Error(错误,已经出现可影响运行的错误,比如应用crash时输出的日志)

在 E级别中可以搜索这个关键字:fatal exception

ANR全名Application Not Responding,也就是应用无响应当操作在一段时间内系统无法处理时,系统层面会弹出ANR对话框

在日志中查询:ANR in

在查到ANR in 之后 上一行会有

查看日志常用的参数

adb logcat -v time 打印时间
adb logcat -v color 使用不同的颜色来显示每个优先级
adb logcat -f <filename> 将日志输出到文件(文件存在手机上),例如,adb logcat -f /sdcard/log.log
adb logcat > log.log 保存日志到PC上
adb logcat -c 清理已存在的日志
adb logcat *:W 打印Warning以上级别的日志
adb logcat ActivityManager:D  '*:S' 过滤tag 为ActivityManager,level为Debug及以上级别的日志(S表示无记载silent,最高优先级,绝不输出任何内容)

3.2 高级指令——adb shell指令讲解

Android系统是基于Linux系统开发的,支持常见的Linux命令,这些命令都保存在手机“/system/bin”文件中,如下图所示:
在这里插入图片描述

1)显示手机当前目录的所有内容

adb shell ls
或者分开使用
~~adb shell
~~ls
注意:使用exit退出提示符
如果在操作过程中出现没有权限的问题,则需要切换root用户
su root

2)查看电池电量的相关信息

adb shell dumpsys battery 

描述信息:
AC powered: false        //false表示没有使用AC电源供电
USB powered: true        //true表示使用USB电源供电
Wireless powered: false     //false表示没使用无线电源
status: 2             //2表示电池正在充电,1表示没充电
health: 2             //2表示电池状态优秀
present: true           //true表示已安装电池
level: 42             //电池百分比
scale: 100             //满电量时电池百分比为100%(不确定是否正确)
voltage: 3868           //电池电压
temperature: 330         //电池温度为25摄氏度
technology: Li-ion        //电池类型为锂电池

在这里插入图片描述

3) 查看无限网络信息

adb shell dumpsys wifi
由于该指令输出的信息很多,所以在此加入参数,当输出信息在显示满一页的时候就暂停输出
如果想再继续输出,则需要按空格键继续显示下页内容。按“Q”停止显示后续输出信息。
adb shell dumpsys wifi | more

4)查看电源管理相关信息

adb shell dumpsys power
含义:可以判断手机是否处于锁屏状态

根据关键信息进行查询,仅输出屏幕关闭时间的设置信息
windows设置:
adb shell dumpsys power | findstr "mScreenOffTimeoutSetting"
Linux设置:
adb shell dumpsys power | grep "mScreenOffTimeoutSetting"

5)am

am 全称为Activity Manager ,可以使用am去模拟各种系统的行为
adb shell am start com.taobao.taobao/com.taobao.tao.TBMainActivity

6)获取包名和界面名

包名(Package,具有唯一性)

界面名(activity)

 adb shell dumpsys window | grep mFocusedApp
 或者
 adb shell "dumpsys window | grep mCurrentFocus"

在这里插入图片描述

7)获取启动时间——adb shell am start -W 包名/界面名

➜  ~ adb shell am start -W com.qiniu.pili.droid.shortvideo.effect.demo/com.qiniu.pili.droid.shortvideo.demo.activity.MainActivity
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.qiniu.pili.droid.shortvideo.effect.demo/com.qiniu.pili.droid.shortvideo.demo.activity.MainActivity }
Status: ok
Activity: com.qiniu.pili.droid.shortvideo.effect.demo/com.qiniu.pili.droid.shortvideo.demo.activity.MainActivity
ThisTime: 289
TotalTime: 289
WaitTime: 311
Complete

以毫秒为单位
点击图标然后松开,这个时间是系统时间(分配内存和CPU的时间),应用application等待资源启动的时间
ThisTime:为界面启动耗时
TotalTime:应用自身启动耗时=ThisTime + 应用application等资源启动时间
WaitTime:系统启动耗时=TotalTime + 系统资源启动时间

8)adb shell pm list packages 列出包名

- 列出所有的包名
	adb shell pm list packages
- 列出通过第三方安装的包
	adb shell pm list packages -3
	
pm全称为package manager ,可以使用pm命令模拟Android行为或者查询设备上的应用。

9)获取手机Android系统各个分区的相关信息
在这里插入图片描述
10) 清除应用数据及缓存
pm 表示package management

adb shell pm clear <包名>

4. adb 模拟手机按键

相关文档:https://developer.android.com/reference/android/view/KeyEvent

  1. 打开“指针位置” 设置
    设置——开发者选项——指针位置
  2. 执行 adb shell input 命令
    在这里插入图片描述
- 模拟点击事件
adb shell input tap x坐标 y坐标
adb shell input tap 528 1539

- 输入文本
首先需要把光标移到输入框,然后执行以下命令
adb shell input text zengzengzeng

- 模拟滑动事件
adb shell swip <起点x> <起点y> <终点x> <终点y> <滑动时长>
adb shell input swipe 528 1539 528 1300 2000
2000为滑动时间,单位是毫秒

- 返回键
adb shell input keyevent 4

- 返回home键(置应用于后台)
adb shell input keyevent 3

- 音量放大
adb shell input keyevent 24

- 音量缩小
adb shell input keyevent 25

5. CPU使用情况

1)查看当前系统CPU使用情况:

adb shell dumpsys cpuinfo
获取的是一段时间的均值

在这里插入图片描述
2)进程占用情况

adb shell top 
adb shell top | grep "包名" —— 查看某个包的一些性能
adb shell top -d 1 |grep "包名"

3)内存使用情况

adb shell dumpsys meminfo

小伙伴们也可以关注公众号“小曾的IT之旅”,回复关键词“adb”,即可获取相应资料

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42182599/article/details/120654697

智能推荐

使用Dev-C++调试,变量的值 not found in current context,下一步是灰色无法点击-程序员宅基地

文章浏览阅读1w次,点赞10次,收藏13次。在学习使用Dev-C++进行调试时,设断点之后遇到了变量的值 not found in current context,下一步等是灰色无法点击这样的问题,如图。(1)在百度后了解到,应把工具->编译选项->代码生成/优化->连接器中的产生调试信息项改成YES,如图。这样就应该解决了问题。(2)但我还无法成功调试,后来发现是自己粗心,保存时将C语言的代码保存成.cpp为后缀而不是.c。.c代表C的源程序,.cpp代表c++源程序。重新保存成后缀为.c,就可以正常调试了。.._not found in current context

JS获取中文拼音首字母,并通过拼音首字母快速查找页面内的中文内容-程序员宅基地

文章浏览阅读5k次。实现效果:图一:图二:此例中输入的中文字符串“万万保重”,有三个字是多音字,所以alert对话框中显示的是多种读音的组合;如何实现?如何实现通过拼音首字母快速查找页面内的中文内容呢?过程原理是这样的:例如要对一些人名进行快速查找,当页面加载完成后,对所有人名建立一个索引,生成拼音首字母与姓名的对应关系;然后监听键盘事件,当用户按下键盘时,根据键值得到按下的是哪个字母,然后遍历索引中..._kjmypxjynwmjjm

Field类详解-程序员宅基地

文章浏览阅读4.1k次。//AccessibleObject 类是 Field、Method 和 Constructor 对象的基类。 public class AccessibleObject implements AnnotatedElement { /* * 1、实现了AnnotatedElement对注解支持的相关方法 * 2、提供访问控制 /_field类

数据可视化_数据可视化博客-程序员宅基地

文章浏览阅读1.4k次。数据可视化ECharts_数据可视化博客

初遇C#之HelloWorld程序_.net framework helloworld c#-程序员宅基地

文章浏览阅读4.8k次。一、开发环境 C#是一种面向对象的、运行于.NETFramework之上的高级程序设计语言。由于C#非常依赖于.NETFramework所以Win7就自带了.NETFramework3.5,Win8自带了.NETFramework 4.0。因此我可以先不使用VS IDE, 因为刚开始还是徒手建立自己的天下比较有好处,等到对基本的框架有了解之后,再来使用VS才能做到的心应手。否则_.net framework helloworld c#

vuecli3代码压缩混淆使用uglifyjs压缩JS_使用uglifyjs混淆vue3代码-程序员宅基地

文章浏览阅读4k次,点赞2次,收藏4次。、安装 “uglifyjs-webpack-plugin”cnpm i --save uglifyjs-webpack-plugin没有安装cnpm的同学可以用npm2、在项目根目录下创建一个名为 vue.config.js的文件3、在vue.config.js中引入uglifyjs-webpack-pluginconst UglifyPlugin = require('uglifyjs-webpack-plugin')4、在vue.config.js中配置uglifyjs-we_使用uglifyjs混淆vue3代码

随便推点

nodeJS之流stream_nodejs stream-json-程序员宅基地

文章浏览阅读1k次。概述  流(stream)在Nodejs中是处理流数据的抽象接口。stream模块提供了基础的API 。使用这些API可以很容易地来构建实现流接口的对象。Nodejs提供了多种流对象。 例如,HTTP请求和process.stdout都是流的实例  流可以是可读的、可写的,或是可读写的。所有的流都是 EventEmitter 的实例。  尽管所有的 Node.js 用户_nodejs stream-json

Elasticsearch(9) --- 聚合查询(Bucket聚合)_elasticsearch nest bucket聚合-程序员宅基地

文章浏览阅读457次。Elasticsearch(9) --- 聚合查询(Bucket聚合)系统小说 www.kuwx.net上一篇讲了Elasticsearch聚合查询中的Metric聚合:Elasticsearch(8) --- 聚合查询(Metric聚合)说明 本文主要参考于Elasticsearch 官方文档 7.3版本。 Bucket Aggregations概念:Bucket 可以理解为一..._elasticsearch nest bucket聚合

【大数据】三、相似项发现(Jaccard、Shingling、MinHashing)_shingling的作用-程序员宅基地

文章浏览阅读943次,点赞2次,收藏8次。文章目录1. Jaccard1.1 例题2. shingling2.1 k-shingle2.2 k 值大小的选择2.3 例题3. MinHashing3.1 minhashing 作用:压缩3.2 算法步骤、例题4. LSH 行条化策略的分析5. 距离测度1. Jaccard定义 Jaccard 相似度计算公式:定义 Jaccard 距离:1.1 例题不重复重复 (bag),最大值为 1 / 22. shingling将文档用短字符集合来表示2.1 k-shinglech_shingling的作用

EditText电话号码格式_edittext中的电话格式-程序员宅基地

文章浏览阅读514次。看了网上一些文章,自己改了改,小白/** * * @author Damon * 电话格式EditText */public class PhoneNumberEditText extends EditText implements TextWatcher { public PhoneNumberEditText(Context context, AttributeSet at_edittext中的电话格式

Windows7/10电脑怎么设置自动关机?实测有效!_windows10如何设置关机时间-程序员宅基地

文章浏览阅读248次。目录1. 桌面 — 右键点击此电脑(计算机)— 管理2. 计算机管理 — 任务计划程序 — 创建基本任务3. 创建基本任务向导3.1 名称:自动关机3.2 触发器:每天3.3 每日:设置每天在几点关机3.4 操作:启动程序3.5 启动程序:3.6 完成在网上搜索,发现很多设置自动关机的教程,要么是利用了电脑自动关机软件,要么有一些小问题。其实利用电脑的“定时任务”就可以轻松搞定电脑自动关机。这里图文记录一下操作的全部过程,小白照着做也能搞定Windows自动关机!1. 桌面 — 右键点击此电脑(计算机)_windows10如何设置关机时间

MATLAB算法实战应用案例精讲-【神经网络】激活函数:Swish(附python代码实现)_matlab bp 激活函数swich-程序员宅基地

文章浏览阅读1.5k次。Swish是谷歌在17年提出的一个激活函数,形式非常简单,几乎就是 sigmoid 和 ReLU 的拼凑,具备无上界有下界、平滑、非单调的特性,Swish 在深层模型上的效果优于 ReLU。例如,仅仅使用 Swish 单元替换 ReLU 就能把 Mobile NASNetA 在 ImageNet 上的 top-1 分类准确率提高 0.9%,Inception-ResNet-v 的分类准确率提高 0.6%。多种激活函数对比生物神经网络是人工神经网络的起源。_matlab bp 激活函数swich

推荐文章

热门文章

相关标签