ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Android调试命令实战:从基础到高级技巧

Android调试命令实战:从基础到高级技巧 1. 为什么需要掌握Android调试命令作为一名在移动开发领域摸爬滚打多年的老手我见过太多开发者过度依赖IDE的图形界面操作。当遇到真机调试、性能优化或复杂bug时命令行工具往往能提供更直接高效的解决方案。记得去年我们团队遇到一个诡异的ANR问题最终就是通过adb shell dumpsys命令锁定了主线程阻塞的堆栈信息。Android调试命令就像开发者的瑞士军刀它们可以绕过IDE限制直接与设备交互批量执行自动化测试任务获取系统底层状态信息在无图形界面环境下进行调试2. 基础环境配置2.1 ADB工具安装与配置ADB(Android Debug Bridge)是调试命令的核心工具链。推荐通过Android Studio的SDK Manager安装最新版Platform Tools# 检查adb版本 adb --version # 应该显示类似Android Debug Bridge version 1.0.41 # 将adb添加到环境变量Mac/Linux示例 echo export PATH$PATH:~/Library/Android/sdk/platform-tools ~/.zshrc source ~/.zshrc注意如果遇到设备未授权问题检查手机是否开启了USB调试模式并在连接时确认授权对话框。2.2 常用连接方式除了USB连接无线调试更适用于日常开发# 先通过USB连接初始化 adb tcpip 5555 # 断开USB后通过IP连接 adb connect 192.168.1.100:5555 # 查看已连接设备 adb devices -l # 输出示例 # List of devices attached # emulator-5554 device product:sdk_gphone64_x86_64 model:sdk_gphone64_x86_643. 设备管理实战3.1 基础信息查询# 获取设备型号 adb shell getprop ro.product.model # 查看Android版本 adb shell getprop ro.build.version.release # 查询CPU架构 adb shell getprop ro.product.cpu.abi # 综合设备信息推荐 adb shell dumpsys package | grep -A20 Package \[android\]3.2 应用管理技巧安装/卸载应用是高频操作# 安装APK保留数据 adb install -r app-debug.apk # 卸载应用保留数据 adb uninstall -k com.example.app # 清除应用数据 adb shell pm clear com.example.app # 查看应用安装路径 adb shell pm path com.example.app4. 日志与调试进阶4.1 日志过滤技巧# 基本日志查看 adb logcat # 按标签过滤 adb logcat -s ActivityManager:W MyApp:D # 按进程ID过滤 adb logcat --pid$(adb shell pidof -s com.example.app) # 带时间戳和颜色输出 adb logcat -v time -v color4.2 高级调试命令# 查看应用内存占用 adb shell dumpsys meminfo com.example.app # 监控应用启动时间 adb shell am start -W -n com.example.app/.MainActivity # 获取当前Activity堆栈 adb shell dumpsys activity activities | grep -E Hist #|ActivityRecord5. 性能分析实战5.1 CPU/GPU分析# 监控CPU使用率按核心 adb shell top -n 1 | grep -A10 PID USER # 获取GPU渲染信息 adb shell dumpsys gfxinfo com.example.app # 生成systrace报告需Python环境 python ~/Library/Android/sdk/platform-tools/systrace/systrace.py gfx view -o trace.html5.2 网络与电量分析# 监控网络请求 adb shell tcpdump -i any -s 0 -w /sdcard/capture.pcap # 获取电池统计信息 adb shell dumpsys batterystats --reset # 使用应用一段时间后... adb shell dumpsys batterystats --charged com.example.app6. 自动化测试集成6.1 输入模拟# 模拟点击事件 adb shell input tap 500 1000 # 滑动操作 adb shell input swipe 300 1000 300 500 200 # 文本输入 adb shell input text HelloWorld6.2 UI自动化# 获取当前界面XML布局 adb shell uiautomator dump /sdcard/window.xml adb pull /sdcard/window.xml # 通过坐标点击组件 adb shell am instrument -w -r -e debug false -e class com.example.app.TestClass com.example.app.test/androidx.test.runner.AndroidJUnitRunner7. 疑难问题排查7.1 ANR分析# 获取ANR日志 adb pull /data/anr/traces.txt # 监控ANR发生需要root adb shell su -c watch -n 1 ps -A | grep \anr\7.2 崩溃分析# 查看Java崩溃日志 adb logcat *:E # 获取Native崩溃信息 adb shell dmesg | grep -i crash # 生成堆转储文件 adb shell am dumpheap com.example.app /sdcard/heap.hprof adb pull /sdcard/heap.hprof8. 高级技巧与工具链8.1 常用Shell命令封装建议创建~/.adb_aliases文件alias apkinfoadb shell dumpsys package | grep -A20 Package \[ alias clearsfadb shell pm clear com.example.app adb shell am force-stop com.example.app alias uilayoutadb exec-out uiautomator dump /dev/tty8.2 第三方工具推荐scrcpy通过adb实现手机投屏控制brew install scrcpy scrcpy --serial 设备IDAndroid Debugger (adb-Enhanced)npm install -g adb-enhanced adb logcat -c adb logcat -v colorWireshark分析tcpdump抓包文件9. 实战经验分享在小米设备上调试时发现需要额外开启以下设置才能获取完整日志adb shell setprop persist.logd.size 16M adb shell setprop persist.logd.filter I遇到权限问题时可以尝试adb shell pm grant com.example.app android.permission.READ_LOGS对于Android 11设备受限目录访问需要adb shell appops set com.example.app MANAGE_EXTERNAL_STORAGE allow
返回列表