什么是ADB

adb的全称为Android Debug Bridge,就是起到调试桥的作用。通过adb我们可以方便调试Android程序。

环境搭建

1需要java环境:

  安装完JDK需要配置环境变量:

    JAVA_HOME::JDK的安装目录

    PATH:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin

    CMD命令验证环境是否配置完成:java -version

2需要安卓JDK

https://developer.android.google.cn/studio/releases/platform-tools

CMD命令验证环境是否配置完成:android -version

ADB命令

如何链接手机设备

1模拟机
  Adb connect 127.0.0.1:7555 这个可以通过模拟器官网查询 不同模拟器不同端口
  Adb devices
2真机
  手机处于调试模式:安卓 找到版本 点击7下 就会进入开发者模式 打开usb调试
  电脑需要安装手机驱动:豌豆荚自动下载驱动(用完就删,容易占用端口)
查看状态
  adb devices :device正常 offline链接无响应 unauthorized未授权
  adb get-state

关闭服务
  Adb kill-server

安装
  Adb install <apk路劲>
  Adb install -r  <apk路劲> 覆盖安装

  指定设备:Adb -s <指定设备 可以通过adb devices查看 当有多台设备>install <apk路劲>

卸载

  Adb uninstall

查看包和活动页

注:操作系统不一样命令需要区分,mac、linux用grep,Windows用findstr

查看当前活动页

1 先打开页面

2 adb shell “dumpsys window | grep mCurrentFocus”

查看启动页

adb logcat ActivityManager:I | grep “cmp”

快速启动

adb shell am start -n [包名 / 页面名]

查看性能数据

查看当前系统 CPU 使用情况 : adb shell dumpsys cpuinfo 是某一时间之内的占有情况

查看当前系统的内存 : adb shell dumpsys meminfo 通过这个情况查看当前应用内存占用率。可以分析 物理内存、虚拟内存的占用量。
查看某个应用的内存 : adb shell dumpsys meminfo 应用名。 通过定期采集数据 来分析代码当中是否会有内存问题 例如内存泄漏 ( 内存长期占有量较高,没有及时回收 )
进程:

top 命令 : linux 使用 top 命令来获取性能指标的 ,安卓也可用
adb shell top 来获取各个系统进程占有情况(实时)
过滤 某个包的性能指标 : adb shell top | grep 包名
固定时间 每隔 1 s : adb shell top -d 1 | grep 包名

日志

打印默认日志数据 : adb logcat

使用不同颜色来打印每个优先级 : adb logcat -v color
将日志输出到文件中 : adb logcat -f <文件地址 手机端的> 可以通过 pull 上传到电脑查看.
保存日志到电脑文件上 : adb logcat > ~/Downloads/android.log. > 表示重定向
清理已缓存的日志 : adb logcat -c

文件传输

电脑到手机上传输(电脑往外推) :adb push 电脑路径 设备路径

手机文件拉取下来 :adb pull 设备路径 电脑路径

monkey压力测试

运行某个包(对某软件测试) : adb shell monkey -p 包名 事件数

打印详细日志 : adb shell monkey -v 事件数。 -vv 更加详细的日志 -vvv 最全面的日志

运行多个包 : adb shell monkey -p 包名 -p 包名 … - vvv 事件数

-s ,用于指定伪随机数生成器的seed值  
  命令:adb shell monkey -p 包名 –s seed值 执行次数

  如果seed值相同,则两次Monkey测试所产生的事件序列也相同的,示例:
  测试1:adb shell monkey -p com.kugou.android –s 1540475754297 100

--throttle ,用于指定用户事件的操作间隔时延,单位是毫秒

如果不指定这个参数,monkey会尽可能快的生成和发送消息

命令:adb shell monkey -p 包名 --throttle 3000 100

11种事件

设置事件比例 :会默认分配 ,但是 比如想测试点击事件较多,就可以设置点击比例大一点 --pct-touch 80 不超100%

忽略异常 : monkey就是想长时间运行, 可以在有异常的时候继续执行,如果遇到异常就可以保存到日志中

保存日志 :

  法一 : adb shell monkey 100 后面加 > 文件名字.log。查看: cat 文件名.log 有大量无用日志,占用空间
  法二 : adb logcat -v time ‘*:E’ > monkey.log 获取 error 级别日志

ADB命令快速入门的更多相关文章

  1. docker命令快速入门

    docker快速入门系列 Docker hello world hello world $ docker run ubuntu:15.10 /bin/echo "Hello world&qu ...

  2. 【MATLAB】常用命令快速入门,国赛加油

    矩阵运算 矩阵的基本生成 m1 = 1:5 % 生成行矩阵[1,2,3,4,5] m2 = 1:2:10 % 起点:步长:终点 [1,3,5,7,9] linspace(x1,x2,n) % 生成 n ...

  3. Git命令行之快速入门

    从头开始创建一个版本库,添加一些内容,然后管理一些修订版本. 有两种建立 Git版本库 的基础技术.第一:从头开始创建,用现有的内容填充它.第二:可以克隆一个已有的版本库.这里选择从一个空的版本库开始 ...

  4. 前端开发小白必学技能—非关系数据库又像关系数据库的MongoDB快速入门命令(2)

    今天给大家道个歉,没有及时更新MongoDB快速入门的下篇,最近有点小忙,在此向博友们致歉.下面我将简单地说一下mongdb的一些基本命令以及我们日常开发过程中的一些问题.mongodb可以为我们提供 ...

  5. Git快速入门和常用命令

    一.快速入门 本地初始化一个项目 首先,你需要执行下面两条命令,作为 git 的基础配置,作用是告诉 git 你是谁,你输入的信息将出现在你创建的提交中. git config --global us ...

  6. Linux快速入门教程-进程管理ipcs命令学习

    使用Linux系统必备的技能之一就是Linux进程管理,系统运行的过程正是无数进程在运行的过程.这些进程的运行需要占用系统的内存等资源,做好系统进程的管理,对于我们合理分配.使用系统资源有非常大的意义 ...

  7. [易学易懂系列|rustlang语言|零基础|快速入门|(25)|实战2:命令行工具minigrep(2)]

    [易学易懂系列|rustlang语言|零基础|快速入门|(25)|实战2:命令行工具minigrep(2)] 项目实战 实战2:命令行工具minigrep 我们继续开发我们的minigrep. 我们现 ...

  8. [易学易懂系列|rustlang语言|零基础|快速入门|(24)|实战2:命令行工具minigrep(1)]

    [易学易懂系列|rustlang语言|零基础|快速入门|(24)|实战2:命令行工具minigrep(1)] 项目实战 实战2:命令行工具minigrep 有了昨天的基础,我们今天来开始另一个稍微有点 ...

  9. git 快速入门及常用命令

    身为技术人员,都知道Git是干嘛的.从服务端角度它是代码仓库,可以多人协作.版本控制.高效处理大型或小型项目所有内容:从客户端讲,它能够方便管理本地分支.且与服务端代码的同步,从拉取.合并.提交等等管 ...

  10. Hello, Android 快速入门

    Hello, Android Android 开发与 Xamarin 简介 在这两节指南中,我们将 (使用 Xamarin Studio或 Visual Studio)建立我们的第一个 Xamarin ...

随机推荐

  1. Go微服务实战 - 从0到1搭建一个类Instagram应用(持续更新)

    概要 近几年各大移动应用基本都有社区Community(或动态Moments)的功能,展现形式各不相同,比如 国内的有:微博.朋友圈.抖音.小红书.keep.绿洲.即刻等 国外的有:Instagram ...

  2. C++面向对象编程之虚指针、虚表

    1.当编译器看到一个函数调用,有2个考量:静态绑定or动态绑定 静态绑定是"call xxx",xxx 是表示地址,call 是汇编语言的一个动作,它一定会调用到某个地址: 当符合 ...

  3. 微信小程序js-时间转换函数使用

    最近在做云开发博客小程序 采集微信发布的信息放入数据库会有createTime因此发现了不一样的地方 云函数可以直接使用 但是放到引导全局的app.js文件却是找不到该方法-->dateform ...

  4. surging 将推出社区版微服务平台

    前言 对于.NET大家并不陌生,有大批的企业选择.NET作为公司构建多种应用的开发平台,但是近几年随着微服务,大数据,移动端,物联网兴起,而后.NET社区生态没有跟上时代的步伐,已开始趋于没落,而其中 ...

  5. VS Code For Web 深入浅出 -- 进程间通信篇

    在上一篇中,我们一起分析了 VS Code 整体的代码架构,了解了 VS Code 是由前后端分离的方式开发的.且无论前端是基于 electron 还是 web,后端是本地还是云端,其调用方式并无不同 ...

  6. sql面试50题------(1-10)

    文章目录 1.查询课程编号'01'比课程编号'02'成绩高的所有学生学号 2.查询平均成绩大于60分得学生的学号和平均成绩 3.查询所有学生的学号,姓名,选课数,总成绩 4.查询姓"猴&qu ...

  7. 齐博x1模型里边钩子的创建与使用

    在模型里边的钩子创建与使用方法跟在控制器里边的钩子创建及使用方法是有所区别的在模型里边创建的钩子,你可以理解为执行一个函数,是无法调用模型里边的类的方法及属性的.比如系统文件\application\ ...

  8. .net core-利用PdfSharpCore和SkiaSharp.QrCode 添加PDF二维码页眉

    前序 由于去年的一个项目需要在PDF 添加公司二维码 ,当时在网上找了很多操作PDF方案,第一种Aspose.PDF,很遗憾 Aspose.PDF 有添加版权的背景还是页脚我忘记了,不适合公司项目,最 ...

  9. cmd中pip加速的方法

    临时加速: pip install dlib -i https://pypi.tuna.tsinghua.edu.cn/simple/ 永久加速: 在user文件夹里新建pip文件夹,再建pip.in ...

  10. AgileBoot - 如何集成内置数据库H2和内置Redis

    本项目地址: github: https://github.com/valarchie/AgileBoot-Back-End gitee: https://gitee.com/valarchie/Ag ...