当前位置:   article > 正文

python自动化 adb命令_python执行adb命令

python执行adb命令

基本用法

为命令指定目标设备

adb [-d|-e|-s <serialNumber>] <command>
  • 1
参数含义
-d指定当前唯一通过 USB 连接的 Android 设备为命令目标
-e指定当前唯一运行的模拟器为命令目标
-s <serialNumber>指定相应 serialNumber 号的设备/模拟器为命令目标

启动/停止

adb start-server
adb kill-server
  • 1
  • 2

查看 adb 版本

adb version
  • 1

以 root 权限运行 adbd

adb 的运行原理是 PC 端的 adb server 与手机端的守护进程 adbd 建立连接,然后 PC 端的 adb client 通过 adb server 转发命令,adbd 接收命令后解析运行。
但有些命令需要 root 权限才能执行。

adb root
adb unroot
  • 1
  • 2

指定 adb server 的网络端口

adb -P <port> start-server
  • 1

默认端口为 5037。

设备连接管理

adb devices
  • 1

输出格式为serialNumber 即 SN,state 有如下几种:

  1. offline —— 表示设备未连接成功或无响应。

  2. device —— 设备已连接。注意这个状态并不能标识 Android 系统已经完全启动和可操作,在设备启动过程中设备实例就可连接到 adb,但启动完毕后系统才处于可操作状态。

  3. no device —— 没有设备/模拟器连接。

应用管理

查看应用列表

adb shell pm list packages [-f] [-d] [-e] [-s] [-3] [-i] [-u] [--user USER_ID] [FILTER]
  • 1
参数显示列表
所有应用
-f显示应用关联的 apk 文件
-d只显示 disabled 的应用
-e只显示 enabled 的应用
-s只显示系统应用
-3只显示第三方应用
-i显示应用的 installer
-u包含已卸载应用
<FILTER>包名包含 <FILTER> 字符串

安装 APK

adb install [-lrtsdg] <path_to_apk>
  • 1
参数含义
-l将应用安装到保护目录 /mnt/asec
-r允许覆盖安装
-t允许安装 AndroidManifest.xml 里 application 指定 android:testOnly="true" 的应用
-s将应用安装到 sdcard
-d允许降级覆盖安装
-g授予所有运行时权限
--abi abi-identifier为特定 ABI 强制安装 apk,abi-identifier 可以是 armeabi-v7a、arm64-v8a、v86、x86_64 等

卸载应用

adb uninstall [-k] <packagename>
  • 1

packagename 表示应用的包名,-k 参数可选,表示卸载应用但保留数据和缓存目录。

清除应用数据与缓存

adb shell pm clear <packagename>
  • 1

查看前台 Activity

adb shell dumpsys activity activities | grep mResumedActivity
  • 1

查看正在运行的 Services

adb shell dumpsys activity services [<packagename>]
  • 1

查看应用详细信息

adb shell dumpsys package <packagename>
  • 1

查看应用安装路径

adb shell pm path <PACKAGE>
  • 1

与应用交互

启动应用/ 调起 Activity

command用途
start [options] <INTENT>启动 <INTENT> 指定的 Activity
startservice [options] <INTENT>启动 <INTENT> 指定的 Service
broadcast [options] <INTENT>发送 <INTENT> 指定的广播
force-stop <packagename>停止 <packagename> 相关的进程
参数含义
-a <ACTION>指定 action,比如 android.intent.action.VIEW
-c <CATEGORY>指定 category,比如 android.intent.category.APP_CONTACTS
-n <COMPONENT>指定完整 component 名,用于明确指定启动哪个 Activity,如 com.example.app/.ExampleActivity
adb shell am start [options] <INTENT>
  • 1

调起 Service

adb shell am startservice [options] <INTENT>

# 显示虚拟按键
adb shell am startservice -n com.android.systemui/.SystemUIService
  • 1
  • 2
  • 3
  • 4

强制停止应用

adb shell am force-stop <packagename>
  • 1

文件管理

复制设备里的文件到电脑

adb pull <设备里的文件路径> [电脑上的目录]
  • 1

复制电脑里的文件到设备

adb push <电脑上的文件路径> <设备里的目录>
  • 1

模拟按键/输入

adb shell input keyevent <keycode>
  • 1
keycode含义
3HOME 键
4返回键
5打开拨号应用
6挂断电话
24增加音量
25降低音量
26电源键
27拍照(需要在相机应用里)
64打开浏览器
82菜单键
85播放/暂停
86停止播放
87播放下一首
88播放上一首
122移动光标到行首或列表顶部
123移动光标到行末或列表底部
126恢复播放
127暂停播放
164静音
176打开系统设置
187切换应用
207打开联系人
208打开日历
209打开音乐
210打开计算器
220降低屏幕亮度
221提高屏幕亮度
223系统休眠
224点亮屏幕
231打开语音助手
276如果没有 wakelock 则让系统休眠

滑动解锁

adb shell input swipe 300 1000 300 500
  • 1

参数 300 1000 300 500 分别表示起始点x坐标 起始点y坐标 结束点x坐标 结束点y坐标。

输入文本

adb shell input text hello
  • 1

查看日志

Android 系统的日志分为两部分,底层的 Linux 内核日志输出到 /proc/kmsg,Android 的日志输出到 /dev/log。

Android 日志

[adb] logcat [<option>] ... [<filter-spec>] ...
  • 1

按级别过滤日志
Android 的日志分为如下几个优先级(priority):

  1. V —— Verbose(最低,输出得最多)
  2. D —— Debug
  3. I —— Info
  4. W —— Warning
  5. E —— Error
  6. F —— Fatal
  7. S —— Silent(最高,啥也不输出)

按某级别过滤日志则会将该级别及以上的日志输出。

adb logcat *:W
会将 Warning、Error、Fatal 和 Silent 日志输出。
  • 1
  • 2

按 tag 和级别过滤日志

adb logcat ActivityManager:I MyApp:D *:S
表示输出 tag ActivityManager 的 Info 以上级别日志,输出 tag MyApp 的 Debug 以上级别日志,及其它 tag 的 Silent 级别日志(即屏蔽其它 tag 日志)。
  • 1
  • 2

清空日志

adb logcat -c
  • 1

内核日志

adb shell dmesg
  • 1

查看设备信息

型号

adb shell getprop ro.product.model
  • 1

电池状况

adb shell dumpsys battery
  • 1

屏幕分辨率

adb shell wm size
  • 1

屏幕密度

adb shell wm density
  • 1

显示屏参数

adb shell dumpsys window displays
  • 1

android_id

adb shell settings get secure android_id
  • 1

Android 系统版本

adb shell getprop ro.build.version.release
  • 1

IP 地址

adb shell ifconfig | grep Mask

查看局域网 IP:
adb shell ifconfig wlan0
  • 1
  • 2
  • 3
  • 4

Mac 地址

adb shell cat /sys/class/net/wlan0/address
  • 1

CPU 信息

adb shell cat /proc/cpuinfo
  • 1

内存信息

adb shell cat /proc/meminfo
  • 1

修改设置

修改设置之后,运行恢复命令有可能显示仍然不太正常,可以运行 adb reboot 重启设备,或手动重启。

分辨率

adb shell wm size 480x1024

恢复原分辨率命令:
adb shell wm size reset
  • 1
  • 2
  • 3
  • 4

屏幕密度

adb shell wm density 160

恢复原屏幕密度命令:
adb shell wm density reset
  • 1
  • 2
  • 3
  • 4

显示区域

adb shell wm overscan 0,0,0,200

四个数字分别表示距离左、上、右、下边缘的留白像素,以上命令表示将屏幕底部 200px 留白。
adb shell wm overscan reset
  • 1
  • 2
  • 3
  • 4

关闭 USB 调试模式

adb shell settings put global adb_enabled 0
  • 1

实用功能

屏幕截图

截图保存到电脑:
adb exec-out screencap -p > sc.png
  • 1
  • 2
参数含义
-p指定保存文件为 png 格式
-d display-id指定截图的显示屏编号(有多显示屏的情况下)

录制屏幕

录制屏幕以 mp4 格式保存到 /sdcard:

adb shell screenrecord /sdcard/filename.mp4
  • 1
参数含义
--size WIDTHxHEIGHT视频的尺寸,比如 1280x720,默认是屏幕分辨率。
--bit-rate RATE视频的比特率,默认是 4Mbps。
--time-limit TIME录制时长,单位秒。
--verbose输出更多信息。

查看连接过的 WiFi 密码

注:需要 root 权限。

adb shell
su
cat /data/misc/wifi/*.conf

或者

adb shell
su
cat /data/misc/wifi/WifiConfigStore.xml
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

设置系统日期和时间

注:需要 root 权限。

adb shell
su
date -s 20160823.131500
表示将系统日期和时间更改为 2016 年 08 月 23 日 13 点 15 分 00 秒。
  • 1
  • 2
  • 3
  • 4

重启手机

adb reboot
  • 1

检测设备是否已 root

adb shell
su

此时命令行提示符是 $ 则表示没有 root 权限,是 # 则表示已 root。
  • 1
  • 2
  • 3
  • 4

使用 Monkey 进行压力测试

Monkey 可以生成伪随机用户事件来模拟单击、触摸、手势等操作,可以对正在开发中的程序进行随机压力测试。

adb shell monkey -p <packagename> -v 500
  • 1

monkey

开启/关闭 WiFi

注:需要 root 权限。

开启 WiFi:

adb root
adb shell svc wifi enable
关闭 WiFi:

adb root
adb shell svc wifi disable
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

参考

adb

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/287745
推荐阅读
相关标签
  

闽ICP备14008679号