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的精彩世界!

相关推荐
百锦再2 小时前
第12章 测试编写
android·java·开发语言·python·rust·go·erlang
用户69371750013845 小时前
Kotlin 协程基础入门系列:从概念到实战
android·后端·kotlin
SHEN_ZIYUAN6 小时前
Android 主线程性能优化实战:从 90% 降至 13%
android·cpu优化
曹绍华6 小时前
android 线程loop
android·java·开发语言
雨白6 小时前
Hilt 入门指南:从 DI 原理到核心用法
android·android jetpack
介一安全6 小时前
【Frida Android】实战篇3:基于 OkHttp 库的 Hook 抓包
android·okhttp·网络安全·frida
sTone873756 小时前
Android Room部件协同使用
android·前端
我命由我123456 小时前
Android 开发 - Android JNI 开发关键要点
android·java·java-ee·android studio·android jetpack·android-studio·android runtime