Android 系统超级实用的分析调试命令

文章目录

Android 系统提供了大量强大的分析调试命令,涵盖了从应用层到内核层的各个层面。下面我将这些命令分门别类地进行详细介绍,并附上实用示例。

1. 系统信息与状态查询

设备基础信息

bash 复制代码
# 获取设备型号
adb shell getprop ro.product.model

# 获取 Android 版本
adb shell getprop ro.build.version.release

# 获取安全补丁级别
adb shell getprop ro.build.version.security_patch

# 获取所有系统属性
adb shell getprop

# 获取 CPU 信息
adb shell cat /proc/cpuinfo

# 获取内存信息
adb shell cat /proc/meminfo

系统状态监控

bash 复制代码
# 查看磁盘空间
adb shell df -h

# 查看电池状态
adb shell dumpsys battery

# 设置电池状态(测试用)
adb shell dumpsys battery set level 50
adb shell dumpsys battery set status 2

# 查看温度传感器
adb shell dumpsys thermalservice

2. 应用分析与调试

包管理命令

bash 复制代码
# 列出所有已安装应用
adb shell pm list packages

# 列出第三方应用
adb shell pm list packages -3

# 查找特定应用
adb shell pm list packages | grep "google"

# 查看应用安装路径
adb shell pm path com.android.chrome

# 清除应用数据
adb shell pm clear com.example.app

# 禁用系统应用(需要 root)
adb shell pm disable-user com.example.bloatware

活动管理器命令

bash 复制代码
# 启动 Activity
adb shell am start -n com.android.settings/.Settings

# 启动 Activity 并传递数据
adb shell am start -a android.intent.action.VIEW -d "https://www.example.com"

# 强制停止应用
adb shell am force-stop com.example.app

# 发送广播
adb shell am broadcast -a android.intent.action.BOOT_COMPLETED

# 测试应用启动时间
adb shell am start -W -n com.android.chrome/com.google.android.apps.chrome.Main

3. 性能分析命令

内存分析

bash 复制代码
# 查看系统内存使用情况
adb shell cat /proc/meminfo

# 查看应用内存详情
adb shell dumpsys meminfo

# 查看特定应用内存
adb shell dumpsys meminfo com.android.chrome

# 内存压力测试
adb shell am memory-pressure

# 查看进程内存映射
adb shell cat /proc/<pid>/maps

CPU 分析

bash 复制代码
# 实时监控进程 CPU 使用率
adb shell top

# 监控特定进程
adb shell top -p <pid>

# 查看 CPU 使用详情
adb shell dumpsys cpuinfo

# 查看各进程 CPU 时间
adb shell cat /proc/stat

性能分析器

bash 复制代码
# 启动系统跟踪(生成 .trace 文件)
adb shell am profile start <process> /sdcard/trace.trace

# 停止系统跟踪
adb shell am profile stop <process>

# GPU 渲染分析
adb shell dumpsys gfxinfo <package-name>

# 重置 GPU 渲染统计
adb shell dumpsys gfxinfo <package-name> reset

4. 日志分析命令

logcat 基础用法

bash 复制代码
# 查看所有日志
adb logcat

# 按标签过滤
adb logcat -s TAG_NAME

# 按优先级过滤
adb logcat *:E    # 只显示错误日志

# 带时间戳
adb logcat -v time

# 清空日志缓冲区
adb logcat -c

高级日志过滤

bash 复制代码
# 多条件过滤
adb logcat -s "TAG1:TAG2" *:E

# 按进程ID过滤
adb logcat --pid=<pid>

# 按应用包名过滤
adb logcat --pid=$(adb shell pidof -s com.example.app)

# 查看内核日志
adb shell dmesg

# 查看系统启动日志
adb shell logcat -b all -d | grep -i "boot"

5. 网络分析命令

网络状态检查

bash 复制代码
# 查看网络连接
adb shell netstat -tunlp

# 查看网络接口
adb shell ip addr show

# 查看路由表
adb shell ip route

# 网络统计信息
adb shell cat /proc/net/netstat

# 查看 TCP 连接状态
adb shell cat /proc/net/tcp

网络调试

bash 复制代码
# 测试网络连通性
adb shell ping -c 4 8.8.8.8

# 清除 DNS 缓存
adb shell ndc resolver flushdefaultif

# 查看网络策略
adb shell dumpsys netpolicy

# 查看 Wi-Fi 状态
adb shell dumpsys wifi

# 查看网络强度
adb shell dumpsys telephony.registry | grep -i signal

6. 显示与输入系统

显示系统分析

bash 复制代码
# 查看显示信息
adb shell dumpsys display

# 查看 SurfaceFlinger 状态
adb shell dumpsys SurfaceFlinger

# 截图
adb shell screencap -p /sdcard/screenshot.png

# 屏幕录制(Android 4.4+)
adb shell screenrecord /sdcard/demo.mp4

# 获取屏幕分辨率
adb shell wm size

# 获取显示密度
adb shell wm density

输入系统调试

bash 复制代码
# 模拟点击
adb shell input tap 500 500

# 模拟滑动
adb shell input swipe 300 1000 300 500

# 模拟按键
adb shell input keyevent KEYCODE_HOME

# 输入文本
adb shell input text "Hello%sworld"  # %s 表示空格

# 查看输入设备
adb shell getevent -l

7. 电源与硬件分析

电源管理

bash 复制代码
# 查看电源统计
adb shell dumpsys batterystats

# 重置电池统计
adb shell dumpsys batterystats --reset

# 查看唤醒锁
adb shell dumpsys power

# 查看休眠状态
adb shell dumpsys deviceidle

传感器分析

bash 复制代码
# 查看传感器列表
adb shell dumpsys sensorservice

# 查看传感器数据
adb shell dumpsys sensorservice | grep -A 10 "Active sensors"

# 查看硬件服务
adb shell dumpsys hardware_properties

8. 存储与分析

存储分析

bash 复制代码
# 查看存储空间详情
adb shell dumpsys diskstats

# 查看挂载点信息
adb shell cat /proc/mounts

# 查看应用存储使用
adb shell dumpsys package <package-name> | grep -A 10 "storage"

# 查看媒体存储
adb shell dumpsys media.camera

9. 高级调试技巧

进程与线程分析

bash 复制代码
# 查看运行中的进程
adb shell ps -A

# 查看特定应用的进程
adb shell ps -A | grep "chrome"

# 查看线程信息
adb shell ps -T -p <pid>

# 查看进程优先级
adb shell cat /proc/<pid>/stat

# 杀死进程
adb shell kill <pid>

系统服务状态

bash 复制代码
# 列出所有系统服务
adb shell service list

# 查看特定服务状态
adb shell dumpsys activity
adb shell dumpsys window
adb shell dumpsys notification
adb shell dumpsys alarm
adb shell dumpsys location

10. 自动化与脚本编写

常用调试脚本示例

bash 复制代码
#!/bin/bash
# 自动化调试脚本示例

# 获取设备信息
echo "=== Device Info ==="
adb shell getprop ro.product.model
adb shell getprop ro.build.version.release

# 检查关键进程
echo "=== Process Check ==="
adb shell ps -A | grep -E "(systemui|launcher)"

# 检查内存状态
echo "=== Memory Status ==="
adb shell dumpsys meminfo | head -20

# 检查网络连接
echo "=== Network Status ==="
adb shell netstat -tunlp | grep ESTABLISHED

# 监控应用启动
echo "=== App Launch Time ==="
adb shell am start -W -n com.android.settings/.Settings

性能监控脚本

bash 复制代码
#!/bin/bash
# 性能监控脚本

while true; do
    clear
    echo "=== Performance Monitor ==="
    echo "Time: $(date)"
    echo "CPU:"
    adb shell top -n 1 -b | head -10
    echo ""
    echo "Memory:"
    adb shell dumpsys meminfo | grep -E "(Free|Used)" | head -5
    sleep 2
done

实用技巧与最佳实践

  1. 组合使用命令

    bash 复制代码
    # 查找应用进程并监控其内存
    PID=$(adb shell pidof -s com.example.app)
    adb shell dumpsys meminfo $PID
  2. 输出重定向分析

    bash 复制代码
    # 保存日志到文件分析
    adb logcat -v time > logfile.txt
    
    # 使用 grep 过滤关键信息
    adb logcat | grep -i "error\|exception\|fatal"
  3. 定时监控

    bash 复制代码
    # 每5秒监控一次内存
    watch -n 5 "adb shell dumpsys meminfo | head -20"

这些命令覆盖了 Android 系统调试的各个方面,从基础信息获取到深度性能分析。掌握这些命令能够极大地提高 Android 开发和问题排查的效率。根据具体的使用场景,可以灵活组合这些命令来满足不同的调试需求。


结束语

Flutter是一个由Google开发的开源UI工具包,它可以让您在不同平台上创建高质量、美观的应用程序,而无需编写大量平台特定的代码。我将学习和深入研究Flutter的方方面面。从基础知识到高级技巧,从UI设计到性能优化,欢饮关注一起讨论学习,共同进入Flutter的精彩世界!

相关推荐
阿巴斯甜5 小时前
Android 报错:Zip file '/Users/lyy/develop/repoAndroidLapp/l-app-android-ble/app/bu
android
Kapaseker5 小时前
实战 Compose 中的 IntrinsicSize
android·kotlin
xq95276 小时前
Andorid Google 登录接入文档
android
黄林晴7 小时前
告别 Modifier 地狱,Compose 样式系统要变天了
android·android jetpack
冬奇Lab20 小时前
Android触摸事件分发、手势识别与输入优化实战
android·源码阅读
城东米粉儿1 天前
Android MediaPlayer 笔记
android
Jony_1 天前
Android 启动优化方案
android
阿巴斯甜1 天前
Android studio 报错:Cause: error=86, Bad CPU type in executable
android
张小潇1 天前
AOSP15 Input专题InputReader源码分析
android
_小马快跑_1 天前
Kotlin | 协程调度器选择:何时用CoroutineScope配置,何时用launch指定?
android