ROM定制开发教程-Android adb命令用法与实例解析

 

一、什么是ADB

Android Debug Bridge(adb)是一个命令行工具,可让您与模拟器或连接的Android设备进行通信。您可以在android sdk / platform-tools或下载ADB工具包中找到adb工具。

 

 

二、ADB命令的用法

  1. adb调试

l adb devices

l adb forward

l adb kill-server

 

A.adb devices

 

adb devices

执行命令, 返回序列号或模拟器设备号

e4b25377        device

emulator-5554  device

 

 

B.adb forward

正向连接

adb forward <local> <remote>

adb forward tcp:8000 tcp:9000 设置本地端口8000转发到设备或模拟器9000端口

前提条件:在设备上启用USB调试。

 

C.adb kill-server

终止adb进程

adb kill-server

注: 杀掉正在运行的进程. ( adb终端处理)

 

2.无线连接

 

l adb connect

l adb usb

A.adb connect

通过 Wi-Fi连接adb

adb connect <host>[:<port>]

 

步骤1.

通过USB连接设备.

步骤2.

adb devices

设备列表
######## device

注: 步骤1,2 是必需的

步骤3.

adb tcpip 5555

在TCP模式端口重新启动5555端口

 

步骤4.

找出Android设备的IP地址:设置 - >关于 - >状态 - > IP地址。记住 #.#.#.#.形式的IP地址

 

步骤5.

adb connect #.#.#.#

连接到 #.#.#.#:5555

 

STEP 6.

从设备上拔下USB线,确认您仍然可以访问设备:

adb devices

附加设备列表
#.#.#.#:5555 device

注意:确保您的主机仍然连接到Android设备所在的同一Wi-Fi网络.

 

B.adb usb

重新启动USB模式.

adb usb

参考: adb connect

 

3.安装管理

 

l adb install

l adb uninstall

l adb shell pm list packages

l adb shell pm path

l adb shell pm clear

 

A.adb install

push一个Android应用程序(指定完整路径的apk文件)安装到一个模拟器/设备。

adb install [option] <path>

adb install test.apk

adb install -l test.apk 转发锁定申请

adb install -r test.apk 覆盖现有应用

adb install -t test.apk 允许测试包

adb install -s test.apk 安装到sdcard

adb install -d test.apk 允许版本降级

adb install -p test.apk 部分应用安装

B.adb uninstall

从模拟/设备中卸载.

adb uninstall [options] <PACKAGE>

adb uninstall com.test.app

adb uninstall -k com.test.app 卸载APK后保存数据和缓存目录

 

C.adb shell pm list packages

打印所有安装APK, 可选择仅仅打印含<FILTER>文本的包名

adb shell pm list packages [options] <FILTER>

adb shell pm list packages

adb shell pm list packages -f 查看关联文件

adb shell pm list packages -d Filter仅显示已禁用的包

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> 要查询的用户空间.

D.adb shell pm path

打印指定包名APK的所在路径

adb shell pm path <PACKAGE>

adb shell pm path com.android.phone

package:/system/priv-app/TeleService/TeleService.apk

 

E.adb shell pm clear

清除指定包名APK的所有数据.

adb shell pm clear <PACKAGE>

adb shell pm clear com.test.abc

注: 清除APP数据,缓存                                          

 

4.文件管理

l adb pull

l adb push

l adb shell ls

l adb shell cd

l adb shell rm

l adb shell mkdir

l adb shell touch

l adb shell pwd

l adb shell cp

l adb shell mv

| adb shell df   列出所有 dom 的使用情况,很有用

A.adb pull

下载一个文件从手机/模拟器到本地电脑.

adb pull <remote> [local]

adb pull /sdcard/demo.mp4

下载 /sdcard/demo.mp4  到 adb工具目录.

adb pull /sdcard/demo.mp4 e:\

下载 /sdcard/demo.mp4  到 E盘根目录.

 

B.adb push

从你的电脑上传一个文件到模拟器/设备

adb push <local> <remote>

adb push test.apk /sdcard

复制adb工具所在目录的test.apk到模拟器/设备的sdcard目录.

adb push d:\test.apk /sdcard

复制d:\test.apk 到/sdcard 目录.

 

C.adb shell ls

列出目录内容

ls [options] <directory>

 

步骤1.

adb shell

步骤2.

ls

ls -a 不隐藏开头的条目

ls -i 打印每个文件的索引号

ls -s 以块问单位打印每个文件的大小

ls -n 列出UID和 GID

ls -R list列出递归子目录

注: 按Ctrl-C 停止命令

D.adb shell cd

定位目录

cd <directory>

 

步骤1.

adb shell

步骤2.

cd /system

E.adb shell rm

移除文件或文件夹

rm [options] <files or directory>

 

步骤1.

adb shell

步骤2.

删除/sdcard/test.txt

rm -f /sdcard/test.txt 强制删除,无提示

rm -r /sdcard/tmp 以递归的方式删除目录内容

rm -d /sdcard/tmp 删除目录,即使是非空目录

注: rm -d 就是rmdir 命令

rm -i /sdcard/test.txt 在删除之前提示

F.adb shell mkdir

新建文件夹

mkdir [options] <directory name>

mkdir /sdcard/tmp

mkdir -m 777 /sdcard/tmp 设置权限的新建文件夹模式

mkdir -p /sdcard/tmp/sub1/sub2 按需生成对应路径的目录文件夹

G.adb shell touch

创建空文件或者更改时间戳

touch [options] <file>

 

步骤1.

adb shell

步骤2.

touch /sdcard/tmp/test.txt

ls /sdcard/tmp

 

H.adb shell pwd

打印当前工作目录的路径.

pwd

I.adb shell cp

复制文件或文件夹

cp [options] <source> <dest>

 

步骤1.

adb shell

步骤2.

复制/sdcard/test.txt到 /sdcard/demo.txt

 

J.adb shell mv

移动或者重命名文件

mv [options] <source> <dest>

 

步骤1.

adb shell

步骤2.

mv /sdcard/tmp /system/tmp 移动

mv /sdcard/tmp /sdcard/test 重命名

5.网络管理

l adb shell netstat

l adb shell ping

l adb shell netcfg

l adb shell ip

 

A.adb shell netstat

网络状态

Netstat

 

步骤1.

adb shell

步骤2.

netstat

 

B.adb shell ping

测试连接两个网络连接之间和延迟

ping [-aAbBdDfhLnOqrRUvV] [-c count] [-i interval] [-I interface]
[-m mark] [-M pmtudisc_option] [-l preload] [-p pattern] [-Q tos]
[-s packetsize] [-S sndbuf] [-t ttl] [-T timestamp_option]
[-w deadline] [-W timeout] [hop1 ...] destination

 

步骤1.

adb shell

步骤2.

ping www.google.com

注: 按Ctrl-C to 终止ping

ping www.google.com -c 4

C.adb shell netcfg

通过配置文件配置和管理网络连接

netcfg [<interface> {dhcp|up|down}]

 

步骤1.

adb shell

步骤2.

netcfg

 

D.adb shell ip

显示当前设备连接的WLAN 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]}

 

步骤1.

adb shell

步骤2.

ip -f inet addr show wlan0 展示WIFI IP地址

6.日志管理

l adb logcat

l adb shell dumpsys

l adb shell dumpstate

 

A.adb logcat

将日志数据打印到屏幕。

adb logcat [option] [filter-specs]

adb logcat

注意:按Ctrl-C可停止监视器

adb logcat *:V 最低优先级,过滤为仅显示详细级别

adb logcat *:D 过滤器只显示调试级别

adb logcat *:I过滤到只显示信息级别

adb logcat *:W 过滤器仅显示警告级别

adb logcat *:E 过滤器仅显示错误级别

adb logcat *:F 过滤器仅显示致命级别

adb logcat *:S 无声,最高优先级,无需打印任何内容

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.logs 将日志消息输出写入test.logs。

adb logcat -g 打印指定日志缓冲区的大小并退出。

adb logcat -n <count> 将最大旋转日志数设置为<count>。

注意:默认值为4.需要-r选项。

adb logcat -r <kbytes> 每<kbytes>输出一次旋转日志文件。

注意:默认值为16.需要-f选项。

adb logcat -s 将默认过滤器规范设置为silent。

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 显示发出消息的线程的日期,调用时间,优先级,标记以及PID和TID。

adb logcat -v long 使用空行显示所有元数据字段和单独的消息。

 

 

B.adb shell dumpsys

转储系统数据

adb shell dumpsys [options]

adb shell dumpsys

adb shell dumpsys meminfo

adb shell dumpsys battery

注:移动设备打开开发者选项运行,适用Android 5.0或更高版本。

adb shell dumpsys batterystats 从您的设备中收集电池数据

注意: Battery Historian将该数据转换为HTML可视化。步骤1 adb shell dumpsys batterystats> batterystats.txt STEP 2 python historian.py batterystats.txt> batterystats.html

adb shell dumpsys batterystats --reset 删除旧的收集数据

adb shell dumpsys activity

adb shell dumpsys gfxinfo com.android.phone measuring com.android.phone ui performance

 

C.adb shell dumpstate

状态转储

adb shell dumpstate

adb shell dumpstate > state.logs dump日志输出到指定文件

 

7.屏幕抓取操作

l adb shell screencap

l adb shell screenrecord [4.4+]

A.adb shell screencap

抓取正在显示的截图.

adb shell screencap <filename>

adb shell screencap /sdcard/screen.png

 

从设备下载截图到本地

adb pull /sdcard/screen.png

B.adb shell screenrecord

视频录制支持Android 4.4(API级别19)及更高版本的设备

adb shell screenrecord [options] <filename>

adb shell screenrecord /sdcard/demo.mp4

(按Ctrl-C停止录制)

从设备下载

adb pull /sdcard/demo.mp4

注意:按Ctrl-C停止屏幕录制,否则录制将在三分钟或--time-limit设置的时间限制内自动停止。

adb shell screenrecord --size <WIDTHxHEIGHT>

设置视频大小:1280x720。默认值是设备的本机显示分辨率(如果支持),否则为1280x720。为获得最佳效果,请使用设备的高级视频编码(AVC)编码器支持的尺寸。

adb shell screenrecord --bit-rate <RATE>

设置视频的视频比特率,以每秒兆比特为单位。默认值为4Mbps。您可以提高比特率以提高视频质量,但这样做会导致更大的电影文件。以下示例将记录比特率设置为5Mbps:adb shell screenrecord --bit-rate 5000000 /sdcard/demo.mp4

adb shell screenrecord --time-limit <TIME>

设置最长录制时间,以秒为单位。默认值和最大值为180(3分钟)。

adb shell screenrecord --rotate

将输出旋转90度。此功能是实验性的。

adb shell screenrecord --verbose

在命令行界面显示日志信息。如果未设置此选项,则实用程序在运行时不会显示任何信息。

 

8.系统命令

l adb root

l adb sideload

l adb shell ps

l adb shell top

l adb shell getprop

l adb shell setprop

 

A.adb root

 以ROOT权限重启adbd

adb root

注: 重启adbd守护进程与根权限

 

B.adb sideload

写入/恢复的Android update.zip包。

adb sideload <update.zip>

注: adb reboot sideload [适用Android M+]

 

C.adb shell ps

打印进程状态

ps [options]

步骤1.

adb shell

步骤2. 

ps

ps -p

 

D.adb shell top

显示CPU占用最多的进程

top [options]

步骤1.

adb shell

步骤2.

top

注: (按Ctrl-C to 终止进程监视器)

top -t 显示线程而不是进程.

 

E.adb shell getprop

通过android属性服务获取属性

getprop [options]

 

步骤1.

adb shell

步骤2.

getprop

getprop ro.build.version.sdk

getprop ro.chipname

getprop | grep adb

 

F.adb shell setprop

设置属性

setprop <key> <value>

 

步骤1.

adb shell

步骤2.

setprop service.adb.tcp.port 5555

posted @ 2020-02-11 16:11  decode126  阅读(457)  评论(0编辑  收藏  举报