<1>ADB的简介
1.什么是ADB?
ADB是Android Debug Bridge (安卓调试桥)
本质上就是一套用于调试Android系统的指令集合,有了这套指令集合,方便我们开发与测试。
2.操作系统的API结构:
为了更好理解ADB,我们需要理解操作系统的API。任何操作系统中,都有两套API,一套是SDK(用于开发应用软件),另一套是Shell(用于执行命令)。这两套API都是用于控制操作系统。
我们平时使用电脑,操作的就是shell命令,只不过Windows把这些命令封装成了UI界面,通过点击,滚动,双击等事件来触发这个命令。 在Android系统中,我们要控制Android手机,那么我们可以通过adb指令来控制,本质上和有界面的控制是一样的,只是我们需要手动输入命令而已。
3.ADB的一些常用用途:
对设备重启,关机。
把文件推到Android系统中,把Android系统中的文件拖拽到IDE中。
通过命令去安装一个应用到Android系统中,不需要复制到内存卡里。
卸载应用,清除它产生的垃圾缓存等。
进入Android系统的shell,把它当作一个微型的Linux系统来使用。
4.ADB指令可以分为以下几个大类:
——设备操作相关的指令
——常用的shell命令
——文件操作
——log的捕捉
——APK(应用)的操作
——设备相关的指令
<2>进行测试时的手机配置
1.手机连接电脑后,要进行测试,需要打开开发者模式:
不同手机不一样,可以在设置里搜索一下。默认开发者模式是不可见的,需要点击Android版本号,点击7下,或者N下。
然后,要打开允许USB调试,允许USB安装应用,关闭各种系统优化。
<3>设备相关指令
1.查看设备: adb devices
C:\Users\Lily>adb devices
List of devices attached
emulator-5554 device
2.重新挂载: adb remount
(一般系统开发才用得上,普通应用程序开发用的较少)
3.重启设备: adb reboot
4.设备关机: adb shell reboot -p
(-p是poweroff的意思)
5.选择设备: adb -s 设备名 具体操作语句
当我们的电脑连接了多个设备的时候,就需要指定设备来进行操作
6.进入Shell: adb shell
可以进入Android系统的shell
<4>常用的Shell命令
当我们使用adb shell进入Android系统的内核之后,就可以把它当作一个小型的Linux系统,所以可以在其中使用部分Linux命令
1.列出文件: ls(和dir命令的作用是一样的)
可以在后面加上参数 -l 显示列表详情
(如果在AS上查看,有权限问题,那么先用ADB切换到root用户即可)
2.目录切换: cd 目录地址
cd / 跳转到根目录
cd .. 返回上一层目录
(如果没有权限的话,输入su,切换为super超级用户就可以了)
3.查看文件路径: pwd
4.删除文件: rm
(如果是文件夹,要加上参数-r)
(强制删除,-f)
5.创建文件夹: mkdir 文件夹名称
6.创建文件: touch 文件名
7.移动文件: mv 要移动的文件名 目标路径
8.文件查看: cat 文件名
(我们打开后有可能出现乱码,是因为编码格式不一致,可以使用 chcp 65001设置编码为UTF-8)
9.清屏: cls
10.退出Android系统中的shell: exit
<5>文件操作
1.把Android系统中的文件拉取出来: adb pull Android内部文件地址 本地目录
(可以将Android系统中的文件拉取到电脑中的本地目录中)
2.把本地的文件推送到Android系统中: adb push 本地文件 Android系统内部路径
<6>实际应用场景
1.抓取Log: adb logcat > xxx.log
很多情况下,在AS中抓取log会失灵,没有logcat输出,这种情况下使用adb命令就比较管用了
当我们输入adb logcat > 要保存log的文件名 就可以将log信息保存起来,这个时候我们去复现问题,然后Ctrl+c停止抓取log就完成了
adb抓取log有很多参数,一般全抓取然后用Notepad++来搜索需要具体查看的log
2.ADB获取包名: logcat | grep cmp=
在开发的时候,有时需要打开别人的应用,如果没有别人提供的文档,如何知道这个应用的action,category等是什么呢?或者用显式意图,也需要知道别人具体的包名和入口类的全名称才能构建compoment用于启动
这种情况就可以进入Android系统的shell,使用ADB命令获取包名
3.安装应用: adb install apk全路径名称
4.卸载应用: adb uninstall 包名
5.启动应用: adb shell am start -n 包名/类名
(注意这里的 / 不是或的意思,而是单纯的一个分隔符号)
6.发送广播: adb shell am broadcast 参数(-a action比较常用)
7.ADB截图:
adb shell screencap -p /sdcard/screen.png
adb pull /sdcard/screen.png ./
8.ADB发送模拟按键: adb shell input keyevent 键码(keyCode)
(可以在源码android.view.KeyEvent里面查看各个功能对应的键码,常见的
public static final int KEYCODE_HOME =3;
public static final int KEYCODE_BACK =4;)