1. 设备连接与排错 (Device Connection)
Linux下无权限或无法识别设备
当Linux系统无法识别Android设备,或出现 no permissions 报错时,通常是 udev 规则缺失导致。
解决方法:
- 获取设备ID:
运行 lsusb 查看USB设备列表。找到你的设备(如含 “Google Inc.” 或厂商名)。
记录下 ID 后的两组数字,例如 18d1:4ee7。
-
idVendor: 18d1
-
idProduct: 4ee7
- 配置udev规则:
创建或编辑规则文件:
1
| sudo vim /etc/udev/rules.d/90-android.rules
|
添加以下内容(替换为你的ID):
1
| SUBSYSTEM=="usb", ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="4ee7", MODE="0666", GROUP="plugdev", SYMLINK+="android", SYMLINK+="android_adb"
|
- 重启服务与ADB:
1 2 3 4 5
| sudo udevadm control --reload-rules sudo service udev restart sudo udevadm trigger adb kill-server adb start-server
|
2. 应用与包管理 (Package Management)
主要使用 pm (Package Manager) 命令。
查看已安装应用
1
| adb shell pm list packages
|
- 按条件筛选:
-
-f: 显示包名及其对应的APK路径
-
-d: 仅显示被禁用的包
-
-e: 仅显示启用的包
-
-s: 仅显示系统包
-
-3: 仅显示第三方安装的包
-
-i: 显示安装来源(如 installer_package_name)
-
grep 过滤: adb shell pm list packages | grep "keyword"
获取应用信息
1
| adb shell pm path <package_name>
|
示例:adb shell pm path com.android.settings
1
| adb shell dumpsys package <package_name>
|
此命令会输出极为详细的应用组件、权限、状态等信息。
停止与清除
1
| adb shell am force-stop <package_name>
|
1
| adb shell pm clear <package_name>
|
3. Activity 与 Service 管理 (Activity Manager)
主要使用 am (Activity Manager) 命令。
启动 Activity
1
| 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 参数
示例:
1
| adb shell am start -n com.example.app/.MainActivity --es username "test"
|
发送广播 (Broadcast)
1
| adb shell am broadcast -a "<ACTION_NAME>" [extras]
|
1
| adb shell am broadcast -a "android.intent.action.SIM_STATE_CHANGED" --es "ss" "LOADED"
|
查看当前 Activity
快速确认当前显示的界面所属的 Activity。
1
| adb shell dumpsys activity top | grep ACTIVITY
|
或者(Windows下若无grep):
1
| adb shell dumpsys activity top
|
然后手动查找 ACTIVITY 关键字。
Service 操作
- 查看运行中的 Service(添加到ServiceManager的):
1
| adb shell dumpsys activity service <service_name>
|
4. 文件系统与搜索 (File System & Search)
Android Shell 支持大部分标准 Linux 命令。
文本搜索 (grep)
1
| grep -rn "search_term" <path>
|
-r: 递归查找子目录
-n: 显示行号
-i: 忽略大小写
-l: 仅列出包含匹配内容的文件名
-w: 全词匹配(Word matching)
实用场景:
查找所有包含 “ERROR” 的日志文件:
1
| find /sdcard/logs | xargs grep "ERROR"
|
文件查找 (find)
1
| find <path> -name "<filename_pattern>"
|
示例:find /system -name "*.so"
容量与结构
5. 日志与调试 (Logging & Debugging)
Logcat 高级用法
1
| adb logcat -v time > log.txt
|
过滤特定字符串:
Linux/Mac: adb logcat | grep "Error"
Windows: adb logcat | findstr "Error"
包含全部缓冲区(包含 crash, radio, events 等):
属性系统 (Properties)
示例:获取运营商信息 adb shell getprop ro.carrier
1
| adb shell setprop <key> <value>
|
示例:允许覆盖安装系统App adb shell setprop debug.allow.persist.update true
进程信息
1
| adb shell ps -ef | grep <app_name>
|
Window Manager (wm)
- **开启 ProtoLog (调试WMS/AMS)**:
1
| adb shell wm logging enable-text WM_DEBUG_STATES
|
6. 屏幕操作 (Screen Operations)
屏幕截图
1
| adb exec-out screencap -p > screenshot.png
|
1 2
| adb shell screencap -p /sdcard/sc.png adb pull /sdcard/sc.png
|
屏幕录制
1
| adb shell screenrecord /sdcard/demo.mp4
|
1
| adb shell screenrecord --time-limit 30 /sdcard/demo.mp4
|
注意:默认最长录制180秒。
7. 系统与工程模式 (Advanced & System)
解锁 Bootloader
- 解锁命令(需在开发者选项开启 OEM Unlock):
1
| fastboot flashing unlock
|
本文链接:
http://longzhiye.top/2025/11/02/2025-11-02/