[TOC]
ubuntu安装adb
卸载内置手机软件
显示所有应用
adb shell pm list packages
adb shell pm uninstall --user 0 com.miui.fm
先安装adb
1.adb下载
2.在变量里找到PATH,添加你的adb.exe的路径
手机连接adb
查看已连接的设备:adb devices
会显示serial number 和 device
有线:
手机打开开发者调试,打开cmd窗口,输入adb version 即可看到你的adb版本
无线:
手机先有线连接
确定手机和电脑端的wifi通讯端口:adb tcpip 5555
查看手机ip:adb shell netcfg
拔掉usb线,再adb connect 192.168.0.117
adb常用命令
adb 命令如下:
adb [-d|-e|-s ]
如果只有一个设备直接使用 adb
多个设备-s
文件
操作文件和文件夹有时会出现权限不够,Read-only file system。就需要adb remount 操作,获得权限。
创建xxx的文件夹
mkdir xxx
删除名字为xxx的文件夹及其里面的所有文件
rm -r xxx
删除文件xxx
rm xxx
删除xxx的文件夹
rmdir xxx
推送文件到设备:adb push C:\Users\csi\Videos\a.png /sdcard/Download/browser
本机路径容易获取,但是手机路径如何获取呢?可以使用adb shell
然后利用ls
列出文件,最后要退出adb shell
因为adb shell不能执行adb phsh/pull命令
拉取文件到电脑:adb pull /sdcard/Download/browser/UNv1.0.en-zh.tar.gz.00 C:\Users\csi\Videos
应用
查看已安装应用
adb shell pm list package
列出第三方应用
adb shell pm list package -3
-s:列出系统应用
-f:列出应用包名及对应的apk名及存放位置
-i:列出应用包名及其安装来源:
参数组合使用,例如查找第三方应用tencent的包名、存放位置及安装来源:
adb shell pm list package -f -3 -i tencent
列出对应包名的 .apk 位置
adb shell pm path com.tencent.mm
安装应用 :adb install [-r] xxx.apk
-r 允许覆盖安装。
-s 将应用安装到 sdcard。
-d 允许降级覆盖安装。
apk路径则可以直接将apk文件拖进cmd窗口,记得加空格。
pm install , 安装应用
目标 apk 若是存放在 PC 端,用 adb install 安装
目标 apk 若是存放于 Android 设备上,用 pm install 安装
如:
pm uninstall
, 卸载应用,同 adb uninstall , 后面跟的参数都是应用的包名
清除应用数据与缓存
adb shell pm clear (apk包名)
设置应用安装位置
pm set-install-location
获取应用安装位置
pm get-install-location
卸载应用 adb uninstall (应用的包名)
-k 卸载应用但保留数据和缓冲
删除系统应用:
adb remount
(重新挂载系统分区,使系统分区重新可写)。
有些设备并不能直接adb remount,必须要先以root身份进入,先执行adb root
,在执行adb remount
adb shell
cd system/app/
ls
rm ??.apk
adb 命令是 adb 这个程序自带的一些命令,而 adb shell 则是调用的 Android 系统中的命令,这些 Android 特有的命令都放在了 Android 设备的 system/bin 目录下。
查看wifi密码:
adb shell cat /data/misc/wifi/*.conf
am start :启动一个应用,这里以启动我们设备的“设置”应用为例
adb shell am start -n com.android.settings/.Settings
若不清楚“设置”的包名,可以通过命令,先找出当前开启的设备,然后复制路径即可
adb shell dumpsys activity | find “mFocusedActivity”
1.先打开app界面
查看当前app的入口
adb shell dumpsys window windows | findstr "Current"
2.打开App方式 1
adb shell am start -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -n com.eg.android.AlipayGphone/com.eg.android.AlipayGphone.AlipayLogin
方式2
adb shell am start -n com.eg.android.AlipayGphone/com.eg.android.AlipayGphone.AlipayLogin
杀死某个进程:(三个步骤)
adb shell
ps
查看进程命令
kill pid
强制停止应用:
adb shell am force-stop com.eg.android.AlipayGphone
交互
input命令
完整 help 信息如下:
Usage: input [
比如使用 adb shell input keyevent
命令,不同的 keycode 能实现不同的功能,完整的 keycode 列表详见 KeyEvent,摘引部分我觉得有意思的如下:
keycode | 含义 |
---|---|
3 | HOME 键 |
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 则让系统休眠 |
下面是 input
命令的一些用法举例。
电源键
adb shell input keyevent 26
菜单键
adb shell input keyevent 82
HOME 键
adb shell input keyevent 3
返回键
adb shell input keyevent 4
音量控制
增加音量:
adb shell input keyevent 24
降低音量:
adb shell input keyevent 25
静音:
adb shell input keyevent 164
媒体控制
播放/暂停:
adb shell input keyevent 85
停止播放:
adb shell input keyevent 86
播放下一首:
adb shell input keyevent 87
播放上一首:
adb shell input keyevent 88
恢复播放:
adb shell input keyevent 126
暂停播放:
adb shell input keyevent 127
点亮/熄灭屏幕
可以通过上文讲述过的模拟电源键来切换点亮和熄灭屏幕,但如果明确地想要点亮或者熄灭屏幕,那可以使用如下方法。
点亮屏幕:
adb shell input keyevent 224
熄灭屏幕:
adb shell input keyevent 223
发送文本内容,但是改命令无法发送中文
adb shell input text [文本内容(英文)]
input tap :点击屏幕
点击屏幕上坐标为 (200 200 )的位置
adb shell input tap 200 200
input swipe :滑动屏幕
从(520 300)滑到( 520 1000)
adb shell input swipe 520 300 520 1000
input keyevent 点击按键
adb shell input keyevent
截屏:adb shell screencap /sdcard/a.png
录制屏幕
adb shell screenrecord /sdcard/filename.mp4
需要导出到电脑:
adb pull /sdcard/filename.mp4
--size WIDTHxHEIGHT 视频的尺寸,比如 1280x720,默认是屏幕分辨率。
--bit-rate RATE 视频的比特率,默认是 4Mbps。
--time-limit TIME 录制时长,单位秒。
--verbose 输出更多信息。
打印 Android 的系统日志: adb logcat
可以通过重定向来将日志保存到指定的文件中 比如将其保存到G盘的一个文件adb logcat > G:\log\logcat.txt
显示屏参数
adb shell dumpsys window displays
型号
adb shell getprop ro.product.model
电池状况
adb shell dumpsys battery
adbd cannot run as root in production builds问题
验证你的手机是否已经root了
adb shell
su
行命令后,$ 变为 # 即 表示root 成功
安装adbd-insecure.apk
adb install adbd-insecure.apk
设置
打开应用将Enable insecure adbd 和 enable at boot 勾选上,设置好之后重进键入:adb root即可
下载地址:adbd-insecure.apk
查看当前分区挂载情况。
mount
找到其中我们关注的带 /system 的那一行:
/dev/block/platform/msm_sdcc.1/by-name/system /system ext4 ro,seclabel,relatime,data=ordered 0 0
重新挂载。
mount -o remount,rw -t yaffs2 /dev/block/platform/msm_sdcc.1/by-name/system /system
这里的 /dev/block/platform/msm_sdcc.1/by-name/system 就是我们从上一步的输出里得到的文件路径。如果输出没有错误的话,可以对 /system 下的文件操作了
设置系统日期和时间
注:需要 root 权限。
adb shell date -s 20160823.131500
表示将系统日期和时间更改为 2016 年 08 月 23 日 13 点 15 分 00 秒。
重启手机
adb reboot
使用 Monkey 进行压力测试
Monkey 可以生成伪随机用户事件来模拟单击、触摸、手势等操作,可以对正在开发中的程序进行随机压力测试。
adb shell monkey -p
表示向
刷机相关命令
重启到 Recovery 模式
adb reboot recovery
从 Recovery 重启到 Android
adb reboot
重启到 Fastboot 模式
adb reboot bootloader
通过 sideload 更新系统
如果我们下载了 Android 设备对应的系统更新包到电脑上,那么也可以通过 adb 来完成更新。
以 Recovery 模式下更新为例:重启到 Recovery 模式。
adb reboot recovery
在设备的 Recovery 界面上操作进入 Apply update-Apply from ADB。
注:不同的 Recovery 菜单可能与此有差异,有的是一级菜单就有 Apply update from ADB。
通过 adb 上传和更新系统。
adb sideload
查看实时资源占用情况
adb shell top
" daemon not running. starting it now on port 5037 ADB server didn't ACK
一般出现这种情况都是因为其他其他程序占用了5037端口(比如豌豆荚,刷机精灵等),
通过以下命令可以找出哪个进程占用了5037端口
netstat -ano | findstr "5037"