ADB 使用
连接和断开
adb connect IP //连接
adb disconnect IP //断开
如果出现 Connection refused 字样,尝试执行以下命令:
adb kill-server
adb tcpip 5555
adb connect <host>[:<port>]
抓取安装包
adb pull /data/app/packageName-1.apk
拷贝文件
adb push localFile remoteFile
问题
# 拷贝失败
$ adb: error: failed to copy file to file: remote Read-only file system
# 最简解决方案
$ adb remount
安装
adb install -r package
多台设备中选择单个设备操作
adb -s 设备号
查看屏幕分辨率和 dpi
$ adb shell wm size
$ adb shell dumpsys window displays
# 查看dpi
$ adb shell wm density
模拟屏幕点击滑动
# 1234 实际向界面注入1234文字,有输入框,能明显看到效果
$ adb shell input text
# 键盘事件,4 为返回
$ adb shell input keyevent 4
# 单击触屏事件 ,模拟点击x=100 y = 300 位置
$ adb shell input tap 100 300
# 触屏滑动事件,模拟滑动,从x =100 y = 300 滑动到x=500 y=300位置
$ adb shell input swipe 100 300 500 300
# 模拟按下轨迹球
$ adb shell input press
# 模拟轨迹球滑动 x 方向100 y方向300
$ adb shell input roll 100 300
屏幕旋转
# 取值范围为0 1 2 3
adb shell content insert --uri content://settings/system --bind name:s:user_rotation --bind value:i:1
content query --uri content://settings/system --projection name:value --where "name='user_rotation'"
截图
# 截图直接保存到电脑
$ adb shell screencap -p > screen.png
发送广播
adb shell am 参数
[-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> ...]
[--el <EXTRA_KEY> <EXTRA_LONG_VALUE> ...]
[-n <COMPONENT>]
[-f <FLAGS>] [<URI>]
Example:
adb shell am broadcast -a com.android.kevin
adb shell am broadcast -a com.android.server.PhoneWindowManager.action.EXTKEYEVENT --ei scanCode 190
启动应用
adb shell am start -n 包名/类全路径或者AndroidManifest.xml中配置的路径
输入文本
adb shell input text "hello,world"
启动 service
adb shell am startservice -n 包名/类全路径或者AndroidManifest.xml中配置的路径
设置休眠时间
# 永不休眠
$ settings put system screen_off_timeout 2147483647
# 30s休眠
$ settings put system screen_off_timeout 30
设置背光
# 设置背光
$ settings put system screen_brightness 150
# 获取背光
$ settings get system screen_brightness
设置提示音
# 设置触摸提示音 0 开启 1 关闭
settings put system sound_effects_enabled 0
停止应用
adb shell am force-stop 包名
重启机器
adb reboot
查看进程
adb shell ps
杀死进程
adb shell kill [pid]
远程触发 GC
kill -10 PID
卸载应用
$ adb uninstall packageName
# 或者 adb shell 后在设备里面操作
$ pm uninstall packageName
Logcat 过滤消息
# -v time 添加log 时间,grep 需要转义
$ logcat -v time | grep action\"\:\"fresh\"
设置网卡 MTU
# 需要先把网卡down以后再设置
ifconfig eth0 down
ifconfig eth0 mtu 1600 up
修改系统设置
# 屏幕亮度是否为自动
$ adb shell settings get system screen_brightness_mode
# 获取屏幕亮度
$ adb shell settings get system screen_brightness
# 设置屏幕亮度
$ adb shell settings put system screen_brightness 150
# 获取屏幕休眠时间(单位是毫秒)
$ adb shell settings get system screen_off_timeout
# 设置屏幕休眠时间(单位是毫秒)
$ adb shell settings put system screen_off_timeout 2147483647
系统 Activity
# Android 6.0 TV开发者选项
com.android.tv.settings/.system.DeveloperOptionsActivity
# 系统设置
com.android.settings/.Settings
# TV系统设置界面
com.android.tv.settings/.MainSettings
# 主界面
com.android.launcher3/.Launcher
查看系统限制单个应用最大内存
这些参数存在 /system/build.prop 文件中
# 单个应用可用最大内存
$ adb shell getprop dalvik.vm.heapgrowthlimit
# heapsize参数表示单个进程可用的最大内存
$ adb shell getprop dalvik.vm.heapsize
# heapstartsize表示应用程序启动后为其分配的初始内存大小
$ adb shell getprop dalvik.vm.heapstartsize
查看内存使用情况
adb shell dumpsys meminfo $package_name or $pid
修改默认输入法
打开 system 目录权限
$ mount -o remount,rw /system
# script 中 remount 系统根目录
su -c "mount -o rw,remount /"
# script 中 umount 系统根目录
su -c "umount -a"
设置声卡进入 Standby 模式时长
ro.audio.flinger_standbytime_ms=50
打开 adb 调试
TCP/IP 方式
$ adb tcpip 5555
# 或者
$ setprop service.adb.tcp.port 5555
$ stop adbd
$ start adbd
Usb 方式
$ adb usb
# 或者
$ setprop service.adb.tcp.port -1
$ stop adbd
$ start adbd
捕获 adb 自身日志
Windows
$ adb kill-server
$ set ADB_TRACE=all
$ adb devices
# 查看日志所在的目录,日志文件为adb.log
$ echo %Temp%
macOS
$ adb kill-server
$ set ADB_TRACE=all
$ adb devices
# 查看日志所在的目录,日志文件为adb.$uid.log,id -a user_name可以查看uid
$ echo $TMPDIR
控制是否存在 navigationBar
修改 system/build.prop:
qemu.hw.mainkeys=1隐藏导航栏qemu.hw.mainkeys=0显示导航栏
查看 Android 支持的硬解码信息
通过/system/etc/media_codecs.xml可以确定当前设备支持哪些硬解码。
通过/system/etc/media_profiles.xml可以知道设备支持的具体profile和level等详细信息。
查看 Android 版本号和 SDK 版本号
# 获取系统版本
adb shell getprop ro.build.version.release
# 获取系统api版本
adb shell getprop ro.build.version.sdk
刷机相关
# 重启到Recovery界面
adb reboot recovery
# 重启到bootloader界面
adb reboot bootloader
查看设备信息
查看系统版本
getprop ro.build.version.release
查看应用版本
adb shell dumpsys package shine.com.doorscreen | grep version
查看 Apk 信息
找到 sdk 目录,进入 build-tools 下随便一个版本,然后执行命令:
./aapt dump badging app-debug.apk
查看 sharedPreferences
在 data/data/packageName 下有一个 shared_prefs 文件夹,里面放着通过 sharedPreferences 存放的值
cd /data/data/packageName/shared_prefs
查看 CPU 架构
$ cat /proc/cpuinfo
adb shell getprop ro.product.cpu.abi
查看最上层 Activity 名称
dumpsys activity top | busybox awk '{print $2}' | busybox sed -n '2p'
查看程序启动页
adb shell dumpsys package <package_name> | grep -A1 "MAIN"
查看网卡速率
cat /sys/class/net/eth0/speed
查看 CPU 工作频率
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq
查看运行内存
cat proc/meminfo
查看 GPU 型号
dumpsys | grep GLES
查看已安装应用
$ adb shell pm list packages
# 查看安装路径
$ adb shell pm path <PACKAGE>
# 清楚数据和缓存
$ adb shell pm clear <PACKAGE>
查看声卡
cat /proc/asound/cards