Skip to main content

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