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
相关推荐
赏金术士2 小时前
Kotlin ViewModel
android·kotlin
vistaup3 小时前
kotlin 二维码实现高斯模糊
android·kotlin
愈努力俞幸运4 小时前
function calling与mcp
android·数据库·redis
阿巴斯甜5 小时前
LeakCanary
android
阿巴斯甜5 小时前
compose
android
阿巴斯甜5 小时前
Glide
android
-SOLO-5 小时前
使用Perfetto debug trace查看超时slice
android
阿巴斯甜5 小时前
Retrofit
android
阿巴斯甜5 小时前
OkHttp
android
阿巴斯甜6 小时前
Flow
android