android调试开发利器 ADB Debug

平时android开发工作,经常要用到设备调试,很多不是很熟悉ADB命令,其实ADB调试很方便,而且功能很强大。

1.定义:Android 调试桥 (adb) 是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。

该工具作为一个客户端-服务器程序,包括三个组件:

客户端:计算机上运行。发送命令。发出 adb 命令从命令行终端调用客户端。

后台程序:设备上运行命令。后台程序在每个模拟器或设备实例上作为后台进程运行。

服务器计算机上作为后台进程运,行管理客户端和后台程序之间的通信。

可在android_sdk/platform-tools/ 中找到 adb 工具。

 

 

 

2.连接原理:

1.adb客户端启动时,先检测adb服务器进程,未发现就重新启动。如已启动,绑定本地5307端口,监听该端口 通讯。

2.服务器扫描5555到5558之间奇数端口,查找设备(真机或者模拟器)。服务器管理与模拟器/设备实例的连

接,并处理来自多个 adb 客户端的命令。这里真机或者模拟器会被分配一对端口,偶数号用于与控制台连接,

奇数号用于与adb连接。

 

3.使用前提

adb 使用本质就是通过pc终端命令行控制android设备,要求设备本身必须打开开发者模式(USB debugging,位于 Developer options 下)。在运行 Android 4.2 及更高版本的设备上,Developer options 屏幕默认情况下处于隐藏状态。如需将其显示出来,请转到 Settings > About phone 并点按 Build number 七次。返回上一屏幕,在底部可以找到 Developer options。这一点很多新手可能不知道。

android调试开发利器 ADB Debug_第1张图片

4.设备连接方式:

1.普通usb连接

2.wlan连接,这里的设置有点复杂,且实测不稳定。能童鞋推荐直接参考官网介绍。

 

5. 主要命令

 

5.1查询设备

adb devices

例如

 

 

adb devices
List of devices attached
emulator-5554  device
emulator-5556  device
emulator-5558  device

5.2将命令发送至特定设备

 

 

使用由 adb 分配的序列号为命令指定目标实例。使用 devices 命令获取正在运行的模拟器/设备实例的序列号。例如:


adb -s emulator-5556 install helloWorld.apk

5.3安装应用


install 命令。使用此命令,必须指定您要安装的 APK 文件的路径:

adb install path_to_apkpath_to_apk

使用 Android Studio,无需直接使用 adb(或 aapt)在模拟器/设备上安装应用。由 Android Studio 处理应用的打包和安装。

5.4设置端口转发


使用 forward 命令设置任意端口转发 — 将对特定主机端口的请求转发到模拟器/设备实例上的其他端口。下面介绍如何设置主机端口 6100 到模拟器/设备端口 7100 的转发:

adb forward tcp:6100 tcp:7100

也可以使用 adb 设置传输到指定的抽象 UNIX 网域套接字的转发,如下所示:

adb forward tcp:6100 local:logd 

5.5将文件复制到设备/从设备复制文件


使用 adb 命令 pull 和 push 将文件复制到模拟器/设备实例或从其中复制文件。与 install 命令不同(其仅将 APK 文件复制到特定位置),pull 和 push 命令将任意目录和文件复制到模拟器/设备实例中的任意位置。

模拟器或设备复制文件或目录(及其子目录),使用

adb pull remote localremote local

要将文件文件或目录(及其子目录)复制模拟器或设备,使用

adb push local remotelocal remote

在上述命令中,local 和 remote 指的是开发计算机(本地)和模拟器/设备实例(远程)上目标文件/目录的路径。例如:

adb push foo.txt /sdcard/foo.txt

5.6 停止 adb 服务器


在某些情况下,需要终止 adb 服务器进程,然后重启它以解决问题(例如,如果 adb 不响应命令)。

要停止 adb 服务器,使用 adb kill-server 命令。然后,可以通过发出任意其他 adb 命令重启服务器。

 


5.7 adb 命令格式

在计算机上从命令行发出 adb 命令,或通过脚本发出。用法如下:

adb [-d|-e|-s serial_number] command
serial_number] command

如果只有一个模拟器在运行或只连接了一个设备,则默认情况下将 adb 命令发送至该设备。如果有多个模拟器在运行和/或连接了多个设备,需要使用-d-e 或 -s 选项指定应向其发送命令的目标设备。

5.8调用 Activity Manager (am)

 

在 adb shell 中,可以使用 Activity Manager (am) 工具发出命令以执行各种系统操作,如启动 Activity、强行停止进程、广播 intent、修改设备屏幕属性及其他操作。在 shell 中,此语法为:

am command
command

也可以直接从 adb 发出 Activity Manager 命令,无需进入远程 shell。例如:

adb shell am start -a android.intent.action.VIEW

5.9 调用软件包管理器 (pm)

在 adb shell 中,可以使用软件包管理器 (pm) 工具发出命令,以对设备上安装的应用软件包进行操作和查询。在 shell 中,此语法为:

pm command
command

可以直接从 adb 发出软件包管理器命令,无需进入远程 shell。例如:

adb shell pm uninstall com.example.MyApp

 

5.10进行屏幕截图

 

screencap 命令是一个用于对设备显示屏进行屏幕截图的 shell 实用程序。在 shell 中,此语法为:

screencap filename
filename

要从命令行使用 screencap,请输入以下命令:

$ adb shell screencap /sdcard/screen.png/sdcard/screen.png

以下屏幕截图会话示例展示使用 adb shell 捕获屏幕截图,并使用 pull 命令从设备下载此文件:

 

$ adb shell
shell@ $ screencap /sdcard/screen.png
shell@ $ exit
$ adb pull /sdcard/screen.png/sdcard/screen.png
shell@ $ exit
$ adb pull /sdcard/screen.png

5.11录制视频

screenrecord 命令是一个用于录制设备(运行 Android 4.4(API 级别 19)及更高版本)显示屏的 shell 实用程序。此实用程序将屏幕 Activity 录制到 MPEG-4 文件。

:音频不与视频文件一起录制。

开发者可以使用此文件创建宣传视频或培训视频。在 shell 中,此语法为:

screenrecord [options] filename
options] filename

要从命令行使用 screenrecord,请输入以下命令:

$ adb shell screenrecord /sdcard/demo.mp4/sdcard/demo.mp4

按 Control + C 停止屏幕录制,否则,到三分钟或 --time-limit 设置的时间限制时,录制将自动停止。

要开始录制设备屏幕,请运行 screenrecord 命令以录制视频。然后,运行 pull 命令从设备将此视频下载到主计算机。下面是一个录制会话示例:

 

$ adb shell
shell@ $ screenrecord --verbose /sdcard/demo.mp4
(press Control + C to stop)
shell@ $ exit
$ adb pull /sdcard/demo.mp4--verbose /sdcard/demo.mp4
(press Control + C to stop)
shell@ $ exit
$ adb pull /sdcard/demo.mp4

5.12读取应用的 ART 配置文件

从 Android 7.0(API 级别 24)开始,Android Runtime (ART) 会收集已安装应用的执行配置文件,其可用于优化应用性能。想要检查收集的配置文件,以了解在应用启动期间,系统决定频繁执行哪些方法和使用哪些类。

要生成配置文件信息的文本表单,请使用以下命令:

$ adb shell cmd package dump-profiles package
package

要检索生成的文件,请使用:

$ adb pull /data/misc/profman/package.txt
package.txt

5.13其他 shell 命令

如需所有可用 shell 程序的列表,使用以下命令:

adb shell ls /system/bin

大多数命令都提供帮助说明。

表 5 列出了一些比较常用的 adb shell 命令。

表 5. 其他一些 adb shell 命令

Shell 命令 说明 注释
dumpsys 将系统数据转储到屏幕。 Dalvik Debug Monitor Server (DDMS) 工具提供了一个集成调试环境,让您用起来更方便。
dumpstate 将状态转储到文件。
logcat [option]... [filter-spec]... 启用系统和应用日志记录,并将输出传输到屏幕。
dmesg 将内核调试消息输出到屏幕。
start 启动(重启)模拟器/设备实例。  
stop 停止执行模拟器/设备实例。  

 

5.14  adb 映射

adb reverse tcp:8000 tcp:8000,然后在手机中访问127.0.0.1:8000 就可以访问 本地web 环境了。 非常方便,有时候可解决很多刁钻问题。 比如pwa,Android 默认支持https,或者127.0.0.1 这种localhost。 难不成必须买个云服务器运行,手机才能访问。 no,用这个映射就搞定了

你可能感兴趣的:(android)