编写不易,如有转载,请声明出处:http://blog.csdn.net/zxc514257857/article/details/61955221
1,通过无线连接或取消连接android设备
// 连接 (adb连接模拟器默认的端口号 5555)
adb connect 192.168.1.209
// 取消连接
adb disconnect 192.168.1.209
2,查看当前运行的android设备
adb devices
3,多个android设备连接,为命令指定目标设备
adb -s <serialNumber> 命令
4,杀死adb进程、开启adb进程(常用于AVD无法打印出Log情况)
//杀死adb进程
adb kill-server
//开启adb进程
adb start-server
5,文件复制
//电脑文件复制到手机
adb push d:\abd.txt /sdcard/
//手机文件复制到电脑
adb pull /sdcard/xyz.txt d:\
6,安装、卸载APK
//安装APK
adb install (-s 可选) 文件绝对路径
-s(设置软件安装在sd卡中,如不设置默认安装于内部存储器上)
-r(允许覆盖安装)
-l(将应用安装到保护目录 /mnt/asec)
-d(允许降级覆盖安装)
-g(授予所有运行时权限)
文件绝对路径(直接将apk文件拖过来即可显示绝对路径)
//卸载APK
adb uninstall (-k 可选) 文件绝对路径
-k(只删除应用程序,但保留应用程序的数据和缓存,如不设置则全部删除)
文件绝对路径(直接将apk文件拖过来即可显示绝对路径)
7,重启设备
adb reboot
8,打印系统日志(显示内容同AS的logcat内容)
adb logcat
// adb 过滤Log信息(MainActivity是TAG标识)
adb logcat -s MainActivity
9,获取或取消管理员权限
adb root
// 同
adb shell su
命令提示符变为#
如果要取消管理员权限使用
adb unroot
或exit退出一次也可
10,获取设备序列号
adb get-serialno
11,登录设备shell
adb shell
12,常用的adb shell命令
12.1 获取设备名称等信息
adb shell
// 设备信息主要是存放在"/system/build.prop"文件中,通过cat命令查看即可
cat /system/build.prop
12.2 获取设备IP地址
查看条件:android设备已经连接到Wifi获取到Ip地址并且android设备已经连接到电脑,通过adb devices可以查看到该设备
// 进入shell模式
adb shell
// 查看所有的网络端口情况
netcfg
// 进这个端口详细看一看
ifconfig wlan0
或者:
adb shell "ifconfig | grep Mask"
12.3 获取设备MAC地址
// Wifi的Mac地址 7.0手机出现:/system/bin/sh: cat: /sys/class/net/wlan0/address: Permission denied 不晓得么鬼
adb shell cat /sys/class/net/wlan0/address
// 如果设备有网口 可以获取到EthernetMac地址
adb shell cat /sys/class/net/eth0/address
12.4 获取设备CPU序列号
adb shell cat /proc/cpuinfo
12.5 查看CPU和内存占用情况
adb shell top
12.6 查看一次CPU和内存占用情况
adb shell top -n 1
12.7 查看CPU占用前六的进程
adb shell top -m 6
12.8 查看所有应用列表
adb shell pm list packages
-f(显示应用关联的 apk 文件)
-d(只显示 disabled 的应用)
-e(只显示 enabled 的应用)
-s(只显示系统应用)
-3(只显示第三方应用)
-i(显示应用的 installer)
-u(包含已卸载应用)
关键字(查找包含关键字的应用)
无(所有应用)
adb shell pm list packages 关键字
// 同
adb shell "pm list packages | grep 关键字"
12.9 清除数据及缓存
// 效果相当于在设置里的应用信息界面点击了清除缓存和清除数据
adb shell pm clear 包名
12.10 查看前台Activity
adb shell "dumpsys activity activities | grep mFocusedActivity"
12.11 启动应用
adb shell am start -n 包名/类名(不是包名或类名而是包名+类名的意思)
// 打开系统计算器应用
adb shell am start -n com.android.calculator2/com.android.calculator2.Calculator
12.12 启动服务
adb shell am startservice -n 包名/服务名(不是包名或服务名而是包名+服务名的意思)
打开微信的某 Service
12.13 发送广播
可以向所有组件广播,也可以向指定组件广播
// 设备启动完毕,向所有组件广播
adb shell am broadcast -a android.intent.action.BOOT_COMPLETED
// 设备启动完毕,向指定的包名/广播接收者(不是包名或广播接收者而是包名+广播接收者的意思)
adb shell am broadcast -a android.intent.action.BOOT_COMPLETED -n com.abc.test/.BootCompletedReceiver
可以通过adb触发的广播:
android.net.conn.CONNECTIVITY_CHANGE 网络连接发生变化
android.intent.action.SCREEN_ON 屏幕点亮
android.intent.action.SCREEN_OFF 屏幕熄灭
android.intent.action.BATTERY_LOW 电量低,会弹出电量低提示框
android.intent.action.BATTERY_OKAY 电量恢复了
android.intent.action.BOOT_COMPLETED 设备启动完毕
android.intent.action.DEVICE_STORAGE_LOW 存储空间过低
android.intent.action.DEVICE_STORAGE_OK 存储空间恢复
android.intent.action.PACKAGE_ADDED 安装了新的应用
android.net.wifi.STATE_CHANGE WiFi 连接状态发生变化
android.net.wifi.WIFI_STATE_CHANGED WiFi 状态变为启用/关闭/正在启动/正在关闭/未知
android.intent.action.BATTERY_CHANGED 电池电量发生变化
android.intent.action.INPUT_METHOD_CHANGED 系统输入法发生变化
android.intent.action.ACTION_POWER_CONNECTED 外部电源连接
android.intent.action.ACTION_POWER_DISCONNECTED 外部电源断开连接
android.intent.action.DREAMING_STARTED 系统开始休眠
android.intent.action.DREAMING_STOPPED 系统停止休眠
android.intent.action.WALLPAPER_CHANGED 壁纸发生变化
android.intent.action.HEADSET_PLUG 插入耳机
android.intent.action.MEDIA_UNMOUNTED 卸载外部介质
android.intent.action.MEDIA_MOUNTED 挂载外部介质
android.os.action.POWER_SAVE_MODE_CHANGED 省电模式开启
12.14 强制停止应用
// 根据包名停止应用
adb shell am force-stop 包名
// 强制停止日历应用
adb shell am force-stop com.android.calculator2
// 根据pid停止应用
adb shell ps
adb shell kill -9 (pid号码)
12.15 模拟按键/输入
在 adb shell 里有个很实用的命令叫 input,通过它可以做一些有趣的事情。
input 命令的完整 help 信息如下:
keycode 列表详见:欧阳鹏 我的Android进阶之旅——>Android KeyCode列表
// 模拟点击菜单键
adb shell input keyevent 82
// 模拟点击返回键
adb shell input keyevent 4
// 熄灭屏幕
adb shell input keyevent 223
// 熄灭屏幕
adb shell input keyevent 223
12.16 滑动解锁
如果手机解锁设置的为滑动解锁,可以通过input swipe 来解锁
// 参数 300 1000 300 500 分别表示起始点x坐标 起始点y坐标 结束点x坐标 结束点y坐标
adb shell input swipe 300 1000 300 500
12.17 输入文本
焦点处于文本框时,可以通过input命令来输入文本
adb shell input text test12345
12.18 查看设备型号
adb shell getprop ro.product.model
12.19 查看电池状况
adb shell dumpsys battery
12.20 查看屏幕理论分辨率
adb shell wm size
用上面的方法测试手机的分辨率为1920*1080,但手机底部是有虚拟按键的,分辨率肯定有些偏差
获取屏幕实际分辨率的代码请移步: Android开发中的一些小知识点记录(21-40) 第36点 ,获取的我手机的分辨率为1812*1080
12.21 查看屏幕密度
adb shell wm density
12.22 查看显示屏参数(包括屏幕分辨率,屏幕密度等信息)
adb shell dumpsys window displays
12.23 查看设备Id
adb shell settings get secure android_id
12.24 国际移动设备身份码IMEI
android4.4及以下版本获取IMEI:
adb shell dumpsys iphonesubinfo
android5.0及以上版本获取IMEI:
adb shell service call iphonesubinfo 1
把里面的有效内容提取出来就是 IMEI 了,比如这里的是 863272036345313
12.25 Android系统版本
adb shell getprop ro.build.version.release
12.26 其他更多硬件属性
一些其它有用的信息,它们也可通过 adb shell getprop <属性名> 命令单独查看,列举一部分属性如下:
属性名 含义
ro.build.version.sdk SDK 版本
ro.build.version.release Android 系统版本
ro.build.version.security_patch Android 安全补丁程序级别
ro.product.model 型号
ro.product.brand 品牌
ro.product.name 设备名
ro.product.board 处理器型号
ro.product.cpu.abilist CPU 支持的 abi 列表
persist.sys.isUsbOtgEnabled 是否支持 OTG
dalvik.vm.heapsize 每个应用程序的内存上限
ro.sf.lcd_density 屏幕密度
12.27 设置屏幕分辨率
// 设置屏幕分辨率为480x1024
adb shell wm size 480x1024
// 还原分辨率设置
adb shell wm size reset
12.28 设置屏幕密度
// 将屏幕密度修改为160dpi
adb shell wm density 160
// 还原屏幕密度
adb shell wm density reset
12.29 设置屏幕留白区域
// 分别表示距离左、上、右、下边缘的留白像素
// 下边缘留白200px
adb shell wm overscan 0,0,0,200
// 还原屏幕留白设置
adb shell wm overscan reset
12.30 关闭USB调试模式
adb shell settings put global adb_enabled 0
// 恢复需要手动恢复:设置--->开发者选项--->Android 调试
12.31 实现屏幕截屏
方式一:
// 手机上截屏并保存在电脑D盘的develop文件夹下,以sc.png命名
// -p 表示指定保存文件为 png 格式
adb exec-out screencap -p > D:\develop\sc.png
若方式一无法获取,则采用方式二:
// 手机上截屏并保存在安卓设备根目录下,以sc1.png命名
// -p 表示指定保存文件为 png 格式
adb shell screencap -p /sdcard/sc1.png
// 将根目录下的sc1.png文件保存在D盘的develop文件夹下
adb pull /sdcard/sc1.png D:\develop
12.32 实现屏幕录屏
// 录屏保存至内存卡,以filename.mp4命名
adb shell screenrecord /sdcard/filename.mp4
// ctrl+c 停止录制,默认录制时间和最长录制时间都是 180 秒
// 将录屏文件filename.mp4 复制到D盘的develop文件夹下
adb pull /sdcard/filename.mp4 d:\develop\
adb shell screenrecord - -help 查看 screenrecord 命令的帮助信息
- -size WIDTHxHEIGHT(视频的尺寸,比如 1280x720,默认是屏幕分辨率)
- -bit-rate RATE(视频的比特率,默认是 4Mbps)
- -time-limit TIME(录制时长,单位秒)
- -verbose(输出更多信息)
12.33 查看连接过的WIFI密码(需要Root权限)
// 获取Root权限
adb shell su
// 查看保存WIFI密码的文件
cat /data/misc/wifi/*.conf
ssid 即为我们在 WLAN 设置里看到的名称,psk 为密码,key_mgmt 为安全加密方式。
12.34 测试设备是否Root
adb shell su
如果已经获取Root权限:
如果没有获取Root权限:
12.35 Monkey测试
// 向 <packagename> 指定的应用程序发送 500 个伪随机事件
adb shell monkey -p <packagename> -v 500
13,adb shell后需要使用到的Linux命令
13.1 进入或返回
// 进入系统内指定文件夹
$ cd system/sd/data
// 返回上一级目录
$ cd ..
// 返回上两级目录
$ cd ../..
13.2 查看文件及文件夹
// 查看当前目录下非隐藏文件和目录名称
$ ls
// 查看当前目录下非隐藏文件和目录的详细信息,如创建者,创建时间,文件的读写权限列表等等
$ ll或ls -1
文件属性以d开头表示,目录(文件夹)
以-开头表示,文件
以l开头表示,链接(快捷方式)
以c开头表示,字符设备文件(键鼠)
以b开头表示,块设备(硬盘)
13.3 查看文件内容
// 查看文件中的内容
$ cat + 文件名
14,其他Windows控制台命令
// 清屏
cls
// 退出(控制台或当前shell)
exit
// 终止(当前shell的不间断操作)
ctrl+c