整理记录一些使用过的ADB相关的命令。

调试相关

常用命令

adb devices             # 查看连接到的设备

adb -s [serial] shell   # 连接多个设备时,指定某单个设备

adb kill-server         # 干掉服务
adb devices             # 重启服务

stop adbd
start adbd              # 重启adbd

Wifi远程调试

  • root设备设置

    adb root
    adb remount
    adb shell busybox vi system/build.prop
    # 添加命令
    service.adb.tcp.port=5555
    # 设备重启
    reboot
    
  • 系统启动脚本
    在init.rc中设置service.adb.tcp.port=5555

权限授予

# 查看包的权限
adb shell pdumpsys package <PackageName> | grep permission
# 权限授予
adb shell pm grant <PackageName> android.permission.CAMERA

硬件相关

设置系统时间

Linux时间区分系统时间和硬件时间,date命令只操作系统时间,hwclock操作硬件时间。

// 系统时间
// 系统开机之后读取硬件时间作为系统时间,之后系统时间独立运行,在系统关机之后将系统时间写回RTC。
date -s 20161231.235959     // 失败
date -s 123123592016.59     // 失败
toybox date 123123592016.59 // 成功

// 硬件时间
hwclock -r  # 读取硬件时间
hwclock -w  # 将系统时钟同步到硬件时间

USB接线识别

  • 在Ubuntu下,识别android设备
sudo apt-get install android-tools-adb      # 安装 adb 工具

mkdir -p ~/.android
vi ~/.android/adb_usb.ini                   # 添加一行设备标识 0x2207

sudo vi /etc/udev/rules.d/51-android.rules
# 加入udev规则,添加以下一行:
# SUBSYSTEM=="usb", ATTR{idVendor}=="2207", MODE="0666"

# 刷新规则,重新拔插数据线,或者运行以下命令
sudo udevadm control --reload-rules
sudo udevadm trigger

# 重启
sudo adb kill-server
adb start-server

网卡控制

ifconfig eth0 up  # 打开以太网卡
ifconfig wlan0 down  # 关闭无线网卡

USB声卡

cat /proc/asound/cards  # 查看声卡设备

其他

磁盘挂载

mount -o remount,rw /system
mount -o rw,remount /system     # RK系列等Android设备上一条无效,得反过来

流量统计

在Android系统中,”/proc/net/xt_qtaguid/stats”这个文件里储存着各个应用的流量信息。

// 获取userId
adb shell dumpsys package [PkgName] | findstr userId

// 查询流量
adb shell cat /proc/net/xt_qtaguid/stats | findstr [userId]

// 合并两条命令
for /f "tokens=2 delims== " %%i in ('adb shell "dumpsys package com.tencent.mobileqq | grep userId"') do adb shell cat /proc/net/xt_qtaguid/stats ^| grep %%i
  • 查询结果中,第六列和第八列分别对应接收的数据(rx_bytes)和发送的数据(rx_bytes),相加就是消耗的流量。
  • 统计一段时间内的流量消耗可以在开始和结束时分别获取,结果相减。

参考