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
相关推荐
hunterandroid9 小时前
[Android 从零到一] Glide 图片加载原理:三级缓存、生命周期绑定与内存优化
android
法的空间9 小时前
AI 编程时代,为什么 Dart 分析会拖慢大型项目的开发
android·flutter·ios
鱼儿也有烦恼9 小时前
客户端应用架构模式
android·架构
独隅10 小时前
Claude 高效应用实战指南
android·java·开发语言·claude·claude code
硅基手札10 小时前
Android 系统全景专栏 00 · 总目录
android·操作系统·嵌入式开发
YB137510 小时前
Jetpack Compose 动画Crossfade
android
2401_8332693011 小时前
Android歌词功能实现
android
恋猫de小郭11 小时前
Flutter 紧急发布 3.47.8 安全升级版本,建议都升级
android·前端·flutter
YB137511 小时前
Jetpack Compose 动画AnimatedContent
android
美狐美颜SDK开放平台1 天前
准备开发直播APP?视频美颜SDK接入前的十项检查清单
android·ios·音视频·直播美颜sdk·视频美颜sdk