Android ADB Shell 常用命令

1. 设备连接与排错 (Device Connection)

Linux下无权限或无法识别设备

当Linux系统无法识别Android设备,或出现 no permissions 报错时,通常是 udev 规则缺失导致。

解决方法:

  1. 获取设备ID

运行 lsusb 查看USB设备列表。找到你的设备(如含 "Google Inc." 或厂商名)。

记录下 ID 后的两组数字,例如 18d1:4ee7

  • idVendor: 18d1
  • idProduct: 4ee7
  1. 配置udev规则

创建或编辑规则文件:

bash 复制代码
sudo vim /etc/udev/rules.d/90-android.rules

添加以下内容(替换为你的ID):

udev 复制代码
SUBSYSTEM=="usb", ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="4ee7", MODE="0666", GROUP="plugdev", SYMLINK+="android", SYMLINK+="android_adb"
  1. 重启服务与ADB
bash 复制代码
sudo udevadm control --reload-rules
sudo service udev restart
sudo udevadm trigger
adb kill-server
adb start-server

2. 应用与包管理 (Package Management)

主要使用 pm (Package Manager) 命令。

查看已安装应用

  • 列出所有包
bash 复制代码
adb shell pm list packages
  • 按条件筛选
  • -f: 显示包名及其对应的APK路径
  • -d: 仅显示被禁用的包
  • -e: 仅显示启用的包
  • -s: 仅显示系统包
  • -3: 仅显示第三方安装的包
  • -i: 显示安装来源(如 installer_package_name
  • grep 过滤: adb shell pm list packages | grep "keyword"

获取应用信息

  • 查看应用APK路径
bash 复制代码
adb shell pm path <package_name>

示例adb shell pm path com.android.settings

  • 查看应用详细信息 (dumpsys)
bash 复制代码
adb shell dumpsys package <package_name>

此命令会输出极为详细的应用组件、权限、状态等信息。

停止与清除

  • 强行停止应用
bash 复制代码
adb shell am force-stop <package_name>
  • 清除应用数据 (类似重装效果):
bash 复制代码
adb shell pm clear <package_name>

3. Activity 与 Service 管理 (Activity Manager)

主要使用 am (Activity Manager) 命令。

启动 Activity

bash 复制代码
adb shell am start -n <package_name>/<activity_class_name> [options]
  • 携带参数启动

  • --es <key> <string_value>: 传递 String 参数

  • --ei <key> <int_value>: 传递 Int 参数

  • --ez <key> <boolean_value>: 传递 Boolean 参数

示例

bash 复制代码
adb shell am start -n com.example.app/.MainActivity --es username "test"

发送广播 (Broadcast)

bash 复制代码
adb shell am broadcast -a "<ACTION_NAME>" [extras]
  • 示例:模拟SIM卡状态变化
bash 复制代码
adb shell am broadcast -a "android.intent.action.SIM_STATE_CHANGED" --es "ss" "LOADED"

查看当前 Activity

快速确认当前显示的界面所属的 Activity。

bash 复制代码
adb shell dumpsys activity top | grep ACTIVITY

或者(Windows下若无grep):

bash 复制代码
adb shell dumpsys activity top

然后手动查找 ACTIVITY 关键字。

Service 操作

  • 查看运行中的 Service(添加到ServiceManager的):
bash 复制代码
adb shell service list
  • Dump Service 信息
bash 复制代码
adb shell dumpsys activity service <service_name>

4. 文件系统与搜索 (File System & Search)

Android Shell 支持大部分标准 Linux 命令。

文本搜索 (grep)

  • 基本用法
bash 复制代码
grep -rn "search_term" <path>
  • -r: 递归查找子目录

  • -n: 显示行号

  • -i: 忽略大小写

  • -l: 仅列出包含匹配内容的文件名

  • -w: 全词匹配(Word matching)

  • 实用场景

查找所有包含 "ERROR" 的日志文件:

bash 复制代码
find /sdcard/logs | xargs grep "ERROR"

文件查找 (find)

  • 按文件名查找
bash 复制代码
find <path> -name "<filename_pattern>"

示例find /system -name "*.so"

容量与结构

  • 查看磁盘空间
bash 复制代码
df -h
  • 查看当前目录大小
bash 复制代码
du -sh .
  • 查看目录树结构
bash 复制代码
tree -L 2  # 仅显示2层深度

5. 日志与调试 (Logging & Debugging)

Logcat 高级用法

  • 保存日志到文件
bash 复制代码
adb logcat -v time > log.txt
  • 清除旧日志
bash 复制代码
adb logcat -c
  • 过滤特定字符串

  • Linux/Mac: adb logcat | grep "Error"

  • Windows: adb logcat | findstr "Error"

  • 包含全部缓冲区(包含 crash, radio, events 等):

bash 复制代码
adb logcat -b all

属性系统 (Properties)

  • 获取属性
bash 复制代码
adb shell getprop <key>

示例 :获取运营商信息 adb shell getprop ro.carrier

  • 设置属性(通常需要root或特殊权限):
bash 复制代码
adb shell setprop <key> <value>

示例 :允许覆盖安装系统App adb shell setprop debug.allow.persist.update true

进程信息

  • 查看进程
bash 复制代码
adb shell ps -ef | grep <app_name>
  • 查看进程打开的文件 (lsof):
bash 复制代码
adb shell lsof -p <pid>

Window Manager (wm)

  • 开启 ProtoLog (调试WMS/AMS)
bash 复制代码
adb shell wm logging enable-text WM_DEBUG_STATES

6. 屏幕操作 (Screen Operations)

屏幕截图

  • 截图并保存到电脑(一步到位):
bash 复制代码
adb exec-out screencap -p > screenshot.png
  • 传统方式(先存手机再拉取):
bash 复制代码
adb shell screencap -p /sdcard/sc.png
adb pull /sdcard/sc.png

屏幕录制

  • 录制视频
bash 复制代码
adb shell screenrecord /sdcard/demo.mp4
  • 限制时长(例如30秒)
bash 复制代码
adb shell screenrecord --time-limit 30 /sdcard/demo.mp4

注意:默认最长录制180秒。


7. 系统与工程模式 (Advanced & System)

解锁 Bootloader

  • 进入 Bootloader 模式
bash 复制代码
adb reboot bootloader
  • 解锁命令(需在开发者选项开启 OEM Unlock):
bash 复制代码
fastboot flashing unlock
相关推荐
城东米粉儿3 小时前
Android 图片内存问题分析、定位
android
之歆3 小时前
MySQL 主从复制完全指南
android·mysql·adb
独行soc4 小时前
2026年渗透测试面试题总结-25(题目+回答)
android·网络·安全·web安全·渗透测试·安全狮
城东米粉儿5 小时前
Android KOOM 笔记
android
城东米粉儿5 小时前
android 内存优化笔记
android
无巧不成书02186 小时前
Kotlin Multiplatform(KMP)核心解析
android·开发语言·kotlin·交互·harmonyos
前路不黑暗@6 小时前
Java项目:Java脚手架项目的地图的POJO
android·java·开发语言·spring boot·学习·spring cloud·maven
之歆6 小时前
Nagios 监控完全指南
android
独自破碎E6 小时前
BISHI53 [P1080] 国王游戏(简化版)
android·java·游戏