ADB-Shell-Commands

ADB:Android Debug Bridge 是能够和手机或模拟器通信的一个命令行工具。下载地址

命令分类

1. ADB Debugging

adb devices 输出连接的模拟器/真机列表
adb forward tcp:8000 tcp:9000 实现PC和Android设备Socket通信
adb kill-server 关闭adb服务

2. 连接设备

adb connect 192.168.0.101 使用WIFI连接设备,connect设备的ip地址
adb usb 使用usb连接模式

3. 包管理

adb install

adb install test.apk 安装应用到设备
adb install -l test.apk 对应用加锁
adb install -r test.apk 如果安装的应用已经存在,卸载已经存在的
adb install -t test.apk 允许安装测试包
adb install -s test.apk 将应用安装到SD卡
adb install -d test.apk 允许安装低版本
adb install -p test.apk 安装应用的局部

各项参数可以结合使用

adb install -r -t test.apk

adb uninstall

删除一个应用包

adb uninstall com.test.app 卸载应用
adb uninstall -k com.test.app 卸载应用,保存数据和缓存目录

adb shell pm list package

输出所有应用包名,可以追加选项过滤

adb shell pm list packages 输出所有应用包名
adb shell pm list packages -f 输出所有应用包名和应用的安装位置 例如📦/data/app/io.github.jiyangg.app/base.apk=io.github.jiyangg.app
adb shell pm list packages -d 输出禁用的应用包名
adb shell pm list packages -e 输出可以使用的应用的包名
adb shell pm list packages -s 输出系统应用包名
adb shell pm list packages -3 输出第三方应用包名
adb shell pm list packages -i 输出应用包名和安装器
adb shell pm list packages -u 输出包括已经卸载的应用包名
adb shell pm list packages --user <USER_ID> 输出制定用户空间的应用包名

选项命令可以结合使用

adb shell pm list packages -3 -f 查看第三方应用的安装位置和包名

adb shell pm path

根据包名显示APK存放位置

adb shell pm path com.android.phone

adb shell pm clear

删除指定包名的所有数据,包括data和cache

adb shell pm clear com.test.abc

4. 文件管理

adb pull

adb pull <remote> [local]

从设备下载文件到电脑

adb pull /sdcard/test.mp4 下载SD卡根目录test.mp4到电脑的当前目录下
adb pull /sdcard/test.mp4 d: 下载SD卡根目录test.mp4到电脑的指定目录d盘下

adb push

adb push <local> <remote>

从电脑复制文件到设备

adb push test.apk /sdcard 将电脑当前目录下test.apk文件复制到设备SD卡根目录
adb push d:\test.apk /sdcard 将电脑d盘目录下test.apk文件复制到设备SD卡根目录

adb shell ls

输出文件列表

  • ls 输出文件列表,不包含隐藏文件
  • ls -a 输出文件列表,包含隐藏文件
  • ls -i 输出文件列表,包含文件下标
  • ls -s 输出文件列表,包含文件的大小
  • ls -n 输出文件列表,包含文件的UID,GID
  • ls -R 递归列出子目录

adb shell rm

删除文件

  • rm -f 强制删除文件
  • rm -r 递归删除文件夹的文件
  • rm -d 删除文件夹,即使非空.(==rmdir)
  • rm -i 删除前提示

adb shell mkdir

创建目录

  • mkdir /sdcard/tmp
  • mkdir -m 777 /sdcard/tmp 创建并设置权限
  • mkdir -p /sdcard/tmp/sub1/sub2 根据需要创建父目录

adb shell touch 新建文件

adb shell pwd 返回当前路径

adb shell cp 复制文件

adb shell mv 移动或重命名文件

5. 网络

adb shell netstat 网络信息统计
adb shell netcfg 查看网络连接信息,通过配置文件管理

adb shell ip

ip [ OPTIONS ] OBJECT

OBJECT := { link | addr | addrlabel | route | rule | neigh | ntable |tunnel | tuntap | maddr | mroute | mrule | monitor | xfrm |netns | l2tp }

OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] |-f[amily] { inet | inet6 | ipx | dnet | link } |-l[oops] { maximum-addr-flush-attempts } |-o[neline] | -t[imestamp] | -b[atch] [filename] |-rc[vbuf] [size]}
adb shell ip -f inet addr show wlan0 显示WIFI的ip地址

6. Logcat

打印日子到屏幕

adb logcat [option] [filter-specs]

adb logcat 打印所有日志

根据不同的级别打印日志,日志级别:V < D < I < W < E

  • V : Verbose 详细
  • D : Debug
  • I :Info
  • W :Warn
  • E : Error

    adb logcat *:V 显示V,D,I,W,E级别日志
    adb logcat *:D 显示D,I,W,E级别日志
    adb logcat *:I 显示I,W,E级别日志
    adb logcat *:W 显示W,E级别日志
    adb logcat *:E 显示E级别日志
    adb logcat *:F 显示致命级别日志
    adb logcat *:S 沉默级别,不显示任何日志
    

adb logcat -b <Buffer>

查看缓冲区信息

adb logcat -b main 默认,查看全部缓冲区
adb logcat -b radio 查看包含无线电/电话相关消息的缓冲区
adb logcat -b event 查看包含事件相关消息的缓冲区
adb logcat -c 清除整个日志并退出
adb logcat -d  将日志全部打印到屏幕并退出
adb logcat -f test.logs 将日志写入到文件test.logs
adb logcat -g 输出日志缓冲区大小并退出
adb logcat -n <count>
adb logcat -r <kbytes> 日志文件每次的输出,需要结合 -f