<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;)

 

posted on 2021-08-31 15:42  Danile97  阅读(141)  评论(0编辑  收藏  举报