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
相关推荐
传奇开心果编程41 分钟前
【Compose Multiplatform 跨端开发学与练】第9课 测试与调试
android·学习·macos·ios·kotlin·web·composer
传奇开心果编程1 小时前
【Compose Multiplatform 跨端开发学与练】第4课 导航与路由
android·windows·学习·ui·ios·kotlin·composer
传奇开心果编程1 小时前
【Compose Multiplatform 跨端开发学与练】第6课 状态管理与架构
android·学习·ui·ios·架构·kotlin·composer
事圆则缓1 小时前
Android AOSP 定制常见概念:源码目录、系统镜像与刷机流程
android
传奇开心果编程1 小时前
【Compose Multiplatform 跨端开发学与练】第2课 Compose 基础语法
android·windows·学习·ui·ios·kotlin·composer
supabc1232 小时前
Celium:连接 Windows、Mac、Linux 与 Android,让远程访问和设备管理更简单
android·linux·windows·macos·远程访问·网络管理·celium
Dovis(誓平步青云)2 小时前
导览音频切换太快,旧讲解不能覆盖新展品
android·前端·javascript·ecmascript·音视频·宠物
五彩小白19 小时前
自回归和上下文
android
事圆则缓21 小时前
Android 多渠道打包实战:Product Flavors、签名、AAB 与发包校验
android
树下困觉眯1 天前
View绘制流程学习--获取WindowManager的三种方式
android·系统架构·view design