Android ADB Shell 常用命令

 更新时间:2026年05月07日 10:22:58   作者:龙之叶  
文章介绍在Linux环境下使用Android设备的常见命令和操作,涵盖了设备连接、应用与包管理、Activity与Service管理、文件系统与搜索、日志与调试、屏幕操作以及系统与工程模式等七个方面的内容,详细说明了每个方面的具体操作方法和命令用法,感兴趣的朋友跟随小编一起看看吧

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

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

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

解决方法:

  1. 获取设备ID

运行 lsusb 查看USB设备列表。找到你的设备(如含 “Google Inc.” 或厂商名)。
记录下 ID 后的两组数字,例如 18d1:4ee7

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

创建或编辑规则文件:

sudo vim /etc/udev/rules.d/90-android.rules

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

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

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

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

查看已安装应用

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

获取应用信息

  • 查看应用APK路径
adb shell pm path <package_name>

示例:adb shell pm path com.android.settings

  • 查看应用详细信息 (dumpsys)
adb shell dumpsys package <package_name>

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

停止与清除

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

3. Activity 与 Service 管理 (Activity Manager)

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

启动 Activity

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 参数

示例:

adb shell am start -n com.example.app/.MainActivity --es username "test"

发送广播 (Broadcast)

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

查看当前 Activity

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

adb shell dumpsys activity top | grep ACTIVITY

或者(Windows下若无grep):

adb shell dumpsys activity top

然后手动查找 ACTIVITY 关键字。

Service 操作

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

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

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

文本搜索 (grep)

  • 基本用法
grep -rn "search_term" <path>
  • -r: 递归查找子目录
  • -n: 显示行号
  • -i: 忽略大小写
  • -l: 仅列出包含匹配内容的文件名
  • -w: 全词匹配(Word matching)
  • 实用场景

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

find /sdcard/logs | xargs grep "ERROR"

文件查找 (find)

  • 按文件名查找
find <path> -name "<filename_pattern>"

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

容量与结构

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

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

Logcat 高级用法

  • 保存日志到文件
adb logcat -v time > log.txt
  • 清除旧日志
adb logcat -c
  • 过滤特定字符串
  • Linux/Mac: adb logcat | grep "Error"
  • Windows: adb logcat | findstr "Error"
  • 包含全部缓冲区(包含 crash, radio, events 等):
adb logcat -b all

属性系统 (Properties)

  • 获取属性
adb shell getprop <key>

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

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

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

进程信息

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

Window Manager (wm)

  • 开启 ProtoLog (调试WMS/AMS)
adb shell wm logging enable-text WM_DEBUG_STATES

6. 屏幕操作 (Screen Operations)

屏幕截图

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

屏幕录制

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

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

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

解锁 Bootloader

  • 进入 Bootloader 模式
adb reboot bootloader
  • 解锁命令(需在开发者选项开启 OEM Unlock):
fastboot flashing unlock

到此这篇关于Android ADB Shell 常用命令的文章就介绍到这了,更多相关Android ADB Shell 命令内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Jetpack Compose图片组件使用实例详细讲解

    Jetpack Compose图片组件使用实例详细讲解

    在Compose中,图片组件主要有两种,分别是显示图标的Icon组件和显示图片的Image组件,当我们显示一系列的小图标的时候,我们可以使用Icon组件,当显示图片时,我们就用专用的Image组件
    2023-04-04
  • Android屏幕手势检测的实现代码

    Android屏幕手势检测的实现代码

    这篇文章主要介绍了Android屏幕手势检测的实现代码,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-11-11
  • Android 添加TextView删除线(代码简单)

    Android 添加TextView删除线(代码简单)

    最近接了个项目,其中有项目需求是这样的,有这么个需求,就是一个产品下有两个价格,一个是市场价,一个是销售价,这时要把市场价添加个删除线;怎么实现呢?下面小编给大家分享一段简单的代码实现Android 添加TextView删除线
    2016-02-02
  • Android实现多点触控功能

    Android实现多点触控功能

    这篇文章主要为大家详细介绍了Android实现多点触控功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • Android基于ViewPager实现的应用欢迎界面完整实例

    Android基于ViewPager实现的应用欢迎界面完整实例

    这篇文章主要介绍了Android基于ViewPager实现的应用欢迎界面,结合完整实例形式分析了ViewPager类用于欢迎界面显示图片的具体步骤与相关操作技巧,需要的朋友可以参考下
    2016-08-08
  • 如何正确使用Android线程详解

    如何正确使用Android线程详解

    线程是程序员进阶的一道重要门槛。除了了解各类开线程的API之外,更需要理解线程本身到底是个什么样的存在,并行是否真的高效?系统是怎么样去调度线程的?开线程的方式那么多,什么样的姿势才正确?下面通过本文来好好再学习下。
    2016-08-08
  • Android画廊效果之ViewPager显示多个图片

    Android画廊效果之ViewPager显示多个图片

    这篇文章主要为大家详细介绍了Android画廊效果之ViewPager显示多个图片,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • Android利用FlexboxLayout轻松实现流动布局

    Android利用FlexboxLayout轻松实现流动布局

    flexbox是属于CSS的一种布局方案,可以简单、完整、响应式的实现各种页面布局。谷歌将其引入以提高复杂布局的能力。下面这篇文章主要给大家介绍了在Android中利用FlexboxLayout轻松实现流动布局的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-04-04
  • Android中实现TCP和UDP传输实例

    Android中实现TCP和UDP传输实例

    这篇文章主要介绍了Android中实现TCP和UDP传输实例,本文给出了TCP服务器端代码、TCP客户端代码、UDP服务器端代码、UDP客户端代码等代码实例,需要的朋友可以参考下
    2015-03-03
  • Flexbox+ReclyclerView实现流式布局

    Flexbox+ReclyclerView实现流式布局

    这篇文章主要为大家详细介绍了Flexbox+ReclyclerView实现流式布局,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11

最新评论