From f1200c67e1f90dc0534b7d0f94e8e04c65159964 Mon Sep 17 00:00:00 2001
From: jaywcjlove <398188662@qq.com>
Date: Sun, 18 Dec 2022 00:07:25 +0800
Subject: [PATCH] feat: add adb.md cheatsheet. #233
---
README.md | 1 +
assets/adb.svg | 3 +
docs/adb.md | 381 +++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 385 insertions(+)
create mode 100644 assets/adb.svg
create mode 100644 docs/adb.md
diff --git a/README.md b/README.md
index 6389b5e..6bf1a4e 100644
--- a/README.md
+++ b/README.md
@@ -122,6 +122,7 @@ Quick Reference
## 命令
+[ADB, Android Debug Bridge](./docs/adb.md)
[Ansible](./docs/ansible.md)
[Awk](./docs/awk.md)
[Conan](./docs/conan.md)
diff --git a/assets/adb.svg b/assets/adb.svg
new file mode 100644
index 0000000..c86f28a
--- /dev/null
+++ b/assets/adb.svg
@@ -0,0 +1,3 @@
+
diff --git a/docs/adb.md b/docs/adb.md
new file mode 100644
index 0000000..8de434b
--- /dev/null
+++ b/docs/adb.md
@@ -0,0 +1,381 @@
+Android ADB 备忘清单
+===
+
+[ADB](https://developer.android.com/studio/command-line/adb.html),Android Debug Bridge,包含在 Google 的 Android SDK 中,可用于从计算机控制您的 Android 设备。以下是您可以与 [ADB](https://developer.android.com/studio/command-line/adb.html) 一起使用的一些最常见的命令及其用法
+
+入门
+----
+
+### 设备基础
+
+
+:-- | --
+:-- | --
+`adb devices` | 列出连接的设备
+`adb devices -l` | 列出连接的设备和种类
+`adb root` | 以 `root` 权限重新启动 `adbd`
+`adb start-server` | 启动 `adb` 服务器
+`adb kill-server` | 杀死 `adb` 服务器
+`adb remount` | 重新挂载具有读/写访问权限的文件系统
+`adb reboot` | 重启设备
+`adb reboot bootloader` | 将设备重新启动到快速启动
+`adb disable-verity` | 将设备重新启动到快速启动
+
+
+---
+
+- `wait-for-device` 可以在 `adb` 之后指定,以确保该命令在设备连接后运行
+- `-s` 可用于在多个连接时将命令发送到特定设备
+
+#### 示例
+
+```bash
+$ adb wait-for-device devices
+ List of devices attached
+ somedevice-1234 device
+ someotherdevice-1234 device
+```
+
+```bash
+$ adb -s somedevice-1234 root
+```
+
+### Logcat
+
+
+:-- | --
+:-- | --
+`adb logcat` | 开始将日志消息打印到标准输出
+`adb logcat -g` | 显示当前日志缓冲区大小
+`adb logcat -G ` | 设置缓冲区大小(K 或 M)
+`adb logcat -c` | 清除日志缓冲区
+`adb logcat *:V` | 启用所有日志消息(详细)
+`adb logcat -f ` | 转储到指定文件
+
+
+#### 示例
+
+```bash
+$ adb logcat -G 16M
+$ adb logcat *:V > output.log
+```
+
+#### 过滤日志输出
+
+- `V` 详细(最低优先级)
+- `D` 调试
+- `I` 信息
+- `W` 警告
+- `E` 错误
+- `F` 严重错误
+- `S` 静默(最高优先级)
+
+
+过滤器表达式显示了优先级不低于 `警告` 的所有标记的所有日志消息:
+
+```bash
+$ adb logcat *:W
+```
+
+### 文件管理
+
+:-- | --
+:-- | --
+`adb push ` | 将本地复制到远程设备
+`adb pull ` | 将远程设备从设备复制到本地
+
+
+#### 示例
+
+```bash
+$ echo "This is a test" > test.txt
+$ adb push test.txt /sdcard/test.txt
+$ adb pull /sdcard/test.txt pulledTest.txt
+```
+
+### 远程 Shell
+
+:-- | --
+:-- | --
+`adb shell ` | 在设备上运行指定的命令(大多数 unix 命令在这里工作)
+`adb shell wm size` | 显示当前屏幕分辨率
+`adb shell wm size WxH` | 将分辨率设置为 WxH
+`adb shell pm list packages` | 列出所有已安装的包
+`adb shell pm list packages -3` | 列出所有已安装的 3rd 方包
+`adb shell monkey -p app.package.name` | 启动指定包
+
+
+### 包安装
+
+:-- | --
+:-- | --
+`adb shell install ` | 安装应用程序
+`adb shell install ` | 手机路径安装应用
+`adb shell install -r ` | 手机路径安装应用
+`adb shell uninstall ` | 删除应用程序
+
+
+### Paths
+
+
+:-- | --
+:-- | --
+`/data/data//databases` | 应用程序数据库
+`/data/data//shared_prefs/` | 共享偏好
+`/data/app` | 用户安装的apk
+`/system/app` | 预装的 APK 文件
+`/mmt/asec` | 加密的应用程序\|App2SD
+`/mmt/emmc` | 内部 SD 卡
+`/mmt/adcard` | 外部/内部 SD 卡
+`/mmt/adcard/external_sd` | 外置 SD 卡
+
+
+---
+
+:-- | --
+:-- | --
+`adb shell ls` | 列出目录内容
+`adb shell ls -s` | 每个文件的打印尺寸
+`adb shell ls -R` | 递归列出子目录
+
+
+### 手机信息
+
+
+:-- | --
+:-- | --
+`adb get-statе` | 打印设备状态
+`adb get-serialno` | 获取序列号
+`adb shell dumpsys iphonesybinfo` | 获取 IMEI
+`adb shell netstat` | 列出 TCP 连接
+`adb shell pwd` | 打印当前工作目录
+`adb shell dumpsys battery` | 电池状态
+`adb shell pm list features` | 列出电话功能
+`adb shell service list` | 列出所有服务
+`adb shell dumpsys activity /` | 活动信息
+`adb shell ps` | 打印进程状态
+`adb shell wm size` | 显示当前屏幕分辨率
+`dumpsys window windows` \| `grep -E 'mCurrentFocus\|mFocusedApp'` | 打印当前应用程序的打开活动
+
+
+### 包信息
+
+:-- | --
+:-- | --
+`adb shell list packages` | 列出包名称
+`adb shell list packages -r` | 列出包名 + apks 的路径
+`adb shell list packages -3` | 列出第三方包名称
+`adb shell list packages -s` | 仅列出系统包
+`adb shell list packages -u` | 列出包名称 + 已卸载
+`adb shell dumpsys package packages` | 列出所有应用程序的信息
+`adb shell dump ` | 列出一个包裹的信息
+`adb shell path ` | apk文件的路径
+
+
+### 设备相关命令
+
+
+:-- | --
+:-- | --
+`adb reboot-recovery` | 重启设备进入恢复模式
+`adb reboot fastboot` | 重启设备进入恢复模式
+`adb shell screencap -p "/path/to/screenshot.png"` | 截图
+`adb shell screenrecord "/path/to/record.mp4"` | 录制设备屏幕
+`adb backup -apk -all -f backup.ab` | 备份设置和应用程序
+`adb backup -apk -shared -all -f backup.ab` | 备份设置、应用程序和共享存储
+`adb backup -apk -nosystem -all -f backup.ab` | 仅备份非系统应用程序
+`adb restore backup.ab` | 恢复以前的备份
+`adb shell am start -a android.intent.action.VIEW -d URL` | 打开网址
+`adb shell am start -t image/* -a android.intent.action.VIEW` | 打开画廊
+
+
+### 权限
+
+:-- | --
+:-- | --
+`adb shell permissions groups` | 列出权限组定义
+`adb shell list permissions -g -r` | 列出权限详细信息
+
+
+### Logs
+
+:-- | --
+:-- | --
+`adb logcat [options] [filter] [filter]` | 查看设备日志
+`adb bugreport` | 打印错误报告
+
+
+常见的 ADB 命令
+---
+
+### 将文件推送到 Android 设备的下载文件夹
+
+```bash
+$ adb push example.apk /mnt/Download/
+```
+
+### 列出所有已安装的包并获取完整路径
+
+```bash
+$ adb shell pm list packages -f
+```
+
+### 从安卓设备中提取文件
+
+```bash
+$ adb pull /mnt/Download/example.apk
+```
+
+### 从主机安装 apk 到 Android 设备
+
+```bash
+$ adb shell install example.apk
+```
+
+### 从 Android 设备存储安装 apk
+
+```bash
+$ adb shell install /mnt/Download/example.apk
+```
+
+### 设置网络代理
+
+```bash
+$ adb shell settings put global http_proxy :
+```
+
+### 禁用网络代理
+
+```bash
+$ adb shell settings put global http_proxy :0
+```
+
+### 显示连接的设备并选择一个设备和外壳
+
+```bash
+$ adb devices
+$ adb -s 7f1c864e shell
+```
+
+`7f1c864e` 是设备 `ID`
+
+### 通过 ip 地址无线连接到设备
+
+```bash
+$ adb connect 192.168.56.101:5555
+```
+
+### adb 通过 wifi
+
+
+我们可以通过 `wifi` 或专门使用 `tcp` 连接使用 `adb`。 要通过 `wifi` 使用 `adb`,首先通过 `usb` 连接手机并启用 `usb` 调试。然后列出所有设备:
+
+```bash
+$ adb devices
+# 这应该给出这样的输出:
+# device_id device
+```
+
+现在检查 `android` 设备的 `ip`:
+
+```bash
+$ adb shell ifconfig
+# 输出:
+
+wlan0 Link encap:UNSPEC Driver icnss
+ inet addr:XXX.XXX.X.XX Bcast:XXX.XXX.X.XXX
+```
+
+记下 `inet addr` 后面的 `ip` 地址。我们稍后会需要它。现在在某个端口重新启动 `tcpip`:
+
+```bash
+$ adb tcpip $port
+```
+
+例如 5555:
+
+```bash
+$ adb tcpip 5555
+```
+
+您现在可以断开使用。 现在连接到设备只需给出以下命令:
+
+```bash
+$ adb connect $ip:$port
+```
+
+like:
+
+```bash
+$ adb connect 192.168.1.4:5555
+```
+
+### 从计算机上的 apk 文件安装应用程序
+
+```bash
+$ adb install /Users/dev/projects/myapp.apk
+```
+
+### 查找应用的 apk 路径
+
+```bash
+$ adb shell pm path com.example.myapp
+```
+
+将 `com.example.myapp` 替换为您自己的应用程序包名称
+
+### 按名称查找应用的包名
+
+```bash
+$ adb shell pm list package | grep app_name
+```
+
+### 将 apk 从设备提取到您的计算机
+
+```bash
+$ adb pull /data/app/com.example.myapp.apk ./
+```
+
+### 将文件从计算机复制到设备
+
+```bash
+$ adb push path/to/local/file /sdcard/foo.txt
+```
+
+### 滚动屏幕
+
+```bash
+$ adb shell input swipe 300 300 500 1000 # 上
+$ adb shell input swipe 500 1000 300 300 # 下
+```
+
+### 发文本
+
+使用虚拟键盘发送文本:
+
+```bash
+$ adb shell input text "Hello World"
+```
+
+### 发送按键事件
+
+```bash
+$ adb shell input keyevent 66
+# 66 是回车键码
+```
+
+### 发送点击
+
+点击又名点击屏幕:
+
+```bash
+$ adb shell input tap x y
+```
+
+### 查看包的日志
+
+```bash
+$ adb shell 'logcat --pid=$(pidof -s )'
+```
+
+查看特定包的日志