下载地址
ADB和Fastboot for Windows https://dl.google.com/android/repository/platform-tools-latest-windows.zip ADB和Fastboot for Mac https://dl.google.com/android/repository/platform-tools-latest-darwin.zip ADB和Fastboot for Linux https://dl.google.com/android/repository/platform-tools-latest-linux.zip
查看Android 系统版本
adb shell getprop ro.build.version.release
查看设备信息型号命令
adb shell getprop ro.product.model
单独查看某一硬件或系统属性:adb shell getprop <属性名>
属性名 | 含义 |
ro.build.version.sdk | SDK 版本 |
ro.build.version.release | Android 系统版本 |
ro.product.model | 型号 |
ro.product.brand | 品牌 |
ro.product.name | 设备名 |
ro.product.board | 处理器型号 |
persist.sys.isUsbOtgEnabled | 是否支持 OTG |
dalvik.vm.heapsize | 每个应用程序的内存上限 |
ro.sf.lcd_density | 屏幕密度 |
rro.build.version.security_patch | Android 安全补丁程序级别 |
获取 root 权限
adb root
可以直接获取 root 权限,并挂载系统文件系统为可读写状态
adb remount
列出指定应用的 dump 信息
adb shell pm dump 包名
列出对应包名的 .apk 位置
adb shell pm path 包名
进入设备shell
adb shell
查看所有应用列表
adb shell pm list packages
查看系统应用列表
adb shell pm list packages -s
查看第三方应用列表
adb shell pm list packages -3
返回设备序列号SN值:
adb get-serialno
获取设备的ID:
adb shell settings get secure android_id
安装apk
adb install -l -r -t -s -d -g path_to_apk
-l:将应用安装到保护目录 /mnt/asec;
-r:允许覆盖安装;
-t:允许安装 AndroidManifest.xml 里 application 指定 android:testOnly=“true” 的应用;
-s:将应用安装到 sdcard;
-d:允许降级覆盖安装;
-g:授予所有运行时权限;
path_to_apk:apk的绝对路径。
安装淘宝apk:
adb install -l /data/local/tmp/taobao.apk
重新安装
adb install -r
卸载apk
adb uninstall -k "packagename"
"packagename":表示应用的包名
-k 参数可选,表示卸载应用但保留数据和缓存目录。
手机淘宝:
adb uninstall com.taobao.taobao
清除应用数据与缓存命令
adb shell pm clear "packagename"
相当于在设置里的应用信息界面点击「清除缓存」和「清除数据」。
示例:
adb shell pm clear com.taobao.taobao 表示清除 手机淘宝数据和缓存。
滑动解锁
如果锁屏没有密码,是通过滑动手势解锁,那么可以通过 input swipe 来解锁。
adb shell input swipe 300 1000 300 500
(其中参数 300 1000 300 500 分别表示起始点x坐标 起始点y坐标 结束点x坐标 结束点y坐标。)
输入文本
在焦点处于某文本框时,可以通过 input 命令来输入文本。
adb shell input text *** (***即为输入内容)
中文输入有问题
切换键盘
adb shell ime set package_name input method
eg:adb shell ime set com.sohu.inputmethod.sogou/.SogouIME input method
切换至搜狗输入法。
获取app版本号
adb shell dumpsys package packageName eg:adb shell dumpsys package org.cnodejs.android.md | findstr versionName
显示搜狗输入法的版本号。(packageName获取:与卸载app获取packageName一致)
屏幕分辨率命令
adb shell wm size
如果使用命令修改过,那输出可能是:
Physical size: 1080x1920
Override size: 480x1024
表明设备的屏幕分辨率原本是 1080px * 1920px,当前被修改为 480px * 1024px。
屏幕密度命令
adb shell wm density
如果使用命令修改过,那输出可能是:
Physical density: 480
Override density: 160
表明设备的屏幕密度原来是 480dpi,当前被修改为 160dpi。
获取设备列表及设备状态:
adb devices
获取设备的状态
设备的状态有 device , offline , unknown3种,其中device:设备正常连接,offline:连接出现异常,设备无响应,unknown:没有连接设备。
adb get-state
android_id查看命令
adb shell settings get secure android_id
查看设备ip地址
adb shell ifconfig | grep Mask或者adb shell netcfg
查看CPU 信息命令
adb shell cat /proc/cpuinfo
查看内存信息命令
adb shell cat /proc/meminfo
获取电量
adb shell dumpsys battery
在测试电量时,我们必须要保证手机是非充电状态
切换非充电状态
adb shell duupsys battery set status 1
只要是status值非2就可以,status值为2时是充电状态
强制停止应用命令:
adb shell am force-stop "packagename"
例如强制停止淘宝:
adb shell am force-stop com.taobao.taobao
重启Android
adb reboot
重启到Recovery界面
adb reboot recovery
重启到bootloader界面
adb reboot bootloader
关闭 USB 调试模式命令
adb shell settings put global adb_enabled 0
需要手动恢复:「设置」-「开发者选项」-「Android 调试」
修改显示区域
adb shell wm overscan 0,0,0,200
四个数字分别表示距离左、上、右、下边缘的留白像素,以上命令表示将屏幕底部 200px 留白
恢复原显示区域命令
adb shell wm overscan reset
截屏并保存至 sdcard 目录:
adb shell screencap -p /sdcard/screen.png
实用功能:
截图保存到电脑
adb exec-out screencap -p > sc.png
然后将 png 文件导出到电脑
adb pull /sdcard/sc.png
录制视频并保存至sdcard
adb shell screenrecord sdcard/record.mp4
执行命令后操作手机,ctrl + c 结束录制,录制结果保存至 sdcard:
adb shell screenrecord sdcard/record.mp4
录制屏幕:录制屏幕以 mp4 格式保存到 /sdcard:
adb shell screenrecord /sdcard/filename.mp4
需要停止时按 Ctrl-C,默认录制时间和最长录制时间都是 180 秒。
如果需要导出到电脑
adb pull /sdcard/filename.mp4
推送本地文件至Android设备
adb push
如推送 D 盘下的 push.txt 至 Sdcard:adb push d:push.txt sdcard/ 注意sdcard 后面的斜杠不能少。
显示屏参数
adb shell dumpsys window displays
输出示例:
WINDOW MANAGER DISPLAY CONTENTS (dumpsys window displays) Display: mDisplayId=0 init=1080x1920 420dpi cur=1080x1920 app=1080x1794 rng=1080x1017-1810x1731 deferred=false layoutNeeded=false
其中 mDisplayId 为 显示屏编号,init 是初始分辨率和屏幕密度,app 的高度比 init 里的要小,表示屏幕底部有虚拟按键,高度为 1920 - 1794 = 126px 合 42dp。
设备的更多硬件与系统属性可以通过如下命令查看
adb shell cat /system/build.prop
状态栏和导航栏的显示隐藏
adb shell settings put global policy_control
可由如下几种键及其对应的值组成,格式为 =:=。
key | 含义 | value | 含义 |
immersive.full | 同时隐藏 | apps | 所有应用 |
immersive.status | 隐藏状态栏 | * | 所有界面 |
immersive.navigation | 隐藏导航栏 | packagename | 指定应用 |
immersive.preconfirms | ? | -packagename | 排除指定应用 |
表示设置在所有界面下都同时隐藏状态栏和导航栏
adb shell settings put global policy_control immersive.full=*
表示设置在包名为 com.package1 和 com.package2 的应用里隐藏状态栏,在除了包名为 com.package3 的所有应用里隐藏导航栏
adb shell settings put global policy_control immersive.status=com.package1,com.package2:immersive.navigation=apps,-com.package3
恢复正常模式
adb shell settings put global policy_control null
表示设置在所有界面下都同时隐藏状态栏和导航栏
adb shell settings put global policy_control immersive.full=*
表示设置在包名为 com.package1 和 com.package2 的应用里隐藏状态栏,在除了包名为 com.package3 的所有应用里隐藏导航栏
adb shell settings put global policy_control immersive.status=com.package1,com.package2:immersive.navigation=apps,-com.package3
恢复正常模式
adb shell settings put global policy_control null
模拟按键/输入
adb shell input keyevent keycode
不同的 keycode有不同的功能:
keycode | 含义 |
3 | HOME 键 |
4 | 返回键 |
5 | 打开拨号应用 |
6 | 挂断电话 |
26 | 电源键 |
27 | 拍照(需要在相机应用里) |
61 | Tab键 |
64 | 打开浏览器 |
67 | 退格键 |
80 | 拍照对焦键 |
82 | 菜单键 |
85 | 播放/暂停 |
86 | 停止播放 |
92 | 向上翻页键 |
93 | 向下翻页键 |
111 | ESC键 |
112 | 删除键 |
122 | 移动光标到行首或列表顶部 |
123 |
移动光标到行末或列表底部 |
124 | 插入键 |
164 | 静音 |
176 | 打开系统设置 |
207 | 打开联系人 |
208 | 打开日历 |
209 | 打开音乐 |
220 | 降低屏幕亮度 |
221 | 提高屏幕亮度 |
223 | 系统休眠 |
224 | 点亮屏幕 |
231 | 打开语音助手 |
276 | 如果没有 wakelock 则让系统休眠 |
Android四大组件有
Activity, Service服务, Content Provider内容提供者, BroadcastReceiver广播接收器,
具体不做多讲,常用的有以下:
查看当前显示的activity
Activity活动代表了一个具有用户界面的单一屏幕,如 Java 的窗口或者帧
方法1:adb shell dumpsys activity activities | sed -En -e '/Running activities/,/Run #0/p' 方法2:adb shell dumpsys activity | grep -i run
调起 Activity(启动app)
adb shell am start [options] package_and_activity
表示调起微信主界面
例如:adb shell am start -n com.tencent.mm/.ui.LauncherUI
表示调起qq主界面
例如: adb shell am start -n com.tencent.mobileqq/com.tencent.mobileqq.activity.SplashActivity 或者:adb shell dam start -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -n com.tencent.mobileqq/com.tencent.mobileqq.activity.SplashActivity
package_and_activity获取:(查看当前显示的activity)
adb shell "dumpsys window | grep mCurrentFocus"
查看正在运行的 Services
adb shell dumpsys activity services "packagename"
其中参数不是必须的,指定 "packagename" 表示查看与某个包名相关的 Services,不指定表示查看所有 Services。
调起 Service
命令格式:adb shell am startservice [options]
例如:
adb shell am startservice -n com.tencent.mm/.plugin.accountsync.model.AccountAuthenticatorService 表示调起微信的某 Service。
发送broadcast
adb shell am broadcast -a <action>
am broadcast 后面的参数有:
[-a <ACTION>] [-d <DATA_URI>] [-t <MIME_TYPE>] [-c <CATEGORY> [-c <CATEGORY>] ...] [-e|--es <EXTRA_KEY> <EXTRA_STRING_VALUE> ...] [--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE> ...] [-e|--ei <EXTRA_KEY> <EXTRA_INT_VALUE> ...] [-n <COMPONENT>] [-f <FLAGS>] [<URI>]
例如:
adb shell am broadcast -a MyAction --es city "shenzhen" --ei year 2014 --ez flag true
说明:红色为EXTRA_KEY,绿色为VALUE,分别为String类型,int类型,boolean类型
打印日志:
Android 的日志分为如下几个优先级(priority):
V —— Verbose(最低,输出得最多) D —— Debug I —— Info W —— Warning E —— Error F —— Fatal S —— Silent(最高,啥也不输出)
按某级别过滤日志则会将该级别及以上的日志输出。
比如,命令:adb logcat *:W 会将 Warning、Error、Fatal 和 Silent 日志输出。
(注: 在 macOS 下需要给 :W 这样以 作为 tag 的参数加双引号,如 adb logcat ":W",不然会报错 no matches found: :W。)
adb logcat 打印当前设备上所有日志 adb logcat *:W 过滤打印严重级别W及以上的日志 adb logcat l findstr ***> F:log.txt 把仅含***的日志保存到F盘的log.txt文件中 adb logcat -c 清除屏幕上的日志记录 adb logcat -c && adb logcat -s ActivityManager l grep "Displayed” 客户端程序启动时间获取日志 adb logcat > F:log.txt 打印当前设备上所有日志保存到F盘的log.txt文件中 adb logcat l findstr *** 打印过滤仅含***的日志 adb logcat l findstr ***> F:log.txt 把仅含***的日志保存到F盘的log.txt文件中
按 tag 和级别过滤日志:命令:adb logcat ActivityManager:I MyApp:D *:S
表示输出 tag ActivityManager 的 Info 以上级别日志,输出 tag MyApp 的 Debug 以上级别日志,及其它 tag 的 Silent 级别日志(即屏蔽其它 tag 日志)。
日志格式可以用:adb logcat -v 选项指定日志输出格式。
日志支持按以下几种 :默认格式brief、process、tag、raw、time、long
指定格式可与上面的过滤同时使用。比如:adb logcat -v long ActivityManager:I *:S
清空日志
adb logcat -c
内核日志
adb shell dmesg
结束adb服务
adb kill-server
启动adb服务
adb start-server
结束 adb 服务
adb kill-server
启动 adb 服务
adb start-server
通常两个命令一起用,设备状态异常时使用 kill-server,运行 start-server 进行重启服务。
以上这些ADB命令在APP面试中被问的可能性以及工作中要用的可能性不言而喻,大家多敲敲键盘就可以掌握了
连接逍遥模拟器
adb connect 127.0.0.1:21503