1、adb 简介
Android
Debug Brige 安卓调试桥
2、安装
1)Windows:
1、按照手机驱动(手机官网或者装应用宝、豌豆荚);
2、adb 可执行文件(sdk\platform-tools下面或者网上下载);
3、配置环境变量右键我的电脑->属性->高级设置->环境变量->Path,使用“;”隔开,把2当 中的adb 文件路径添加到Path当中
2)Linux:
1、不需要安装驱动(可能需要配置UID 和PID,参考3)
2、adb 路径 sdk\platform-tools
3、配置PATH,或者将adb 文件拷贝到/usr/bin/下面。
3、adb 命令
1)adb devices
[serialNumber] [state]
2)adb get-serialno
[serialNumber]
3)adb get-state
[state]
设备的状态有 3 钟,device , offline , unknown
device:设备正常连接
offline:连接出现异常,设备无响应
unknown:没有连接设备
4)adb wait-for-device shell
5)adb
kill-server , adb start-server , 结束 adb 服务, 启动 adb 服务,通常两个命令一起用
一般在连接出现异常,使用 adb devices 未正常列出设备, 设备状态异常时使用 kill-server, 然后运行 start-server 进行重启服务
6)adb push
adb pull 注意Windows路径当中使用反斜杠,Linux使用斜杠
7)adb root
adb remount重新挂载分区,可以写入
手机系统版本分为出货版本(user)、debug版本(userdebug)和工程版本(eng)
debug版本执行adb root 之后可以和工程版本一样,有相同的权限。
工程版本执行adb remount 可以删除和增加手机当中的文件
8)adb reboot 重新启动android 设备
9)adb bugreport , 打印dumpsys、dumpstate、logcat的输出,也是用于分析错误
10)adb install [-r]*.apk
-r替换
adb uninstall 包名
11)adb logcat 过滤日志
优先级是下面的字符,顺序是从低到高:
V —明细 (最低优先级) D —调试 I — 信息 W —警告 E — 错误
F —严重错误 S — 无记载 (最高优先级,没有什么会被记载)
adb logcat -b main/system/ radio(无线通讯日志)
默认是main
adb logcat -s tag
I/ActivityManager(585): Starting activity: Intent { action=android.intent.action...}
比方说上面的tag 指 的就是 ActivityManager
adb logcat ActivityManager:I *:S
过滤tag 为 ActivityManager但是打印级别大于等于I的输出日志
adb logcat | grep关键字或者正则表达式
举例:adb logcat | grep ActivityManager
12)无线连接adb
1、将手机usb连接到宿主,保证手机和宿主主机在同一网段
2、执行adb tcpip 5555
3、断开连接,查看手机ip地址
4、执行adb connect
5、如果执行,查看 adb devices会看到
:5555device
6、如果没有connect 成功,确信在同一个网段
adbkill-server
adbstart-server
adbdisconnect
adbconnect
13)adb forward 重定向,用于socket通信
用法: adb forward tcp:6100 tcp:7100
adb forward tcp:6100 local:logd
4)adb shell 命令 是system/bin/下面的命令
1)adb shell 理解
进入到手机内部,Android 底层也是linux ,可以将Android理解为一台电脑。
ssh /smb这些协议登录到其他电脑都需要IP地址,通过ip便可区分不同的设备。
当宿主电脑连接一台电脑的时候,可以执行adb shell
但连接两台以上的Android 手机的时候,直接执行adb shell 会提示
error: more than one device/emulator。
执行此命令应该指定设备的serialNumber
wenrongping@wen ~/work $ adb devices
List of devices attached
810EBMC3ZWPW device
QS3122PC0310SC1000036 device
adb -s810EBMC3ZWPWshell
adb -s810EBMC3ZWPW installhelloWorld.apk
如果只有一个Android 设备,可以使用adb -d shell
如果只有一个模拟器,可以使用adb -e shell
2)adb shell +命令 实际上执行的是Android手机里面的linux 命令:
常用linux命令:
cd 切换路径
ls 查看当前文件夹下面的文件和文件夹信息 ls -l
rm 删除某个文件和文件夹(-r)
mkdir 创建文件夹
cp 拷贝
pwd 查看当前的路径
dumpsys 查看系统状态
getprop 查看系统属性
3)adb shell am
1、start [options]
命令样例:
//使用Action方式打开系统设置-输入法设置
adbshell am start -a android.settings.INPUT_METHOD_SETTINGS
//使用组件名方式启动照相机功能
adbshell am start -n com.android.settings/.Settings
//打开拨号界面,并传递一个DATA_URI数据给拨号界面
adbshell am start -a android.intent.action.CALL -d tel:10086
2、startservice [options]
根据Intent 启动Service
命令样例:
//使用ComponentName 方式启动一个Service
adbshell am startservice com.guli.launcher/com.guli.launcher.widget.TimerService
3、force-stop
命令样例:
adbshell am force-stop com.android.settings
4、broadcast [options]
命令样例:
//恢复出厂设置的方法,会清除内存所有内容(慎重测试)
adbshell am broadcast -a android.intent.action.MASTER_CLEAR
4)pm list package 列出安装在设备上的应用
不带任何选项:列出所有的应用的包名(不知道怎么找应用的包名的同学看这里)
adb shell pm list package
-s:列出系统应用
adb shell pm list package -s
-3:列出第三方应用
adb shell pm list package -3
-f:列出应用包名及对应的apk名及存放位置
adb shell pm list package -f
-i:列出应用包名及其安装来源,结果显示例子:
package:com.zhihu.androidinstaller=com.xiaomi.market
举例:
adb shell pm list package -i guli
类似命令:
adb shell dumpsys activity
5)screencap 截图命令
adb shell screencap -p /sdcard/screen.png
截屏,保存至sdcard 目录
6)screenrecord 录制命令
adb shell screenrecord sdcard/record.mp4
7)adb shell
wm size
获取手机分辨率
8) adb shellime list -s
列出设备上的输入法
9)adb shell monkey
公司网站有介绍
10)adb shell input []
这个命令可以向 Android 设备发送按键事件,其源码 Input.java
inputtext ,发送文本内容,不能发送中文
adbshell input text test123456 在桌面的搜索界面做测试
前提先将键盘设置为英文键盘
I Inputkeyevent ,发送按键事件,KeyEvent.java
adbshell input keyevent KEYCODE_HOME
模拟按下 Home 键 ,源码里面有定义:
publicstatic final int KEYCODE_HOME = 3;
因此可以将命令中的 KEYCODE_HOME替换为 3
inputtap ,对屏幕发送一个触摸事件
adbshell input tap 500 500
点击屏幕上坐标为 500 500 的位置
inputswipe ,滑动事件
adbshell input swipe300 500 100 500
从右往左滑动屏幕
如果版本不低于 4.4 , 可以模拟长按事件
adbshell input swipe 500 500 501 501 2000
其实就是在小的距离内,在较长的持续时间内进行滑动,最后表现出来的结果就是长按动作
6)如何kill掉一个程序,比如杀掉monkey
1、adb shell
2、ps | grep monkey
root@k06td_a:/ #ps | grep monkey
root 26163514 1875372 46492 binder_thr 7f7a710fd8 Scom.android.commands.monkey
3、kill 26163
7)获取系统属性
adb shell getprop 查看手机当中的所有属性
adbshell getprop ro.build.version.sdk
8)介绍手MTK机文件夹
system/priv-app system/app/ 系统apk存放路径
/data/data/包名 下面存放数据文件、数据库文件
/vendor/ 有时会放一些第三方app
/system/framework 放置系统的sdk文件
/system/media/ 存放audio images video 文件