ADB基础

ADB工具位于SDK的platform-tools目录下,因此在命令行中使用ADB的时候,需要通过cd命令,切换到该目录下,或者将platform-tools的路径添加系统环境变量中,这样就可以直接使用了。

linux配制方法:

cd /usr/local/bin/
sudo ln -s /home/homer/android-sdk-linux/platform-tools/adb

配置好后,在命令行中输入以下命令

adb version

如果显示如下内容,就说嘛配置成功了

Android Debug Bridge version 1.0.36
Revision 9f299f282ec9-android

Android设备端:首先进入Setting,选择“about my phone”,通过不断单击“内部版本号”来激活开发者选项。进入开发者选项后,就可以选择“USB Debug”了。这时候,如果你的设备连接了电脑,那么设备界面上回显示“是否需要对这台电脑授权”的选项,选择“OK”后,电脑就通过ADB连接上这台手机了。

在命令行中输入如下命令

adb shell

显示以下命令说明通过adb进入android系统的命令行了

generic_x86_64:/ $

然后就可以使用shell命令了,android就是基于linux的,所以我们可以使用很多linux下的shell命令

generic_x86_64:/ $ ls |grep "data"
data
generic_x86_64:/ $ cd data
generic_x86_64:/data $

ADB常用命令

  • 显示系统中全部Android平台
android list targets
android list targets
Available Android targets:
----------
id: 1 or "android-19"
     Name: Android 4.4.2
     Type: Platform
     API level: 19
     Revision: 4
     Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in
 Tag/ABIs : no ABIs.
----------
id: 2 ...
...
...
  • 安装Apk程序之Install
adb install -r 应用程序.apk
adb install -r ./apkname.apk
  • 安装Apk程序之Push
adb push <local> <remote>
adb push ./apkname.apk /system/app

以上两种方法都可以安装Apk,但是它们也有不同。Adb Install 是将Apk安装到/data/data目录下,作为普通的用户程序。而Adb Push则不是安装命令,他是将一个文件写入Android设备存储系统。因此,只要拥有相应权限,就可以把任何Apk放到任何目录下,甚至是System目录下,作为一个系统应用程序。

  • 向手机写入文件
adb push <local> <remote>
adb push ./testfile.txt /system/temp
- 从手机获取文件
adb pull <remote> <local>
adb push /system/temp  ./testfile.txt
  • 查看Log
adb shell
shell@xxx:/$ logcat | grep "abc"
  • 删除应用
adb remount
adb shell
shell@xxx:/$ rm /system/app/xxx.apk
  • 查看系统盘符
adb shell df
Filesystem               Size     Used     Free   Blksize
/dev                   485.6M     2.9M   482.7M   4096
/sys/fs/cgroup         485.6M    12.0K   485.5M   4096
/mnt/secure            485.6M     0.0K   485.6M   4096
/mnt/asec              485.6M     0.0K   485.6M   4096
/mnt/obb               485.6M     0.0K   485.6M   4096
/mnt/usb               485.6M     0.0K   485.6M   4096
/mnt/iso               485.6M     0.0K   485.6M   4096
/mnt/samba             485.6M     0.0K   485.6M   4096
/var                   485.6M     4.0K   485.5M   4096
/system                871.8M   481.4M   390.4M   4096
/cache                 484.3M   128.0K   484.2M   4096
/data                    1.8G   148.9M     1.7G   4096
/tvservice              55.0M    39.4M    15.6M   4096
/tvconfig                5.8M     4.2M     1.6M   4096
/tvdatabase              3.9M   772.0K     3.1M   4096
/tvcustomer             11.7M   952.0K    10.8M   4096
/customercfg             3.9M   952.0K     2.9M   4096
/mnt/sdcard             28.6G     6.3G    22.3G   16384
/mnt/usb/sdb1           28.6G     5.0G    23.6G   16384
/mnt/media_rw/sdcard0    28.6G     6.3G    22.3G   16384
/mnt/secure/asec        28.6G     6.3G    22.3G   16384
  • 输出所有已安装的应用
adb shell pm list packages -f
  • 模拟按键输入
adb shell input  keyevent 19

最后面的数字就是要执行的Keyevent的Code,可以在网上查到对应的Code,这里列举一些常用的。

input keyevent 82 menu
input keyevent 3 home
input keyevent 19 up
input keyevent 20 down
input keyevent 21 left
input keyevent 22 right
input keyevent 66 enter
input keyevent 4 back
  • 模拟滑动输入
adb shell input touchscreen  <x1> <y1> <x2> <y2>
adb shell input touchscreen  swipe 18 665 18 350
  • 查看运行状态
adb shell dumpsys
shell@xxx:/$ dumpsys activity activities | grep "tencent"

简单的grep了“tencent”的Activity的信息

  • Package管理信息
shell@xxx:/$ pm list packages -f
  • AM管理信息

启动一个activity

adb shell am start -n 包名/包名+类名
  • 重启
adb shell reboot
  • 截屏
adb shell /system/bin/screencap -p /sdcard/screenshot.png
  • 录制视频
adb shell screenrecord /sdcard/demo.mp4

ADB命令来源

  • /system/core/toolbox
  • /framework/base/cmds

我们所有的ADB命令和Shell命令就来源于这两个目录