1. 设备连接与排错 (device connection)
linux下无权限或无法识别设备
当linux系统无法识别android设备,或出现 no permissions 报错时,通常是 udev 规则缺失导致。
解决方法:
- 获取设备id:
运行 lsusb 查看usb设备列表。找到你的设备(如含 “google inc.” 或厂商名)。
记录下 id 后的两组数字,例如 18d1:4ee7。
idvendor: 18d1idproduct: 4ee7
- 配置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"- 重启服务与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 命令内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论