Android开发——常用ADB命令的使用
2016-07-13 16:34
621 查看
ADB全称Android Debug Bridge, 是android sdk里的一个工具, 位于 SDK/platform-tools/ 目录下,其源码位于/system/core/adb 目录下。
ADB采用C/S架构,包括以下三个部分:
(1)客户端部分:运行在PC端,可以通过在命令行中运行adb命令来调用该客户端。
(2)服务端部分:运行在PC端的后台进程,用于管理客户端与运行在模拟器/真机的守护进程通信。
(3)守护进程部分:运行于模拟器/真机的后台。需要在手机上打开选项settings-applications-development-USBdebugging。
ADB的工作原理:
(1)当启动一个ADB客户端时,客户端首先检查ADB服务端进程是否运行,没有运行则启动服务端,否则客户端使用TCP 5037端口向服务端通发送ADB命令(服务端可以管理连接多个客户端,因此这些客户端在控制模拟器/真机的角度来看是等价的)。如下图所示:
(2)接下来服务端通过扫描 5555-5585 之间的奇数号端口与所有正在运行的模拟器/真机连接。若没有发现则报error:no devices found,一旦发现 adb 守护进程,就通过此端口进行连接。当服务端与所有的模拟器建立连接之后,就可以使用 adb 命令来控制或者访问了。
需要说明的是,每一个模拟器/真机使用一对有序的端口,偶数号端口用于控制台连接,奇数号端口用于 adb 连接。
ADB的功能如下:
运行设备的shell(命令行)
管理模拟器或设备的端口映射
图片链接和图片上传
计算机和设备之间上传/下载文件
将本地apk软件安装至模拟器或android设备
ADB常用的几个命令:
1.查看设备
这个命令是查看当前连接的设备, 连接到计算机的android设备或者模拟器将会列出显示。在模拟器和真机同时在线时,可以通过如下命令进入到指定设备下的Shell。
在proc目录下我们可以看到一些比较熟悉的目录/文件,比如data,system,cpuinfo(获取CPU信息),uid_stat(获取流量信息)等。
2.设备信息相关
这个命令用于重启设备。
这个命令用于获取设备序列号。
这个命令用于获取设备Mac地址。
这个命令用于获取设备型号。
这个命令用于获取设备Android版本。
这个命令用于获取设备屏幕分辨率。
这个命令用于获取设备密度。
3.安装/卸载软件
这个命令将指定的apk文件安装到设备上。
如果加 -r 参数,为保留配置和缓存文件重新安装APK。
如果加 -s 参数,为安装APK到SD卡。
如果加 -k 参数,为卸载软件但是保留配置和缓存文件。
4.启动/强制停止应用
上述两个命令用于启动和强制停止应用,代码中有一点小区别需要注意。
5.登录设备shell
这个命令将登录设备的shell。
后面加command命令将是直接运行设备命令,相当于执行远程命令。
6.包管理
这个命令列出手机装的所有app的包名。
在命令最后加“-s”表示列出系统应用的包名,加“-3”列出第三方应用的包名。
当然可以使用 grep 命令来过滤结果。
这个命令用于获取指定包名的存储路径。
7.清除应用数据与缓存
有些时候我们测试需要清除数据与缓存。
8.和PC端互传文件
示例代码如下(完成sd卡下的20160712目录拷贝到PC端的e盘根目录下):
push 完成从PC端到Android端,pull 反之。
这里要注意,如果在PC端cmd直接adb shell再执行adb pull会发生“device not found”错误,必须退出shell命令才可以完成文件传输。因此,在代码里实现文件通过ADB传输到电脑,是不可能的,代码里如果按照如下命令执行adb pull会在返回的错误输出流中读取到“device not found”错误信息,同时可以看到waitFor()返回值为1,虽然官方表示返回值为1是权限问题,但在这里明显不是权限问题,希望遇到同样问题的小伙伴止住继续探索权限的步伐。要想在代码里实现文件传输,最好还是使用Socket等技术。
9.删除系统自带软件(需Root)
接着重启手机即可。
10. Wifi调试真机
有时候我们需要利用手机的OTG模式,需要手机连接U盘,那么我们就不能再使用USB线进行调试了。
用Wifi调试的过程如下,先连接USB线,输入adb tcpip命令,拔出USB线,再电脑端继续输入adb connect命令,后面的IP写局域网分配给真机的地址。显示成功后,就可以使用手机连接U盘,并且和连接USB线的调试有一样的效果啦。
11. ADB Forward
很实用的功能,可以在手机和PC端之间直接使用Socket进行通信。
12. ADB IDEA
这里推荐一个 AS 插件 ADB IDEA ,装了这款插件可以直接在 AS 中快速操作一些 ADB 命令,非常方便。快捷键直接唤起:
ADB采用C/S架构,包括以下三个部分:
(1)客户端部分:运行在PC端,可以通过在命令行中运行adb命令来调用该客户端。
(2)服务端部分:运行在PC端的后台进程,用于管理客户端与运行在模拟器/真机的守护进程通信。
(3)守护进程部分:运行于模拟器/真机的后台。需要在手机上打开选项settings-applications-development-USBdebugging。
ADB的工作原理:
(1)当启动一个ADB客户端时,客户端首先检查ADB服务端进程是否运行,没有运行则启动服务端,否则客户端使用TCP 5037端口向服务端通发送ADB命令(服务端可以管理连接多个客户端,因此这些客户端在控制模拟器/真机的角度来看是等价的)。如下图所示:
(2)接下来服务端通过扫描 5555-5585 之间的奇数号端口与所有正在运行的模拟器/真机连接。若没有发现则报error:no devices found,一旦发现 adb 守护进程,就通过此端口进行连接。当服务端与所有的模拟器建立连接之后,就可以使用 adb 命令来控制或者访问了。
需要说明的是,每一个模拟器/真机使用一对有序的端口,偶数号端口用于控制台连接,奇数号端口用于 adb 连接。
ADB的功能如下:
运行设备的shell(命令行)
管理模拟器或设备的端口映射
图片链接和图片上传
计算机和设备之间上传/下载文件
将本地apk软件安装至模拟器或android设备
ADB常用的几个命令:
1.查看设备
adb devices
这个命令是查看当前连接的设备, 连接到计算机的android设备或者模拟器将会列出显示。在模拟器和真机同时在线时,可以通过如下命令进入到指定设备下的Shell。
adb -s <设备名称> shell
在proc目录下我们可以看到一些比较熟悉的目录/文件,比如data,system,cpuinfo(获取CPU信息),uid_stat(获取流量信息)等。
2.设备信息相关
adb reboot
这个命令用于重启设备。
adb get-serialno
这个命令用于获取设备序列号。
adb shell cat /sys/class/net/wlan0/address
这个命令用于获取设备Mac地址。
adb shell getprop ro.product.model
这个命令用于获取设备型号。
adb shell getprop ro.build.version.release
这个命令用于获取设备Android版本。
adb shell wm size
这个命令用于获取设备屏幕分辨率。
adb shell wm density
这个命令用于获取设备密度。
3.安装/卸载软件
adb install <apk文件路径>
这个命令将指定的apk文件安装到设备上。
如果加 -r 参数,为保留配置和缓存文件重新安装APK。
如果加 -s 参数,为安装APK到SD卡。
adb uninstall <包名>
如果加 -k 参数,为卸载软件但是保留配置和缓存文件。
4.启动/强制停止应用
adb shell am start -n <packagename>/.ui.SplashActivity
adb shell am force-stop <packagename>
上述两个命令用于启动和强制停止应用,代码中有一点小区别需要注意。
5.登录设备shell
adb shell <command命令>
这个命令将登录设备的shell。
后面加command命令将是直接运行设备命令,相当于执行远程命令。
6.包管理
adb shell pm list packages
这个命令列出手机装的所有app的包名。
在命令最后加“-s”表示列出系统应用的包名,加“-3”列出第三方应用的包名。
adb shell pm list packages | grep qq
当然可以使用 grep 命令来过滤结果。
adb shell pm path <packageName>
这个命令用于获取指定包名的存储路径。
7.清除应用数据与缓存
adb shell pm clear <packagename>
有些时候我们测试需要清除数据与缓存。
8.和PC端互传文件
adb push <本地路径> <远程路径> adb pull <远程路径> <本地路径>
示例代码如下(完成sd卡下的20160712目录拷贝到PC端的e盘根目录下):
adb pull /storage/sdcard0/20160712 e://
push 完成从PC端到Android端,pull 反之。
这里要注意,如果在PC端cmd直接adb shell再执行adb pull会发生“device not found”错误,必须退出shell命令才可以完成文件传输。因此,在代码里实现文件通过ADB传输到电脑,是不可能的,代码里如果按照如下命令执行adb pull会在返回的错误输出流中读取到“device not found”错误信息,同时可以看到waitFor()返回值为1,虽然官方表示返回值为1是权限问题,但在这里明显不是权限问题,希望遇到同样问题的小伙伴止住继续探索权限的步伐。要想在代码里实现文件传输,最好还是使用Socket等技术。
process = Runtime.getRuntime().exec("su"); os = new DataOutputStream(process.getOutputStream()); os.write(command.getBytes()); os.flush();
9.删除系统自带软件(需Root)
adb shell cd system/app rm <目标APP>.*
接着重启手机即可。
10. Wifi调试真机
adb tcpip 5555 adb connect <192.168.XXX.XXX>
有时候我们需要利用手机的OTG模式,需要手机连接U盘,那么我们就不能再使用USB线进行调试了。
用Wifi调试的过程如下,先连接USB线,输入adb tcpip命令,拔出USB线,再电脑端继续输入adb connect命令,后面的IP写局域网分配给真机的地址。显示成功后,就可以使用手机连接U盘,并且和连接USB线的调试有一样的效果啦。
11. ADB Forward
adb forward tcp:6100 tcp:7100 // PC上所有6100端口通信数据将被重定向到手机端7100端口server上
很实用的功能,可以在手机和PC端之间直接使用Socket进行通信。
12. ADB IDEA
这里推荐一个 AS 插件 ADB IDEA ,装了这款插件可以直接在 AS 中快速操作一些 ADB 命令,非常方便。快捷键直接唤起:
//Mac OSX: Ctrl+Shift+A //Windows/Linux: Ctrl+Alt+Shift+A
相关文章推荐
- [置顶] android音乐播放器开发在线加载歌词
- Android开发——常用ADB命令的使用
- SSH方式连接Android设备
- 在windows上下载安装Android sdk
- 安卓学习笔记---AndroidStudio快捷键
- (15.1.19)我的 Android 开发实战经验总结
- Android Settings(系统设置)源码分析(一)
- android 设定activity的进入和退出效果
- Android自定义开关(可滑动,点击)
- (4.6.18)Android编码命名规范
- Android崩溃异常捕获方法
- Android查询/设置Settings的值
- 一次UsageStatsManager在UTC零点清零数据的Debug
- Android酷炫实用的开源框架
- Android Studio 测试小结
- Android OpenGL ES零基础系列(二):OpenGL坐标系的深入理解
- android,NDK, write logs to a file
- android中不依赖activity的dialog弹窗的实现
- Android Fragment 真正的完全解析(上)
- Mac查看Android studio debug.jks的SHA1值