1. Debugging

1.1 adb devices

列出设备。

1.2 adb start-server

启动服务。

1.3 adb kill-server

结束服务。

1.4 adb wait-for-device

一直等待设备连接。
block until device is online.

2. Package Manager

2.1 adb install app.apk

2.2 adb uninstall <pkgname>

adb uninstall com.zhihu.android

2.3 adb shell pm list packages

打印所有的包。

  • -f 查看文件关联
  • -d (disabled)查看已禁用的包
  • -e (enabled)已启用的包
  • -s 系统包
  • -3 第三方包
  • -i 查看已安装的包
  • -u 所有包,包括已卸载的包
  • –user <USER_ID> The user space to query.用户空间的包。

    2.4 adb shell pm path <PACKAGE>

    打印指定包的apk路径。
    1
    adb shell pm path com.zhihu.android

2.5 adb shell pm clear <PACKAGE>

adb shell pm path com.zhihu.android

清除数据和缓存。

3. File Manager

3.1 adb pull <remote> [local]

adb pull /target-file-path/filename.ext /localpath

3.2 adb push [local] <remote>

同pull。

adb push /localpath/filename.ext /target-path

3.3 adb shell

ls

  • -a 不隐藏.开头的
  • -i 给每个文件加上数字索引
  • -s 以blocks为单位打印每个文件的大小
  • -n 列出UIDs和GIDs
  • -R 以递归方式列出子目录

    cd

    你懂的。

    rm

  • -f 强制删除,且不提示。
  • -r 以递归方式删除目录内容
  • -d 删除目录,即使是非空(rm -d等于rmdir)
  • -i 删除前提示

    mkdir

    mkdir [options]

直接创建

mkdir /sdcard/wtf

顺便加个权限

mkdir -m 777 /sdcard/wtf

根据需要创建父目录

mkdir -p /sdcard/wtf/sub1/sub2

touch

创建文件。

pwd

当前路径。

cp

cp /当前/test.txt /目标/demo.txt

还能顺便改个名

mv

mv /当前/tmp /目标/tmp

改名

mv /sdcard/wtf /sdcard/test

4. Network

4.1 netstat

1
adb shell netstat

↓↓↓↓↓

1
2
3
4
Proto Recv-Q Send-Q Local Address          Foreign Address        State
tcp 0 0 127.0.0.1:5037 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:5555 0.0.0.0:* LISTEN
tcp 0 0 10.0.2.15:5555 10.0.2.2:54444 ESTABLISHED

4.2 ping

需要Ctrl+c结束

1
adb shell ping www.baidu.com

4.3 netcfg

1
2
通过配置文件配置管理网络。
netcfg [<interface> {dhcp|up|down}]
1
2
3
4
5
6
# netcfg
netcfg
lo UP 127.0.0.1 255.0.0.0 0x00000049
eth0 UP 10.0.2.15 255.255.255.0 0x00001043
tunl0 DOWN 0.0.0.0 0.0.0.0 0x00000080
gre0 DOWN 0.0.0.0 0.0.0.0 0x00000080

4.4 ip

show, manipulate routing, devices, policy routing and tunnels.
展示和操作路由、设备、路由规则和隧道。

1
2
3
4
5
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]}

ip -f inet addr show wlan0 //WiFi的地址

4.5 reverse

手机跟电脑在不同网络的时候,电脑的本地API服务手机无法访问,reverse后,手机访问http://localhost:8000时,被路由到localhost:3000

1
adb reverse tcp:8000 tcp:3000

5. Logcat

1
2
打印日志数据到屏幕。
adb logcat [option] [filter-specs]
  • adb logcat 直接打印Ctrl + c停止
  • adb logcat *:V 最低优先级,只显示详细级别Verbose level
  • *:D 只显示debug级别Debug level
  • *:I info level
  • *:W warning level
  • *:E error level
  • *:F 致命程度Fatal level
  • *:S 最高优先级,不打印任何内容
1
adb logcat -v <format>
  • adb logcat -v brief 显示发出消息的进程的优先级、标记和PID(默认格式)。
  • adb logcat -v process 只显示PID。
  • adb logcat -v tag 只显示优先级和标签。
  • adb logcat -v raw 显示原始数据,没有其他元数据字段。
  • adb logcat -v time 显示发出消息的进程日期,调用时间,优先级,标记和PID。
  • adb logcat -v threadtime 同上,增加TID。
  • adb logcat -v long 显示所有元数据字段,并用空格分割。
1
adb logcat -b <Buffer>
  • adb logcat -b radio 只显示收音机和电话的消息缓冲区。
  • adb logcat -b event 只看事件相关的缓冲区。
  • adb logcat -b main 默认

  • 其他

    • adb logcat -c 清除所有日志并退出
    • adb logcat -d 将日志转储到屏幕并退出
    • adb logcat -f test.log 将日志消息转入test.log
    • adb logcat -g 打印指定日志并退出
    • adb logcat -n 将最大旋转日志(rotated logs)设置为count
    • adb logcat -r 每kbytes输出旋转日志文件。最大默认值为4,用-r指定。
    • adb logcat -s 将默认过滤器设置为静默,默认16,-f指定。
1
2
转储系统数据。
adb shell dumpsys [options]
  • adb shell dumpsys 直接查看
  • adb shell dumpsys battery 直接查看
  • adb shell dumpsys batterystats 为设备收集电池数据(android 5.0以上)
  • adb shell dumpsys batterystats –reset 删除旧的数据。
1
转储状态。(dumps State)
  • adb shell dumpstate 直接查看
  • adb shell dumpstate > state.logs 存入文件

6. Screen operation

6.1 screencap(截图)

1
2
3
4
//截图
adb shell screencap /sdcard/screen.png
//配合pull保存到电脑
adb pull /sdcard/screen.png

6.2 screenrecord[4.4+](录屏)

Android 4.4+版本支持。
录屏,Ctrl+c停止或3分钟或-time-limit设置的时间限制内自动结束。

1
adb shell screenrecord [options] <filename>

  • adb shell screenrecord /sdcard/wtf.mp4 默认设置直接录制。
  • adb shell screenrecord –size 设置视频分辨率。1280x720
  • adb shell screenrecord –bit-rate 设置视频的比特率,默认值为4Mbps,例如5Mbps参数为–bit-rate 5000000 /path/wtf.mp4
  • adb shell screenrecord –rotate 设置最长录制时间,默认值180秒。
  • adb shell screenrecord –verbose 将输出旋转90度。

    7. system

    7.1 adb root

    用root权限重启adbd守护进程。(只能用于模拟器)
    adb root

    7.2 adb sideload

    flashing/restoring Android update.zip packages.
    刷新/恢复安卓update.zip包。
    adb sideload <update.zip>

    7.3 adb shell ps

    跟Linux差不多。

    7.4 adb shell top

  • top 显示CPU顶级进程。
  • top -t 显示线程

    7.5 adb shell getprop

    通过安卓属性服务获取属性。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    adb shell getprop
    ----输出----
    [ro.secure]: [0]
    [ro.allow.mock.location]: [1]
    [ro.debuggable]: [1]
    [persist.service.adb.enable]: [1]
    [ro.kernel.qemu.gles]: [0]
    [ro.kernel.qemu]: [1]
    [ro.kernel.console]: [ttyS0]
    [ro.kernel.android.qemud]: [ttyS1]
1
2
//获取构建sdk版本
adb shell getprop ro.build.version.sdk

7.6 adb shell setprop

可以修改getprop可以获得的信息。
将adb端口设置为5555
setprop service.adb.tcp.port 5555