Android adb你真的会用吗?

前言

本文基于Android官方文档, 以及个人工作的使用经验, 总结下adb的常用用法, 备忘。

1.adb 简介

adb全名Andorid Debug Bridge. 顾名思义, 这是一个Debug工具。

然而, 为何称之为Bridge呢? 因为adb是一个标准的CS结构的工具, 是要连接开发电脑和你的调试手机的.包含如下几个部分:

  • Client端, 运行在开发机器中, 即你的开发PC机, 用来发送adb命令。
  • Deamon守护进程,,运行在调试设备中,,即的调试手机或模拟器。
  • Server端, 作为一个后台进程运行在开发机器中, 即你的开发PC机, 用来管理PC中的Client端和手机的Deamon之间的通信。

2.常用用法

2.1 adb devices

列举当前连接的调试设备

2.2 adb logcat

打印log信息

指令 说明 备注
adb logcat 打印log /
adb logcat -c 清除手机的log buffer 有些手机权限控制,不支持
adb logcat -b<buffer> 打印指定buffer的log信息
buffer有: main(主log区,默认),

events(事件相关的log),

radio(射频, telephony相关的log)

adb logcat -v<format> 格式化输出log 常用的用adb logcat -v time显示时间
adb logcat -f<filename> 输出log到指定文件 /

2.3 adb shell -> cd data/data/-> ls

获取所有应用包名

2.4 adb install/uninstall

安装卸载apk

2.5 adb pull/push

调试设备和开发PC之间拷贝文件

// 拷贝本地文件到调试设备中
// 拷贝本地文件到调试设备中

2.6 adb start/kill server

启动/杀死adb简介中提到的Server端进程.

由于adb并不稳定, 有时候莫名的问题掉线时, 可以先kill-server, 然后start-server来确保Server进程启动. 往往可以解决问题。

3.高阶用法

3.1 adb connect/disconnect

通过wifi进行远程连接手机进行调试的.
https://developer.android.com/studio/command-line/adb.html#wireless

需先连上usb模式, 开启远程调试模式:
$ adb tcpip 5555

3.2 adb shell am

am即activity manager.
该命令用来执行一些系统动作, 例如启动指定activity, 结束进程, 发送广播, 更改屏幕属性等. 调试利器.

指令 说明 备注
start <Intent> 根据intent指向启动Activity Intent可以是显示的指向activity, 也可以是ACTION方式, 并且可以添加flag, data等参数信息.
startservice <Intent> 启动Service 可以添加flag, data等参数信息.
broadcast <Intent> 发送广播 可以添加flag, data等参数信息.
monitor 启动一个Crash和ANR的监听器 如有Crash或ANR会在控制台输出相关信息.
force-stop <Package> 强制停止该包相关的一切 传入package name.
kill <Package> 杀死该包相关的所有进程 传入package name.
kill-all 杀死所有后台进程  
display-size WxH 改变显示的分辨率 例如adb shell am display-size 1280x720, 手机可能不支持.
display-density <dpi> 改变显示的density 例如adb shell am display-density 320, 手机可能不支持.

3.3 adb shell pm

pm即package manager.
用来执行package相关的操作, 例如安装卸载, 查询系统的安装包等.

指令 说明 备注
list packages <Filter> 列出满足filter条件的所有包  
list permissions <Group> 列出该Group的所有权限  
list features 查看系统支持哪些feature 例如蓝牙, wifi, 摄像头等.
install <Path>/uninstall <Package> 安装卸载  
clear <Package> 清除应用数据  

3.4 adb shell screencap

截屏, 比截屏快捷键更加方便快捷.

3.5 adb shell screenrecord

录屏, 做demo的话, 可以很方便的用这个命名录制视频, 然后借助工具将其转换成gif图, 超赞. 如下:

Android4.4及以上系统可用.


3.6 adb shell dumpsys

强大的dump工具, 可以输出很多系统信息. 例如window, activity, task/back stack信息, wifi信息等.

探索Activity之launchMode探索Activity之启动Intent flag和Affinity就是用adb shell dumpsys activity来输出task信息的.

常用dumpsys:

指令 说明 备注 细分参数
activity 输出app组件相关信息 还可以用细分参数获得单项内容, 下同. 例如adb shell dumpsys activity activities来获取activity task/back stack信息. activites, service, providers, intents, broadcasts, processes
alarm 输出当前系统的alarm信息 / /
cpuinfo 输出当前的CPU使用情况 / /
diskstats 输出当前的磁盘使用状态 / /
batterystats 电池使用信息 / /
package package相关信息, 相当于pm功能的集合 输出诸如libs, features, packages等信息 /
meminfo 输出每个App的内存使用和系统内存状态 可以指定包名, 例如adb shell dumpsys meminfo com.anly.githubapp /
window 输出当前窗口相关信息 / policy, animator, tokens, windows
时间: 2024-07-31 22:26:17

Android adb你真的会用吗?的相关文章

Android adb你真的会用吗?

引言 本文基于Android官方文档, 以及个人工作的使用经验, 总结下adb的常用用法, 备忘. 1, adb简介 adb全名Andorid Debug Bridge. 顾名思义, 这是一个Debug工具. 然而, 为何称之为Bridge呢? 因为adb是一个标准的CS结构的工具, 是要连接开发电脑和你的调试手机的.包含如下几个部分: Client端, 运行在开发机器中, 即你的开发PC机. 用来发送adb命令. Deamon守护进程, 运行在调试设备中, 即的调试手机或模拟器. Server

Android ADB工具-管理设备 app(二)

Android ADB工具-管理设备 app(二) 标签(空格分隔): Android 4.管理设备 app 命令 功能 adb install [-r|-s] <apkfile> 安装 apk 文件 adb uninstall [-k] <packagename> 卸载 app adb shell top [-m <number>] 查看内存占用情况 adb shell ps 查看进程列表 adb shell kill <pid> 杀死一个进程 adb s

android adb常用命令

1.adb--- 截取屏幕的命令  :adb shell screencap -p | sed 's/\r$//' > outputs.png 2.jni ---命令    :$NDK/ndk-build 3. adb 启动程序:adb shell am start -n 包名/程序Activity类的类名(main) adb 安装程序: adb install  + 路径 adb 卸载程序 :adb uninstall +包名 adb 调试:  adb connect ip 地址 adb 断开

MacBook下配置android adb命令使用环境

想在Mac下使用android adb命令,常用的两种配置方式: 在MacBook下配置adb命令环境(方法一) 1.下载并安装IDE (android studio) 人性化的安装,直接点击下一步下一步就可以完成安装啦 2.配置环境 在安装完成之后,将android的adb工具所在目录加入环境变量里面去  在终端中输入 sudo vim ~/.bash_profile ,打开 .bash_profile文件.按 i 进入输入模式,在文件内容的末尾加入以下内容: #Setting PATH fo

Android ADB Server启动失败

Android ADB Server启动失败 启动Android Stdio的时候报如下错误: 1 2 3 4 5 Unable to create Debug Bridge: Unable to start adb server: error: could not install *smartsocket* listener: cannot bind to 127.0.0.1:5037: 閫氬父姣忎釜濂楁帴瀛楀湴鍧?(鍗忚/缃戠粶鍦板潃/绔彛)鍙厑璁镐娇鐢ㄤ竴娆°?? (10048) c

Android ADB server didn&#39;t ACK * failed to start daemon * 简单有效的解决方案 (转)

转载请注明出处:http://blog.csdn.net/xiaanming/article/details/9401981 ADB server didn't ACK 这个问题会困恼很多的新手朋友,我以前刚开始做Android的时候也遇到过这个问题,不过自己百度,google啥的,也不知道怎么就给解决了,看到群里很多新手朋友都会问这个问题,说实话我也没有一个解决这个问题的终极方法(百试百灵的那种,哈哈),自己没遇到也没有认真的去对待他,今天,就是在今天,我打开Eclipse连上手机,准备调试程

android adb 的各种使用方式详解

这篇文章主要介绍在windows 程序中使用adb 的方法,不介绍adb 的命令. 1) 启动adb 进程,从管道获取输出. 这种方式的弊端有多少,我也不知道,反正就是各种问题吧.但是目前我问过很多朋友,他们都是这么做的,因为这种方法最简单.弊端我列举一下 1) 每次执行一个adb 命令都要启动一个adb 进程,速度太慢,好像就是很不爽 2)  偶尔发现进程管理器中有N 多个adb 进程,然后就卡了. 3)  从管道获取输出,在很多情况下会发现adb 卡死了,进程退不出来. 4)  曾经发现 a

android adb 发送keyEvent

使用Adb shell command直接送key event給Android adb shell input keyevent 7 # for key '0' adb shell input keyevent 8 # for key '1' adb shell input keyevent 29 # for key 'A' adb shell input keyevent 54 # for key 'B' adb shell input text "ANDROID" 支持的KEYCO

exploit for Android (adb setuid)

/* 本文章由 莫灰灰 编写,转载请注明出处. 作者:莫灰灰    邮箱: [email protected] */ 1. 漏洞分析 这是个很老的漏洞了,主要利用adb启动的时候调用setuid函数降到shell权限,却没有判断setuid返回失败的情况,因此造成了root的可能 如下是已经修复漏洞后的代码: 原本的代码大致如下: setgid(AID_SHELL); setuid(AID_SHELL); 而setxid等函数的实现,其中有如下一段代码,即shell进程的数量如果达到了RLIMI