ADB命令
adb工具即Android Debug Bridge(安卓调试桥)tools,是Android的调试工具。通过ADB的连接,可以在Shell中方便地通过DDMS(Dalvik Debug Monitor Service,Dalvik调试监控服务)来调试Android程序。ADB的工作方式是监听Socket TCP 5554端口,当运行Android Studio时,ADB进程就会自动运行。ADB是一个客户端-服务器端程序,客户端是开发者的主机,服务器端是连接的Android设备。它就是一个命令行窗口,用于通过电脑端与模拟器或者真实设备交互。
ADB的主要功能有:
- 在Shell中操作设备,如MonkeyTest、启动或关闭手机等;
- 在计算机和模拟器或真实设备之间传输文件,如上传或下载文件;
- 在模拟器或真实设备中安装或卸载本地应用的APK包;
分类命令
ADB Debugging
ADB常用的一些命令的通用格式如下:
adb [-d|-e|-s <serialNumber>] <command>
ADB是一种一对多的架构,所以在使用ADB命令的时候,如果有多个设备连接,需要特别指定我们所针对的目标对象。如果不清楚设备对应的serialNumber,可以先执行如下查询指令:
adb devices
命令 | 解释 |
---|---|
adb -s serialNumber(多个设备连接时的指定设备的串口号) shell | 进入指定设备 |
adb version | 查看adb版本 |
adb devices | 主要用于打印当前连接的所有模拟器或者设备 |
adb get-stat | 查看连接状态 |
adb logcat | 查看日志 |
adb forward | |
adb start-server | 启动adb server |
adb kill-server | 终止adb进程 |
adb reboot | 重启设备 |
Wireless
命令 | 解释 |
---|---|
adb connect | |
adb usb | 设置设备以USB形式连接PC |
Package Manager
命令 | 解释 |
---|---|
adb install apkPathXxx(安装包文件所在路径) | 直接安装应用 |
adb install -r apkPathXxx(安装包文件所在路径) | 替代存在的应用,不会删除应用数据,用于更新应用特别方便 |
adb install -s apkPathXxx(安装包文件所在路径) | 安装应用到sd卡中 |
adb uninstall com.kang.xxx | 直接删除应用和所有数据 |
adb uninstall -k com.kang.xxx | 删除应用,但会保留应用数据和缓存数据 |
adb shell pm list packages | 查看所有应用 |
adb shell pm list packages -s | 查看系统应用 |
adb shell pm list packages -3 | 查看第三方应用 |
adb push pcFilePathXxx(电脑上的文件路径) phonePathXxx(设备里的目录) | 复制电脑里的文件到设备某个路径下 |
adb pull phonePathXxx(设备里的目录) pcFilePathXxx(电脑上的文件路径) | 复制设备中的文件到电脑某个路径下 |
adb remount | 重新挂载系统分区,使系统分区重新可写 |
adb shell kill pidXxx(某个进程id) | 杀死某个进程 |
adb logcat | 查看设备打印的日志 |
adb shell pm dump "包名"|findstr "versionName" | 查看某个应用的版本名,也就是AndroidManifest.xml文件中的versionName这个字段的值 |
adb shell pm dump "包名"|findstr "versionCode" | 查看某个应用的版本号,也就是AndroidManifest.xml文件中的versionCode这个字段的值 |
//查看某个应用的版本名;
//Windows系统用如下指令;
adb shell pm dump "com.example.kang"|findstr "versionName"
//在Linux系统中findstr使用grep替换就可以使用啦;
adb shell pm dump "com.example.kang"|grep "versionName"
//查看某个应用的版本号;
//Windows系统用如下指令;
adb shell pm dump "com.example.kang"|findstr "versionCode"
//在Linux系统中findstr使用grep替换就可以使用啦;
adb shell pm dump "com.example.kang"|grep "versionCode"
ADB使用shell的命令
使用adb shell命令,进入到shell命令中;
命令 | 解释 |
---|---|
cd pathXxx | 切换到pathXxx文件路径下 |
cd .. | 退回到上一级文件路径下 |
ls | 查看目前所在路径下的文件,仅罗列出当前文件名或目录名 |
ll | 是命令ls -l的别名,罗列出当前文件或目录的详细信息,含有时间、读写权限、大小等信息 |
rm -rf pathXxx | 删除某个文件 |
rm -rf pathXxx/ | 删除某个文件夹 |
am命令:
am和pm命令必须先使用adb shell命令切换到shell模式下才能使用;
am全称activity manager,可以使用am去模拟系统的行为,例如去启动一个activity、强制停止进程等;
am的命令格式是:am
命令 | 解释 |
---|---|
am start -n <packageName>/.<activityName> | 启动app的指定activity |
am kill |
杀掉指定app的进程 |
am force-stop |
强制停止一切 |
am startservice | 启动服务 |
am startservice <packageName>/.<serviceName> | 启动指定的service |
am stopservice | 停止服务 |
am start -a android.intent.action.VIEW -d http://www.jianshu.cn/ | 打开简书 |
am start -a android.intent.action.CALL -d tel:10086 | 拨打10086 |
//启动位于文件夹路径ui/activities/目录下的MainActivity(Activity);
am start -n com.example.kang/.ui.activities.MainActivity
//启动位于文件夹路径service/目录下的ExampleService(Service);
am startservice com.example.kang/.service.ExampleService
pm命令
pm全程package manager,可以使用pm命令去模拟Android行为或者查询设备上的应用等;
pm的命令格式是:pm
命令 | 解释 |
---|---|
pm list packages | 查看设备中所有应用 |
pm list packages -s | 查看系统应用 |
pm list packages -3 | 查看第三方应用 |
pm install | 安装 |
pm uninstall | 卸载 |
其他adb shell模式下的命令:
命令 | 解释 |
---|---|
cd pathXxx(目前路径下的某个路径) | 切换到下一级路径pathXxx |
cd .. | 回退路径到上一级 |
cd .. | 退回到上一级文件路径下 |
ls | 查看目前所在路径下的文件,仅罗列出当前文件名或目录名 |
ll | 是命令ls -l的别名,罗列出当前文件或目录的详细信息,含有时间、读写权限、大小等信息 |
rm -rf pathXxx | 删除某个文件 |
rm -rf pathXxx/ | 删除某个文件夹 |
pwd | 查看当前所在路径 |
cat fileNameXxx(文件名称) | 查看文件内容 |
rm fileNameXxx(文件名称) | 删除文件 |
rm -r folderNameXxx(文件夹名称) | 删除文件夹及文件夹下问价 |
logcat -c | 清除log日志缓存 |
logcat -s | 设置输出日志的标签,只显示该标签的日志 |
exit | 退出adb shell模式 |
"-s"选项 : 设置输出日志的标签, 只显示该标签的日志;
"-f"选项 : 将日志输出到文件, 默认输出到标准输出流中, -f 参数执行不成功;
"-r"选项 : 按照每千字节输出日志, 需要 -f 参数, 不过这个命令没有执行成功;
"-n"选项 : 设置日志输出的最大数目, 需要 -r 参数, 这个执行 感觉 跟 adb logcat 效果一样;
"-v"选项 : 设置日志的输出格式, 注意只能设置一项;
"-c"选项 : 清空所有的日志缓存信息;
"-d"选项 : 将缓存的日志输出到屏幕上, 并且不会阻塞;
"-t"选项 : 输出最近的几行日志, 输出完退出, 不阻塞;
"-g"选项 : 查看日志缓冲区信息;
"-b"选项 : 加载一个日志缓冲区, 默认是 main, 下面详解;
"-B"选项 : 以二进制形式输出日志;
ADB使用出现的问题
使用adb devices命令显示offline:
解决方法一:输入命令adb kill-server,按enter键执行,然后再输入adb start-server执行,接下来输入adb devices就正常了;
解决方法二:对usb线进行重新插拔;
解决方法三:重启设备;使用adb push命令提示Read-only file system:
解决方法:先执行adb root命令,然后再执行adb remount命令;使用adb push命令将文件推到设备中时,可能会出现文件没有完整地推到设备中:
将文件推到设备中以后,需要使用ll命令查看一下推到设备中的文件的大小,确认是否和推送之前的文件大小一致;删除system/app目录下的文件夹:
(1)在命令行中先执行命令adb remount;
(2)执行adb shell进入到shell模式中;
(3)使用cd system/app进入到app目录下;
(4)使用rm -rf fileXxx/(要删除的文件夹)命令删除指定的文件夹;