adb介绍、下载安装、使用

adb下载安装及使用

 

adb介绍:
Android Debug Bridge(安卓调试桥) tools。它就是一个命令行窗口,用于通过电脑端与模拟器或者是设备之间的交互。
ADB是一个C/S架构的应用程序,由三部分组成:
运行在pc端的adb client:
命令行程序”adb”用于从shell或脚本中运行adb命令。首先,“adb”程序尝试定位主机上的ADB服务器,如果找不到ADB服务器,“adb”程序自动启动一个ADB服务器。接下来,当设备的adbd和pc端的adb server建立连接后,adb client就可以向ADB servcer发送服务请求;
运行在pc端的adb server:
ADB Server是运行在主机上的一个后台进程。它的作用在于检测USB端口感知设备的连接和拔除,以及模拟器实例的启动或停止,ADB Server还需要将adb client的请求通过usb或者tcp的方式发送到对应的adbd上;
运行在设备端的常驻进程adb demon (adbd):
程序“adbd”作为一个后台进程在Android设备或模拟器系统中运行。它的作用是连接ADB服务器,并且为运行在主机上的客户端提供一些服务。

adb下载及安装:
一共有两种方法:
首先第一种就是最简单的方法,只下载adb压缩包去解压即可:链接:https://pan.baidu.com/s/1SKu24yyShwg16lyIupO5VA 提取码:ih0i
(备注:如果下载放入到D盘去解压,打开dos窗口那么就要进入到D盘,然后再去执行adb命令,输入adb查看它是否安装成功)
第二种方法前提是已安装了Android Studio,它本身带有adb命令,如果配置好的Android Studio 一般都是可以直接调用adb命令的;如果不行,找到adb在SDK里的绝对路径,放入环境变量path中(绝对路径不带入adb.exe)在这里插入图片描述
在这里插入图片描述
然后输入adb version 查看版本 可以看出是否安装成功,如下就已经成功了。
在这里插入图片描述
启动 adb server 命令:adb start-server
停止 adb server 命令:adb kill-server
查询已连接设备/模拟器:adb devices
该命令经常出现以下问题:
offline —— 表示设备未连接成功或无响应;
device —— 设备已连接;
no device —— 没有设备/模拟器连接;
List of devices attached 设备/模拟器未连接到 adb 或无响应
USB连接:
在手机“设置”-“关于手机”连续点击“版本号”7 次,可以进入到开发者模式;然后可以到“设置”-“开发者选项”-“调试”里打开USB调试以及允许ADB的一些权限;连接时手机会弹出“允许HiSuite通过HDB连接设备”点击允许/接受即可;
驱动也是必须安装的,可以用豌豆荚,或者是手机商家提供的手机助手,点进去驱动器安装即可(部分电脑双击无法直接进入到驱动器里,可以使用右键找到进入点击即可)
在这里插入图片描述
在这里插入图片描述再次输入adb devices验证是否连接成功,连接成功即如下图:
在这里插入图片描述
在这里插入图片描述
也可以进行无线连接,其中非root权限也需借助USB线进行操作,完成后即可断开USB线;root用户可以进行无线连接,具体步骤可以参考网上资源。
**查看是否有root权限:**输入adb shell,然后输入su KaTeX parse error: Expected 'EOF', got '#' at position 5: 如果变为#̲则成功,如果仍为则未有root权限;恢复命令:adb unroot
查看应用列表:
查看所有应用列表:adb shell pm list packages
查看系统应用列表:adb shell pm list packages -s
查看第三方应用列表:adb shell pm list packages -3:
在这里插入图片描述
安装apk:adb install “-lrtsdg” “path_to_apk”
“-lrtsdg”:
-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

卸载apk:adb uninstall -k “packagename”
“packagename”:表示应用的包名,以下相同;
-k 参数可选,表示卸载应用但保留数据和缓存目录。
示例卸载 手机淘宝:adb uninstall com.taobao.taobao

清除应用数据与缓存命令:adb shell pm clear “packagename”
相当于在设置里的应用信息界面点击「清除缓存」和「清除数据」。
示例:adb shell pm clear com.taobao.taobao 表示清除 手机淘宝数据和缓存。

Android四大组件有Activity,Service服务,Content Provider内容提供,BroadcastReceiver广播接收器,具体不做多讲,常用的有以下:
查看前台 Activity命令:adb shell dumpsys activity activities | grep mFocusedActivity
查看正在运行的 Services命令:adb shell dumpsys activity services “packagename” 其中参数不是必须的,指定 “packagename” 表示查看与某个包名相关的 Services,不指定表示查看所有 Services。
查看应用详细信息命令:adb shell dumpsys package “packagename”
调起 Activity命令格式:adb shell am start [options]
例如:adb shell am start -n com.tencent.mm/.ui.LauncherUI表示调起微信主界面
在这里插入图片描述
调起 Service命令格式:adb shell am startservice [options]
例如:adb shell am startservice -n
com.tencent.mm/.plugin.accountsync.model.AccountAuthenticatorService 表示调起微信的某 Service。
强制停止应用命令:adb shell am force-stop “packagename”
例如强制停止淘宝:adb shell am force-stop com.taobao.taobao

模拟按键/输入: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 点亮屏幕
224 点亮屏幕
224 点亮屏幕
231 打开语音助手
276 如果没有 wakelock 则让系统休眠

滑动解锁:如果锁屏没有密码,是通过滑动手势解锁,那么可以通过 input swipe 来解锁。
命令:adb shell input swipe 300 1000 300 500
(其中参数 300 1000 300 500 分别表示起始点x坐标 起始点y坐标 结束点x坐标 结束点y坐标。)
输入文本:在焦点处于某文本框时,可以通过 input 命令来输入文本。
命令:adb shell input text *** (***即为输入内容)

打印日志
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 shell getprop ro.product.model
电池状况命令:adb shell dumpsys battery
屏幕分辨率命令: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 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。
android_id查看命令:adb shell settings get secure android_id
查看Android 系统版本:adb shell getprop ro.build.version.release
查看设备ip地址:adb shell ifconfig | grep Mask或者adb shell netcfg
查看CPU 信息命令:adb shell cat /proc/cpuinfo
查看内存信息命令:adb shell cat /proc/meminfo
更多硬件与系统属性
设备的更多硬件与系统属性可以通过如下命令查看:adb shell cat /system/build.prop
单独查看某一硬件或系统属性: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 安全补丁程序级别

修改设置
修改设置之后,运行恢复命令有可能显示仍然不太正常,可以运行 adb reboot 重启设备,或手动重启。
修改设置的原理主要是通过 settings 命令修改 /data/data/com.android.providers.settings/databases/settings.db 里存放的设置值。
修改分辨率命令:adb shell wm size 480x1024 恢复原分辨率命令:adb shell wm size reset
修改屏幕密度命令:adb shell wm density 160 表示将屏幕密度修改为 160dpi;恢复原屏幕密度命令:adb shell wm density reset
修改显示区域命令:adb shell wm overscan 0,0,0,200 四个数字分别表示距离左、上、右、下边缘的留白像素,以上命令表示将屏幕底部 200px 留白。恢复原显示区域命令:adb shell wm overscan reset
关闭 USB 调试模式命令:adb shell settings put global adb_enabled 0 需要手动恢复:「设置」-「开发者选项」-「Android 调试」

状态栏和导航栏的显示隐藏:adb shell settings put global policy_control
可由如下几种键及其对应的值组成,格式为 =:=。

key 含义
immersive.full 同时隐藏
immersive.status 隐藏状态栏
immersive.navigation 隐藏导航栏
immersive.preconfirms ?

这些键对应的值可则如下值用逗号组合:

value 含义
apps 所有应用
* 所有界面
packagename 指定应用
-packagename 排除指定应用

举例:adb shell settings put global policy_control immersive.full=* 表示设置在所有界面下都同时隐藏状态栏和导航栏。
举例:adb shell settings put global policy_control immersive.status=com.package1,com.package2:immersive.navigation=apps,-com.package3 表示设置在包名为 com.package1 和 com.package2 的应用里隐藏状态栏,在除了包名为 com.package3 的所有应用里隐藏导航栏。
恢复正常模式:adb shell settings put global policy_control null

实用功能
截图保存到电脑:adb exec-out screencap -p > sc.png
然后将 png 文件导出到电脑:adb pull /sdcard/sc.png
录制屏幕:录制屏幕以 mp4 格式保存到 /sdcard:adb shell screenrecord /sdcard/filename.mp4 需要停止时按 Ctrl-C,默认录制时间和最长录制时间都是 180 秒。
如果需要导出到电脑:adb pull /sdcard/filename.mp4
挂载、查看连接过的 WiFi 密码、开启/关闭 WiFi、设置系统日期和时间都需要root权限,不做多说。

使用 Monkey 进行压力测试:Monkey 可以生成伪随机用户事件来模拟单击、触摸、手势等操作,可以对正在开发中的程序进行随机压力测试。
简单用法:adb shell monkey -p < packagename > -v 500 表示向 指定的应用程序发送 500 个伪随机事件。

查看进程:adb shell ps
查看实时资源占用情况:adb shell top
查看进程 UID:adb shell dumpsys package | grep userId=

你可能感兴趣的:(adb)