ADB看完这篇就够了for安卓开发/测试人员

【关于什么是ADB】

一般来说,我们礼貌性地会问,什么是ADB的,那就请大家看这一篇文章吧!
什么是ADB:

其实,ADB的原单词是android debug bridge,翻译过来就是安卓调试桥的意思。 到这里,我们知道意思就够了,请接着往下看吧!

操作系统的API结构
为了更好地理解ADB,这里的话先给大家介绍一个操作系统的API,任何操作系统,不管你是windows还是linux或者android系统,都一样。它们都有两套API,一套是SDK,用于开发应用软件的;另外一套则是Shell,用于执行命令的。不管是那套API,都是用于控制操作系统。

其实,我们平时使用电脑,操作的则是shell命令,只不过,windows把这些命令封装成了UI界面,通过点击,滚动,双击等事件来触发这个命令。

在android系统中,我们要控制android手机,那么我们可以通过adb指令来控制,本质上和有界面的控制是一样的。只是我们需要手动输入命令而已,就像早期的dos系统一样,是吧!看起来高大尚

如图所示:
ADB看完这篇就够了for安卓开发/测试人员

ADB可以做什么呢?
有了上面的了解,我们知道了ADB指令用于操作android系统的! 这里的话,我直接把平时比较经常使用到的一些用例给大家例出来吧!

我们在开发中,特别是系统开发中,我们需要对设备进行重启,对吧。所以我们可以做重启,关机的操作。
产生了log,我们需要从android系统里面拖拽出来到我们的开发机器上,这样子才方便我们查看日志,所以adb指令可以用于把文件推到android系统中,也可以把android系统里的文件拖拽到我们的IDE中。
当然啦,最常用到的则是我们需要安装一个应用到android系统中,这个时候,我们可以直接通过命令去安装,不需要复制到内存卡中,除了安装以外,当然还可以卸载啦,可以启动一个应用,清楚它产生的垃圾/缓存之类的。
除此之外,我们还可以进入android的shell,把android系统当成一个微型的linux系统使用。
这些都是我们比较常用的。

总结
ADB到底是什么呢?

其实ADB很简单,它只是一套用于调试android系统的指令集合。有了这套指令集合,方便我们开发与测试。

视频地址:
http://study.163.com/u/4381854733

【ADB的下载和安装】
对于ADB的下载和安装,有两种方式,一种是针对开发人员的,那么可以看我在网易云上的视频即可:
http://study.163.com/course/introduction/1003788008.htm#/courseDetail
对于测试人员来说,看这个就够了哈,后面我会录制成视频的:http://bbs.sunofbeaches.com/thread-5985-1-1.html

【ADB核心使用指令】
大家先看思维导图吧:
ADB看完这篇就够了for安卓开发/测试人员
下面,我们就分开来讲解:
【设备相关的指令】
设备查看
查看设备,一般我们用于查看设备是否已经连接上了,或者说,是否有打开USB调试,授权之类的。这个命令很简单:

adb devices

要注意的是,这个devices是复数,有s的呢,别漏掉了哈!

设备重新挂载
设备重新挂载,这个命令使用的时机是在对已经root的安卓系统文件进行操作前。执行重新挂载才有权限,否则会被禁止的。

adb remount

这里面要注意的是,即使remount了显示成功了,如果没有root的话,也是没有权限删除里面的文件的。

设备重启
重启很简单,就跟linux的命令一样,reboot,一般在自动化测试的时候 ,需要机器重启,或者死机了,就使用这个指令去让机器重新启动一次。指令如下:

adb reboot

设备关机
设备关机,设备关机的使用情况比较少,这里的话也跟大家说一下吧,这个指令是很简答的,跟前面一下,也是Linux指令:

adb reboot -p

处理命令执行时多个设备的情况
当我们在执行一个指令的时候 ,如果我们的电脑连接了多个设备的话,那么命令行窗口就会提示说有多个设备。这个时候 ,我们执行命令,就需要添加一个命令了,比如说,我们要对设备进行重启操作,但是有多个设备,那么我们的指令就是这么写了:

adb -s 设备名 reboot

这里面这个设备名,可以通过前面的查看设备来看到,查看设备的指令就是显示设备的名字和设备的状态的。

进入sehll
进入shell,也就是进入android系统的命令行窗口,用linux指令来控制android系统。但是不是所有的指令都可以用,因为android系统是一个精简版的linux系统。

adb shell

【常用的Shell指令】
前面,进入了shell脚本命令行以后就可以用Linux指令来操作android系统了。所以,常用的一些指令,我们还是必要掌握的。
目录的切换
目录的切换很简单,和windows的是一样的。

cd 目录地址绝对路径

cd ./文件夹名称/文件夹名称/…

上面这个点表示的是当前目录,跟windows下一样用就可以了

列出所有的文件
列出所有的文件,这个的话跟windows不一样了,windows是dir,而linux下面是 l 也就是list的意思,列表的意思。一般来说,我用ls 或者ll这两个

l

ls

ll

这三个都可以,列出文件列表。

复制文件
复制文件的话,用cp命令,它的原英文是copy的意思。

cp 文件的绝对路径包括名字和后缀 目标文件的路径包括名字和后缀

//如果是文件夹

cp -r 文件夹的绝对路径包括名字和后缀 目标文件夹的路径包括名字和后缀

删除文件/文件夹
删除文件的话,要注意的,如果是删除文件,直接是rm 原单词是remove 的意思,删除的意思。相关的参数的,-r删除文件夹 -f 强制删除force的意思。

rm 文件绝对路径包括名字和后缀//这个需要再次确认的

rm -f 文件绝对路径包括名字和后缀 //这个不需要确认,直接删除

rm -rf 文件夹的绝对路径//强制删除某一个文件夹

文本内容的查看
文本内容查看,这个有时会用得到,这个命令是cat,其实LLinux下有好多查看文本的命令,比如说用less more之类的也可以,甚至是用vi也可以。这里的话,给大家看一下,如何去查看已经连接的wifi密码:

cat /data/misc/wifi/*.conf

【文件操作】
对于文件的操作,推入和拖出,就两个,一个是pull拉的意思,从android操作系统里头把文件拉出来,或者说拖出来。push是推的意思,也就是把文件从本地推送到android操作系统里头去。但是要注意的是,这是adb指令,不是android的shell指令哦,不需要进入到shell里头哈!

把文件推入android操作系统

adb pull 本地文件路径(可以直接拖过来) android系统内部路径

把文件从android系统中拖出来

adb pull android系统里目标文件/文件夹绝对路径 本地的绝对路径/当前路径

【log文件的捕捉】
对于log的捕捉,这里我不进行细分了,也不建议大家用这个指令去过滤日志之类的,因为有工具,为什么不使用工具呢,对吧!那么,这个命令什么时候用呢,一般是测试人员使用比如说,在测试之前进行捕捉log,这是必要的,比如说,我要知道前应用的包名是什么,当然啦,这个是妙用了。

先看命令:
adb logcat > 路径/test.log

这里面这个指令是用捕捉log,并且把它输出到本地上。一般为了方便,我们就是放在当前路径的。怎么在当前文件夹或者路径下打开cmd命令行呢。按着键盘的shift键,然后右键—在当前目录下打开命令行。
再举一个例子,找到当前运行程序的包名:
步骤:
把当前应用退到后台(按Home键)
在命令行输入以下指令:

adb logcat | grep START

  1. 打开目标应用
    就可以看到包名啦:
    ADB看完这篇就够了for安卓开发/测试人员
    【应用的操作】
    应用的操作,对于测试人员来说,是比较常用的命令了。我们除了需要对应用的安装之外,还需要对应用进行打开,清除内部的缓存(这个可以进设置里头删除,但是在做一些界面不太大的系统开发时,则不好操作了,比如说,我以前做智能手表系统开发的时候 ,经常要使用到这些指令)

应用安装
安装应用很简单,直接是adb install apk的绝对路径

adb install apk的绝对路径

应用启动
应用的启动的话,需要指导主的activity哦,这个不一定是MainActivity的。这个时候 ,我们需要借助一下**工具了。比如说,我们需要启动小米论坛的apk,那么,我们先**这个应用的apk。结果如图:
ADB看完这篇就够了for安卓开发/测试人员
看吧,小米论坛的客户端apk就不是MainActivity启动的。那我们怎么启动它,当然啦,前提是先安装了哈!

adb shell start -n com.xiaomi.bbs.activity.SplashActivity

这样子的话,就会启动小米论坛客户端了。
那我们怎么查看那个是主的Activity呢,这个很简单嘛,看配置文件就知道了!
哪个Activity配置有:

< intent-filter>
< action android:name=”android.intent.action.MAIN”/> < categoryandroid:name=”android.intent.category.LAUNCHER”/>
< / intent-filter>

那么它就是应用的入口啦!

清除应用数据
这里面的包名,可以通过**的方法去获取,也可以通过前面的方法去获取,反正,获取包名的方法真的有很多的呢!

adb shell pm clear 包名

卸载应用
adb都玩完了,是吧,呵呵!就算没完也够用了,到这里的 话,我们就以卸载应用来结束吧。指令请看:

adb uninstall 包名

这里的包名也一样,可以使用前面的方法哈,如果实在不会的,可以发帖子提问哈!知道的同学们,纷纷解答!

【结语】
到这这里的话,adb指令基本讲完了,如果大家觉得不懂的,可以去发帖子提问,或者去看视频练习,但是,一定要进行练习哈,看到的不是你的,是我的。你自己写出来的才是属于你自己的呢!!

同时,也欢迎大家支持我们的网站,发表原创文章,有没有一种荣誉感呢!别人看你的哇!

用到的工具或软件:
ADB:
http://pan.baidu.com/s/1qXZJuOW

ADB驱动:
链接:http://pan.baidu.com/s/1gf1Macz 密码:f6o0

apk**工具
链接:http://pan.baidu.com/s/1dERYpdn 密码:b0rr

转载:http://bbs.sunofbeaches.com/thread-5992-1-1.html