学习Android的小伙伴们一定都听过ADB吧,如果没有听过也没有关系,下面我将介绍ADB及一些ADB命令的使用技巧.
ADB
的全称是Android Debug Bridge
,直接翻译过来就是Android调试桥,它就像一个纽带,可以让我们在电脑上操作手机,我们可以在电脑上对其发送一些指令来调试它.
在开始之前,我们还要做一些准备工作:
1 . 确保你电脑安装有Android SDK
2 . 将SDK下的platform-tools
目录和tools
目录的路径加入到系统环境变量中
这样做主要是可以让我们在任何目录下打开命令行都可以进入adb.其中
platform-tools
目录下有我们需要的adb
,tools
目录下有我们需要的android
命令.
3 . 确保你手机打开了usb调试,并且已经通过数据线将手机连接到了电脑.
准备好上面的步骤以后,我们就可以开始啦.
一、进入ADB
由于我们已经配置了环境变量,所以我们可以在任意目录下打开命令行进入adb.
首先,打开
命令提示符
,打开方法有n多种.最慢的方式是在应用程序中找到命令提示符程序打开.或者Win+r
组合键打开运行窗口,输入cmd
回车即可.我一般是在任意目录下,同时按住Ctrl+Shift
键,鼠标右键,选择在此处打开命令窗口
.下面开始正式的命令.
1 . 输入adb version
查看adb版本,输出信息如下:
Android Debug Bridge version 1.0.36
Revision 84e3321d5db3-android
2 . 输入adb shell
进入shell,输出:
adb server version (31) doesn't match this client (36); killing...
* daemon started successfully *
shell@omega:/ $
上面是我之前已经连接过shell,所以它会先杀死之前的进程,然后开始开启守护进程,成功后就会出现
$
符号,要是玩过Linux
的小伙伴一定对这个不陌生,Android其实就是基于Linux开发的,所以我们可以在这下面执行一些Linux的常见shell命令.
3 . 进入shell后输入ls | grep "data"
,包含data的目录,输出如下:
shell@omega:/ $ ls|grep "data"
data
nvdata
二、ADB常用命令
首先我们先介绍一个常用命令
android list targets
,他会列出你SDK中已经存在的全部Android平台,我的志向结果如下:
Available Android targets:
----------
id: 1 or "android-7"
Name: Android 2.1
Type: Platform
API level: 7
Revision: 3
Skins: HVGA, QVGA, WQVGA400, WQVGA432, WVGA800 (default), WVGA854
Tag/ABIs : default/armeabi
----------
id: 2 or "android-8"
Name: Android 2.2
Type: Platform
API level: 8
Revision: 3
Skins: HVGA, QVGA, WQVGA400, WQVGA432, WVGA800 (default), WVGA854
Tag/ABIs : default/armeabi
----------
id: 3 or "android-10"
Name: Android 2.3.3
Type: Platform
API level: 10
Revision: 2
Skins: HVGA, QVGA, WQVGA400, WQVGA432, WVGA800 (default), WVGA854
Tag/ABIs : default/armeabi
----------
由于有很多,此处我只是只是展示出一部分.
1 . 安装Apk程序之install
命令
命令格式: adb install -r 应用程序.apk
adb install -r ku.apk
[100%] /data/local/tmp/ku.apk
pkg: /data/local/tmp/ku.apk
Success
这里的
-r
参数是指如果应用已存在则替换安装,更多的参数请参考adb help
.
2 . 安装Apk程序之push
命令
命令格式: adb push <local><remote>
adb push ku.apk /system/app/
以上的两种方法都可以安装Apk,但是也有所不同.
adb install
命令是将apk程序安装到data/data
目录下,作为普通的用户应用程序.而adb push
命令是将一个文件写入手机的存储系统.只要我们拥有相应的权限,我们就可以将任何apk放到任意目录下
3 . 获取文件之pull
命令
命令格式:adb pull <remote><local>
adb pull /system/app/ file/
4 . 查看Log之logcat
命令
命令格式: logcat
该命令要进入shell后执行
logcat | grep "abc"
上面的命令就会查看log信息,并且只显示包含
abc
的log信息
5 . 查看系统盘符之df
命令
adb shell df
执行结果
Filesystem Size Used Free Blksize
/dev 1.3G 132.0K 1.3G 4096
/var 1.3G 0.0K 1.3G 4096
/sys/fs/cgroup 1.3G 0.0K 1.3G 4096
/sys/fs/cgroup/memory: Permission denied
/mnt 1.3G 0.0K 1.3G 4096
/sys/fs/cgroup 1.3G 0.0K 1.3G 4096
/sys/fs/cgroup/memory: Permission denied
/system 2.4G 2.0G 380.2M 4096
/cache 418.4M 744.0K 417.7M 4096
/protect_f 3.9M 68.0K 3.8M 4096
/protect_s 9.2M 100.0K 9.1M 4096
/nvdata 27.5M 5.8M 21.7M 4096
/nvcfg 3.9M 136.0K 3.7M 4096
/cust 501.7M 444.1M 57.6M 4096
/storage 1.3G 0.0K 1.3G 4096
/data 53.6G 12.4G 41.3G 4096
/mnt/runtime/default/emulated: Permission denied
/storage/emulated 53.6G 12.4G 41.3G 4096
/mnt/runtime/read/emulated: Permission denied
/mnt/runtime/write/emulated: Permission denied
6 . 输出所有已安装的应用
adb shell pm list packages -f
输出部分信息:
package:/data/app/com.miles.appmanage-1/base.apk=com.miles.appmanage
package:/data/app/com.codekong.sensordemo-1/base.apk=com.codekong.sensordemo
package:/system/app/Gba/Gba.apk=com.mediatek.gba
package:/system/priv-app/ImsService/ImsService.apk=com.mediatek.ims
package:/data/app/com.codekong.bluetoothdemo-1/base.apk=com.codekong.bluetoothdemo
package:/data/app/com.ali.money.shield-2/base.apk=com.ali.money.shield
7 . 模拟按键输入
命令格式: adb shell input keyevent 按键对应Code
模拟按下home
键
adb shell input keyevent 3
常见的按键的Code
按键名称 | Code |
---|---|
menu | 82 |
home | 3 |
up | 19 |
down | 20 |
left | 21 |
right | 22 |
enter | 66 |
back | 4 |
8 . 模拟滑动输入
命令格式: adb shell input touchscreen <command><x1><y1><x2><y2>
adb shell input touchscreen swipe 18 655 18 0
9 . 列出运行状态之dumpsys
命令
adb shell dumpsys activity activities|grep "miui"
运行结果
1|shell@cancro:/ $ dumpsys activity activities|grep "miui"
userId=0 effectiveUid=1000 mCallingUid=u0a20 mCallingPackage=com.miui.home
launchedFromUid=10020 launchedFromPackage=com.miui.home userId=0
* TaskRecord{42e9cc8 #4750 A=com.miui.home U=0 sz=1}
affinity=com.miui.home
intent={act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10800000 cmp=com.miui.home/.launcher.Launcher}
realActivity=com.miui.home/.launcher.Launcher
Activities=[ActivityRecord{80963ff u0 com.miui.home/.launcher.Launcher t4750}]
* Hist #0: ActivityRecord{80963ff u0 com.miui.home/.launcher.Launcher t4750}
packageName=com.miui.home processName=com.miui.home
app=ProcessRecord{99d5d34 6198:com.miui.home/u0a20}
Intent { act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10800000 cmp=com.miui.home/.launcher.Launcher }
frontOfTask=true task=TaskRecord{42e9cc8 #4750 A=com.miui.home U=0 sz=1}
taskAffinity=com.miui.home
realActivity=com.miui.home/.launcher.Launcher
dataDir=/data/user/0/com.miui.home
TaskRecord{42e9cc8 #4750 A=com.miui.home U=0 sz=1}
Run #0: ActivityRecord{80963ff u0 com.miui.home/.launcher.Launcher t4750}
mLastPausedActivity: ActivityRecord{80963ff u0 com.miui.home/.launcher.Launcher t4750}
上面的命令可以列出Activity的运行状态,当然你也可以像上面一样使用
grep
命令过滤出你想要的信息,这个命令还可以查看更多信息,这个就要查看API文档了.
10 . 启动一个activity之am
命令
命令格式: adb shell am start 包名/包名+类名
am
命令的功能很强大,其它用法请查看API文档
11 . 录制屏幕之screenrecord
命令
命令格式: adb shell screenrecord <存储位置>
adb shell screenrecord /sdcard/demo.mp4
12 . 重新启动之reboot
命令
adb reboot
以上就是我们开发中常用的一些ADB命令,更多好用的ADB命令还需要我们多看API文档或帮助信息来进行了解.