adb
adb的全称为Android Debug Bridge 调试桥,是连接Android手机与PC端的桥梁,通过adb可以管理、操作模拟器和设备,如安装软件、查看设备软硬件参数、系统升级、运行shell命令等。那具体有哪些可用命令呢?下面我就一一道来。
adb环境变量的配置
配置流程:右键计算机->属性->选择高级系统设置->选择‘高级‘选项->点击环境变量->在变量PATH的末尾添加上adb.exe所在文件夹的路径。
命令实战
命令adb version
结果就是上面一张图里显示的结果。执行以上命令后,adb为每一个设备输出序列号和状态两个信息。序列号是由adb针对模拟器或安卓设备创建的唯一标识。格式是<设备类型>-<端口号>,例如:emulator-5558。状态有两种值,offline和device。Offline表示未连接或未响应,device表示已经连接到服务商。但是device并不能表示Android系统已经完全启动,只是表示这个状态是可以操作状态。
3.设置操作对象
如果有多个模拟器或者Android设备同时连接上adb,那么可以通过命令来选择指定的目标设备。
在执行adb命令时 在一般命令前再加入 –s <序列号>即可。
以上是针对设备0cc1fb0c进入shell命令模式。
4.安装/卸载apk
安装命令
adb install <APK路径> 安装apk
adb install -r <APK路径> 保留数据和缓存文件,重新安装APK
adb install -s <APK路径> 安装apk到sd卡
卸载命令
adb uninstall <package> 卸载APP
adb uninstall <package> 卸载APP但保留数据和缓存文件
将APK安装到sd卡的命令执行失败了,因为设备上没有sd被挂载。
5.获取设备硬件和软件参数
命令
adb shell ->cat/sys/class/net/wlan0/address 获取Mac地址
abd shell –>cat /proc/cpuinfo 获取CPU信息
adb shell ->cat /proc/meminfo 查看当前内存占用
adb shell -> cat /proc/iomem 查看IO内存分区
adb shell top 查看设备CPU和内存占用情况
adb shell top –m 3 查看占用内存前3的APP
adb shell top –n 1 刷新一次内存信息,然后返回
adb shell ps 查看进程列表
adb shell kill <pid>杀死一个进程
adb shell ps –x <pid>查看指定进程状态
adb shell service list 查看后台服务信息
6.按键事件
命令 adb shell input keyevent <no>
No支持以下80多种不同的按键值
0 --> "KEYCODE_UNKNOWN"
1 --> "KEYCODE_MENU"
2 --> "KEYCODE_SOFT_RIGHT"
3 --> "KEYCODE_HOME"
4 --> "KEYCODE_BACK"
5 --> "KEYCODE_CALL"
6 --> "KEYCODE_ENDCALL"
7 --> "KEYCODE_0"
8 --> "KEYCODE_1"
9 --> "KEYCODE_2"
10 --> "KEYCODE_3"
11 --> "KEYCODE_4"
12 --> "KEYCODE_5"
13 --> "KEYCODE_6"
14 --> "KEYCODE_7"
15 --> "KEYCODE_8"
16 --> "KEYCODE_9"
17 --> "KEYCODE_STAR"
18 --> "KEYCODE_POUND"
19 --> "KEYCODE_DPAD_UP"
20 --> "KEYCODE_DPAD_DOWN"
21 --> "KEYCODE_DPAD_LEFT"
22 --> "KEYCODE_DPAD_RIGHT"
23 --> "KEYCODE_DPAD_CENTER"
24 --> "KEYCODE_VOLUME_UP"
25 --> "KEYCODE_VOLUME_DOWN"
26 --> "KEYCODE_POWER"
27 --> "KEYCODE_CAMERA"
28 --> "KEYCODE_CLEAR"
29 --> "KEYCODE_A"
30 --> "KEYCODE_B"
31 --> "KEYCODE_C"
32 --> "KEYCODE_D"
33 --> "KEYCODE_E"
34 --> "KEYCODE_F"
35 --> "KEYCODE_G"
36 --> "KEYCODE_H"
37 --> "KEYCODE_I"
38 --> "KEYCODE_J"
39 --> "KEYCODE_K"
40 --> "KEYCODE_L"
41 --> "KEYCODE_M"
42 --> "KEYCODE_N"
43 --> "KEYCODE_O"
44 --> "KEYCODE_P"
45 --> "KEYCODE_Q"
46 --> "KEYCODE_R"
47 --> "KEYCODE_S"
48 --> "KEYCODE_T"
49 --> "KEYCODE_U"
50 --> "KEYCODE_V"
51 --> "KEYCODE_W"
52 --> "KEYCODE_X"
53 --> "KEYCODE_Y"
54 --> "KEYCODE_Z"
55 --> "KEYCODE_COMMA"
56 --> "KEYCODE_PERIOD"
57 --> "KEYCODE_ALT_LEFT"
58 --> "KEYCODE_ALT_RIGHT"
59 --> "KEYCODE_SHIFT_LEFT"
60 --> "KEYCODE_SHIFT_RIGHT"
61 --> "KEYCODE_TAB"
62 --> "KEYCODE_SPACE"
63 --> "KEYCODE_SYM"
64 --> "KEYCODE_EXPLORER"
65 --> "KEYCODE_ENVELOPE"
66 --> "KEYCODE_ENTER"
67 --> "KEYCODE_DEL"
68 --> "KEYCODE_GRAVE"
69 --> "KEYCODE_MINUS"
70 --> "KEYCODE_EQUALS"
71 --> "KEYCODE_LEFT_BRACKET"
72 --> "KEYCODE_RIGHT_BRACKET"
73 --> "KEYCODE_BACKSLASH"
74 --> "KEYCODE_SEMICOLON"
75 --> "KEYCODE_APOSTROPHE"
76 --> "KEYCODE_SLASH"
77 --> "KEYCODE_AT"
78 --> "KEYCODE_NUM"
79 --> "KEYCODE_HEADSETHOOK"
80 --> "KEYCODE_FOCUS"
81 --> "KEYCODE_PLUS"
82 --> "KEYCODE_MENU"
83 --> "KEYCODE_NOTIFICATION"
84 --> "KEYCODE_SEARCH"
85 --> "TAG_LAST_KEYCODE"
例如:
adb shell input keyevent 1 打开菜单
adb shell input keyevent 26 按下电源键
7.am命令
adb shell am start com.dls.myview/com.dls.myview.LoginActivity 启动包名为com.dls.myview下的LoginActivity
除了可以启动activity,广播、服务也可以启动。格式和上面一样。
am broadcast <Intent> 启动广播
am startservice <Intent> 启动服务
am force-stop <PACKAGE> 强制终止app
8.pm命令
pm list packages 列出所有包名
-f 列出所有apk路径以及包名
-s 列出系统apk路径以及包名
-3 列出用户apk路径以及包名
-i 相应的报名查找
pm list
pm list permission-groups 列出所有权限组
pm list permissions –d 列出所有的危险权限
pm list permissions –u 列出所有的危险和普通权限
pm list features 列出所有功能
pm list libraries 列出所有libraries
pm path <package> APP安装目录文件夹路径
pm install <package> 执行安装APK
pm uninstall <package> 执行卸载APK
pm clear <package> 清除apk缓存文件和数据
9.adb服务相关
adb kill-server 终止adb服务
adb start-server 启动adb服务
adb root 以root权限重启adb服务
adb reboot 重启设备
adb reboot bootloader 重启并进入刷机模式
adb reboot recovery 重启进入恢复模式
文件操作
adbremount 将system分区重新挂载为可读写分区
adbpush <local> <remote> 从本地复制文件到设备
adbpull <remote> <local> 从设备复制文件到本地
adbshell ls 列出目录下的文件和文件夹,等同于dos中的dir命令
adbshell cd <folder> 进入文件夹,等同于dos中的cd 命令
adbshell rename path/oldfilename path/newfilename 重命名文件
adbshell rm /system/avi.apk 删除system/avi.apk //rm -f 1.apk 强制删除apk
adbshell rm -r <folder> 删除文件夹及其下面所有文件
adbshell mv path/file newpath/file 移动文件
adbshell chmod 777 /system/fonts/DroidSansFallback.ttf 设置文件权限
adbshell mkdir path/foldelname 新建文件夹
adbshell cat <file> 查看文件内容
10.使用技巧
删除图形验证码 前提:手机ROOT和已开启开发者模式
adb devices 获取到设备号
adb remount 将设备设置为可写模式
adb shell 进入shell模式
rm /data/system/password.key 删除密码文件
adb reboot //设备重启
修改开关机动画
adb devices
adb remount
adb pushpower_off.gif /opl/data/res/images 关机动画
adb pushboot_animation.gif /opl/data/res/images 开机动画
adb shell chmod644 /opl/data/res/images/power_off.gif
adb shell chmod644 /opl/data/res/images/boot_animation.gif
进入Doze模式(测试用)
要求:Android NougatDeveloper Preview4或以上版本的设备。
什么是Doze 模式?
从Android 6.0(API level 23)开始,Android提出了两个延长电池使用时间的省电特性给用户。用户管理可以在没有充电的情况下管理app的行为。当用户一段时间没有使用手机的时候,Doze模式通过延缓app后台的CPU和网络活动减少电量的消耗。
命令
adb shell dumpsysbattery unplug 使设备进入未连接充电模式
adb shell dumpsysdeviceidle step [light|deep] 强行进入Doze模式
adb shell dumpsys battery reset 退出doze模式
启动虚拟机:
连接夜神:adb connect 127.0.0.1:62001
android -h:
android create project -n hello -t 1 -p d:/hello -k com.android.n
先将tcpdump文件上传至 安卓虚拟机 /data/local/
用wireshark打开。
adb pull <remote> <local>
11. 向模拟器中写文件:
adb push <local> <remote>
12. 进入模拟器的shell模式:
adb shell
13. 启动SDK,文档,实例下载管理器:
android
14. 缷载apk包:
adb shell
cd data/data 查找包名
exit
adb uninstall apk包的包名
15. 查看adb命令帮助信息:
adb help
17. 获取管理员权限:
su root
18. 启动Activity:
adb shell am start -n 包名/包名.类名(-n 类名,-a action,-d date,-m MIME-TYPE,-c category,-e 扩展数据,等)。
19、访问数据库SQLite3
adb shell
sqlite3
#cd system/sd/data //进入系统内指定文件夹
#ls //列表显示当前文件夹内容
#rm -r xxx //删除名字为xxx的文件夹及其里面的所有文件
#rm xxx //删除文件xxx
#rmdir xxx //删除xxx的文件夹