◆版权声明:本文出自胖喵~的博客,转载必须注明出处。

  转载请注明出处:http://www.cnblogs.com/by-dream/p/4630046.html

写在前面的话


  感觉自己进入Android测试这行以来,虽然了解了不少Android的东西和自动化技术,但都比较零散。当然这也和半路入行,然后要快速的将自动化技术运用所学的业务上有关。于是决定利用工作之余的时间将Android测试相关知识进行一个整理,一来巩固一下自己学到的东西;二来可以让想学习Android测试的同学进行学习(希望能帮到新手)。

  由于我之前学的是C++没有学过Java,因此可能有些东西理解的有偏差,希望大家能批评指正。当然我会尽量用最浅显的话讲明白Android测试的。FAF7F0

什么是ADB


  何为ADB呢? 为什么手机和电脑之间用usb连接后,就可以电脑上通过应用宝或者豌豆荚等手机助手软件对手机进行操作?

  答案就是:因为这些都依赖于ADB。ADB就是连接手机和电脑通信的桥梁,只要这个桥梁建立起来了,那么你就可以通过电脑来控制你的手机了。

  即使你再讨厌英语,还是不得不向现实低头,乖乖的阅读下文档吧  http://developer.android.com/tools/help/adb.html

  如果你真的不愿意读,或者不会英语,那么我就解释一点吧,不过解释的终究没有谷歌的工程师写的文档全面,凑合着看吧。

  ADB 全称 Android Debug Bridge,我把它解释为“安卓调试的桥梁”,他是由三部分组成:

    1、客户端 client:运行在你的电脑上,你可以通过shell来调用起一个客户端。其他Android工具,例如ADT插件、DDMS都可以创建出一个客户端

    2、服务器 server:运行在你电脑的后台,负责管理client和daemon进行通信。

    3、守护进程 daemon:运行在模拟器或者Android设备的后台。

  但是它最终呈现给我们用的就是一个命令行的工具 ( command line tool ),通过它我们就可以和模拟器或者是Android设备进行通信。 它就在 <sdk>/platform-tools/ 这个目录下:

  

  每次启动客户端的时候,首先会检查服务器是否已经在后台运行了,如果没有,他就会启动server进程;

  如果server是开启的,server就会绑定在 TCP 的 5037 端口然后监听客户端发出来的命令;

  所有的client都是通过 5037 端口和server进行通信的。

 USB调试


  当我们通过USB数据线来使用ADB的时候,通常需要将 "设置"-"开发者选项"-"USB调试" 这个框勾上。

  需要注意的是:在有些 Android 4.2.2版本以上,是隐藏了“开发者选项”的,因此需要在 “设置”-“关于手机”-“Android版本” 在这里连续点击7次,然后“开发者选项”就出现了。突然发现好多手机的这里点击后都有意想不到的效果,你愿意把你手机这里点击7次后出现的内容截图发到我的留言板吗?

ADB 命令


  连上手机,配置好了环境变量(直接搜索“adb环境变量配置”会出一大堆)就可以使用命令了。下面列举一下常用的命令

adb devices    查看当前连接设备

 显示当前连接的一个序号和状态:

  

adb install <path_to_apk>    安装apk文件

  给的Apk的路径是当前PC端文件所在的路径:

  

adb -s <serialNumber> <command>    指定设备执行命令

  serialNumber就是adb devices中的第一列的信息

  

adb pull <remote> <local>   将Android设备上的文件拉到本地

  一般Android手机默认的存储路径是“/mnt/sdcard/”,我们把这里面的一个文件拉到C盘

  

  然后我们去电脑的C盘下去看一眼:

通过Adb pull 命令复制出来的文件

adb push <local> <remote>      把本地文件复制到Android设备上

  和 adb pull 刚好是一对相反的命令。  

  

adb start-server    启动adb的server
adb kill-server 关闭adb的server

  有点时候adb在没有响应的时候,我们需要重启adb,不过这种情况一般较少。

  

adb shell [shellCommand]       运行shell命令

  众所周知,Android是基于linux内核的,因此可以在Android的系统上运行shell命令

  通过adb shell 可以进入手机的系统,然后执行一些linux的命令

  

  当然也可以不进入系统,直接使用命令

  

  例如adb shell下安装和卸载命令是:

  pm uninstall com.tencent.qq
  pm install -r "/data/local/tmp/com.tencent.qq"

【Android测试】【第一节】ADB——初识和用法的更多相关文章

  1. delphi 线程教学第一节:初识多线程

    第一节:初识多线程   1.为什么要学习多线程编程?   多线程(多个线程同时运行)编程,亦可称之为异步编程. 有了多线程,主界面才不会因为耗时代码而造成“假死“状态. 有了多线程,才能使多个任务同时 ...

  2. 第一节,TensorFlow基本用法

    一 TensorFlow安装 TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理.Tsnsor(张量)意味着N维数组,Flow(流)意味着基 ...

  3. Android学习第一天-adb常用命令

    平时开发android应用 的时候,我们都会用到包含在Android SDK中一系列的工具,或许我们通过Eclipse去调用,又或许,我们自己通过打开终端进行手动输入并且执行,下面我们来一起学习下这些 ...

  4. Android事件处理第一节(View对Touch事件的处理)

    http://ipjmc.iteye.com/blog/1694146 在Android里Touch是很常用的事件,尤其实在自定义控件中,要实现一些动态的效果,往往要对Touch进行处理.Androi ...

  5. android课程第一节(TextView控件使用)

    TextView控件使用 一.TextView基本使用(创建方式) 1.在程序中创建TextView对象 如下代码: @Override protected void onCreate(Bundle ...

  6. Python3 Selenium自动化web测试 ==> 第一节 起始点之Python单元测试框架 unittest

    前置步骤 Python版本:3.6.4 selenium版本:3.11.0 >>> import selenium >>> help(selenium) IDE:P ...

  7. 第一节:初识pandas之Series(上)

    Series线性的数据结构, 也是一个一维数组. 声明:本人Python小白,以下代码只是个人学习的过程,仅仅记录一下学习的点点滴滴,若有错误,还望指正. (注:该代码均在jupyter notebo ...

  8. delphi 线程教学第一节:初识多线程(讲的比较浅显),还有三个例子

    http://www.cnblogs.com/lackey/p/6297115.html 几个例子: http://www.cnblogs.com/lackey/p/5371544.html

  9. 【Android测试】【第九节】MonkeyRunner—— 初识

    ◆版权声明:本文出自胖喵~的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/4836815.html 不得不说两句,过了这么久才再次更新博 ...

随机推荐

  1. 数学 ACdream 1196 KIDx's Triangle

    题目传送门 /* 这道题花了好长时间AC,思路有,但是表达式少写了括号一直乱码,囧! 注意:a==0时要特判:) */ #include <cstdio> #include <alg ...

  2. 转:.NET获取当前方法名或调用此方法的方法名

    Introduction Before .NET, we were always looking for a way to log current method name in a log file ...

  3. ZOJ1654 Place the Robots(二分图最大匹配)

    最大匹配也叫最大边独立集,就是无向图中能取出两两不相邻的边的最大集合. 二分图最大匹配可以用最大流来解. 如果题目没有墙,那就是一道经典的二分图最大匹配问题: 把地图上的行和列分别作为点的X部和Y部, ...

  4. webkit浏览器渲染影响因素分析

    前言:浏览器的渲染对性能影响非常大,特别是在移动端页面,在宏观上,我们可以参考雅虎那20几条军规来操作,但在微观渲染层面,实际还没有一套相对成型的理论做为依据. 本文只是抛砖引玉,带大家进入微观的优化 ...

  5. Zepto源码注释

    /* Zepto v1.0-1-ga3cab6c - polyfill zepto detect event ajax form fx - zeptojs.com/license */ ;(funct ...

  6. MongoBD解决没有自动增长ID 的问题

    Sequence Numbers:序列号传统的数据库中,通常用一个递增的序列来提供主键,在 MongoDB中用 ObjectId 的来代替,我们可以通过如下的函数来获取主键 function coun ...

  7. tomcat配置虚拟目录映射

    本文主要介绍web虚拟目录映射的两种常用方法及配置默认web应用的方法 一.在Server.xml中进行配置 在<Host>元素中添加子元素<Context path=" ...

  8. Stack and Heap 堆和栈的区别

    在和计算机内存打交道时,我们一定会碰到堆和栈,这两个东西很容易搞混,那么现在就来梳理一下二者的关系. 栈是用来静态分配内存的而堆是动态分配内存的,它们都是存在于计算机内存之中. 栈的分配是在程序编译的 ...

  9. [ZT] 几大酒店集团美国Co-Brand信用卡比较(三)如何选择最适合你的酒店联名信用卡

    原文地址: http://www.3798.com/archives/596.html 接着对我们这种不是某个酒店忠诚客户的用户选择卡片进行分析.首先要强调的是,我们比较的是信用卡项目本身,而不是酒店 ...

  10. 自制Chrome拓展

    淘宝试用自动点击: 谷歌其实就是一些html+css+js+静态资源.但是里面有一个特别的配置文件manifest.json.该文件和Android的那个androidmanifest.xml类似,记 ...