ADB(Android Debug Bridge)是Android开发工具包(Android SDK)的一部分,是一个命令行工具,它充当电脑与Android设备之间的桥梁,提供多种功能,主要包括:
0. 使用 adb shell/run-as 包名 可以看到data/data/包名 里面的数据,其他的目录还不行。
1. **设备连接管理**:
- 列出连接到电脑的所有Android设备或模拟器:`adb devices`
- 启动、停止或重启设备的ADB服务:`adb start-server`, `adb kill-server`
2. **应用程序部署**:
- 将APK文件安装到设备上:`adb install <path_to_apk>`
- 卸载应用程序:`adb uninstall <package_name>`
- 推送文件到设备:`adb push <local_path> <remote_path>`
- 从设备拉取文件到电脑:`adb pull <remote_path> <local_path>`
3. **调试和日志收集**:
- 查看设备日志输出:`adb logcat`
- 过滤和保存日志:`adb logcat -v <format> > <log_file.txt>`
- 连接调试器:`adb forward tcp:<port> jdwp:<pid>` 或 `adb shell am start --activity-clear-top -D <component>`
- 在设备上运行shell命令:`adb shell <command>`
- 查看设备CPU和内存信息:如前所述的内存和CPU查询命令
4. **屏幕截图和录屏**:
- 截取设备屏幕快照:`adb exec-out screencap -p > screenshot.png`
- 录制设备屏幕:`adb shell screenrecord /sdcard/screen.mp4`
5. **设备控制**:
- 进入或退出设备的shell环境:`adb shell`
- 模拟按键事件:`adb shell input keyevent <key_code>`
- 启动Activity或BroadcastReceiver:`adb shell am start <intent>`
6. **访问设备文件系统**:
- 列出设备内部存储中的文件:`adb shell ls /sdcard/`
- 创建、删除、移动设备中的文件或目录:通过adb shell执行相关Linux命令
7. **多设备支持**:
- 对单个设备或指定序列号的设备操作:`adb -s <device_serial_number> <command>`
8. **远程调试**:
- 支持无线连接设备进行调试:通过`adb pair`和`adb connect`命令实现无线ADB连接
通过ADB,开发者可以进行应用程序的测试、调试、性能分析以及系统级别的诊断和控制等操作。它是Android开发过程中不可或缺的工具之一。
`adb shell` 是Android Debug Bridge (ADB) 中的一个命令,它允许用户在电脑上通过命令行界面进入Android设备或模拟器的Linux shell环境,从而可以直接在设备上执行各种命令,比如查看文件系统内容、修改系统设置、运行系统命令、检查系统资源占用情况(如CPU、内存)、启动应用等。
当你运行 `adb shell` 命令后,你将获得一个交互式的shell提示符,可以在这个环境中像在Linux终端一样输入和执行命令。例如:
```shell
adb shell
```
进入shell后,你可以执行以下操作:
- 查看设备内存信息:
```shell
cat /proc/meminfo
```
- 查看CPU负载:
```shell
top
```
- 查看当前目录下的文件列表:
```shell
ls
```
- 运行某个应用:
```shell
am start -n com.example.app/.MainActivity
```
- 更改系统设置(需root权限):
```shell
settings put system setting_name value
```
注意:部分操作可能需要设备开启USB调试,并赋予相应权限才能执行。此外,对系统级的操作往往需要设备具有root权限。
除了前面提到的基本功能外,`adb shell` 还有更多实用的功能:
1. **模拟用户输入**:
- 发送按键事件:例如,模拟点击Home键或Back键
```shell
input keyevent KEYCODE_HOME
input keyevent KEYCODE_BACK
```
- 触摸事件:模拟手指触摸屏幕的动作
```shell
input tap x y
```
- 滑动事件:模拟手指滑动屏幕的动作
```shell
input swipe x1 y1 x2 y2 duration
```
2. **查看电池信息**:
```shell
dumpsys battery
```
3. **查看网络信息**:
```shell
netstat -tulpn
```
4. **查看设备属性**:
```shell
getprop
```
5. **更改设备设置**:
- 设置屏幕亮度
```shell
su -c 'echo X > /sys/class/backlight/<backlight_device>/brightness'
```
- 关闭或开启Wi-Fi
```shell
svc wifi enable/disable
```
6. **定位并杀死应用进程**:
```shell
ps | grep <package_name>
kill <pid>
```
7. **查看应用的日志输出**:
```shell
logcat -s <tag_name>
```
8. **备份与恢复数据**:
- 备份某个应用的数据:
```shell
adb backup -apk -shared -all -f backup.ab <package_name>
```
- 恢复备份的数据:
```shell
adb restore backup.ab
```
9. **截取屏幕截图**:
```shell
screencap -p /sdcard/screenshot.png
```
10. **执行Shell脚本**:
可以将一系列命令写入文本文件,然后在adb shell下执行该脚本:
```shell
adb shell sh /path/to/script.sh
```
以上只是`adb shell`众多功能中的一部分,实际上,由于其能访问到设备底层,因此可以进行许多高级操作,如调试系统服务、修改系统配置文件等。不过,请注意在进行此类操作时,必须谨慎对待,以防误操作导致设备出现问题。