adb

Posted minkillmax

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了adb相关的知识,希望对你有一定的参考价值。

adb的全称为android Debug Bridge 调试桥,是连接Android手机与PC端的桥梁,通过adb可以管理、操作模拟器和设备,如安装软件、查看设备软硬件参数、系统升级、运行shell命令等。那具体有哪些可用命令呢?下面我就一一道来。

adb环境变量的配置

工欲善其事,必先利其器。adb是一个可执行文件,在SDK文件目录platform-tools下。adb的操作是通过cmd命令的dos窗口来实现的。如果不配置环境变量,那么就要通过 cd命令进入adb.exe所在的文件目录下方能继续操作。不想偷懒的程序员不是个好厨子。所以,环境变量必须得配。这样减少碎片化时间,何乐而不为呢?

配置流程:右键计算机->属性->选择高级系统设置->选择‘高级‘选项->点击环境变量->在变量PATH的末尾添加上adb.exe所在文件夹的路径。

技术分享图片
技术分享图片
技术分享图片
最后,再到cmd中验证一下:
技术分享图片
出现以上结果,就表示环境变量配置成功啦。

命令实战

1.版本信息

命令adb version

结果就是上面一张图里显示的结果。
2.查询模拟器或手机状态
命令adb devices 获取手机设备序列号和连接状态
命令 adb get-serialno 获得设备序列号
技术分享图片

执行以上命令后,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路径以及包名

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的主要内容,如果未能解决你的问题,请参考以下文章

Android命令截屏srenncap pc 端adb截图成功,但是用代码执行为空白图

android adb 流程原理代码分析

Flutter ADB 错误:ADB 以退出代码 1 退出执行流式安装

怎么在Android Studio中执行adb命令

小天才adb怎么使用

Android 如何通过代码设置adb指令,使手机关机?