app测试-adb的运用

下载地址

  • 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.sdkSDK 版本
ro.build.version.releaseAndroid 系统版本
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_patchAndroid 安全补丁程序级别

获取 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查看命令

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含义
3HOME 键
4返回键
5打开拨号应用
6挂断电话
26电源键
27拍照(需要在相机应用里)
61Tab键
64打开浏览器
67退格键
80拍照对焦键
82菜单键
85播放/暂停
86停止播放
92向上翻页键
93向下翻页键
111ESC键
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
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安澜仙王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值