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的主要功能有:

  1. 在Shell中操作设备,如MonkeyTest、启动或关闭手机等;
  2. 在计算机和模拟器或真实设备之间传输文件,如上传或下载文件;
  3. 在模拟器或真实设备中安装或卸载本地应用的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使用出现的问题

  1. 使用adb devices命令显示offline:
      解决方法一:输入命令adb kill-server,按enter键执行,然后再输入adb start-server执行,接下来输入adb devices就正常了;
      解决方法二:对usb线进行重新插拔;
      解决方法三:重启设备;

  2. 使用adb push命令提示Read-only file system:
      解决方法:先执行adb root命令,然后再执行adb remount命令;

  3. 使用adb push命令将文件推到设备中时,可能会出现文件没有完整地推到设备中:
      将文件推到设备中以后,需要使用ll命令查看一下推到设备中的文件的大小,确认是否和推送之前的文件大小一致;

  4. 删除system/app目录下的文件夹:
    (1)在命令行中先执行命令adb remount;
    (2)执行adb shell进入到shell模式中;
    (3)使用cd system/app进入到app目录下;
    (4)使用rm -rf fileXxx/(要删除的文件夹)命令删除指定的文件夹;