AndroidStudio应用调试技巧(下)

第2节 Android Device Monitor

Android Studio的Android Device Monitor(简称ADM)是我们动态调试安卓程序时重要的帮手。它提供了很多动态调试的工具和调试方法。上一章介绍的log调试,就需要通过ADM的logcat显示调试内容;它还可以查看系统内存的占用情况,可以看到系统CPU的运行情况。

ADM可以在两个地方工作:

  1. 在Android Studio集成窗口:在Android Studio下方的窗口中,点击Android Monitor,就能在Android Studio中显示;

    在第一个框中,选中我们要调试的设备,第二个框中选中我们要调试的应用,

  2. ADM单独运行:通过Android Studio的菜单栏启动;

    独立运行后,就像这样,

2.1 Logcat功能

Logcat用来查看程序输出的log。我们可以选择log的类型(verbose debug info warning error)来过滤log。

当选择verbose时,logcat会输出所有类型的log;

当选择debug时,logcat会输出debug info warning error等类型的log;

当选择info时,logcat会输出info warning error等类型的log;

当选择warning时,logcat会输出warning error等类型的log;

当选择error时,logcat会输出error等类型的log;

有时候log太多,会影响我们的判断,可以自定义过滤器。

  1. 选择编辑过滤器,

  2. 指定过滤器的名字,输入log中包含关键字的内容,

    以后logcat获取的log,就只有匹配过滤器中关键字的log了。

还有一个非常有用的功能是重启ADB。ADB有时候会因为种种原因而无法与设备相连,这时候通过下图的按钮重启ADB就能解决问题。

2.2 Android Studio中的ADM

在Android Studio集成界面,ADM还提供了方便的设备截屏、设备录像带功能。

设备截屏能将设备上正在显示的内容以截取图片或视频的形式保存到电脑上。

  • memory能够实时监测当前被调试的应用内存使用大小,

- `CPU`能够实时监测当前被调试的应用CPU占用大小,

- `Network`能够实时监测当前被调试的应用网络使用情况,

## 2.3 独立运行的ADM
除了logcat,独立运行的ADM提供了更多的调试工具。点击菜单栏的`添加视图`图标,可以为ADM添加上`DDMS`、`Hierarchy View`、`Debug`、`Pixel Perfect`等高级的调试窗口。

`DDMS`是谷歌提供的一个非常全面的调试工具,它能和安卓虚拟机通信,获取最原始的调试数据。

1. 选择要调试的设备和应用;
2. 点击`DDMS`的菜单栏,启动不同的高级调试功能;

`DDMS`有很多高级的调试功能:

* `Debug`功能:连接到`debug`版本的应用,可以使用打断点、逐步跟踪的静态调试方式;

* `heap`功能:监测当前内存的使用,手动发起内存回收,保存内存分配的所有状态到电脑上,用其他高级工具做进一步分析,查找内存泄漏;

* `thread`功能:查看应用所有的线程,获取线程当前的运行信息;

* `UI元素分析`功能:分析显示界面指定窗口的UI元素布局信息,帮助开发者进行界面布局的调试;

* `OpenGL trace`功能:记录应用中OpenGL调用的信息;

以上这些功能都是高级的调试功能,每一个都可以开设单独的专题进行深入的讲解。因为本文针对的同学是刚开始接触调试的新手,所以这里就不详细的介绍用法了。我们将在调试的高级篇章中逐个详细介绍。

# 第3节 ADB工具
ADB-Android Debug Bridge,是安卓系统调试的核心。它将设备与调试用的电脑在软件层次上连接在了一起。第二章介绍的ADM中很多获取设备上信息的功能,其实就是通过ADB得到的。

ADB工具位于`SDK目录\platform-tools\adb`。如果在安装的时候你采用默认目录安装,那么它应该是`c:\Users\用户名\AppData\Local\Android\sdk\platform-tools\adb`

## 3.1 为ADB添加环境变量
为了方便的使用ADB工具,我们最好为它添加一个`环境变量`。这样,我们只要打开`cmd命令行终端`,就能马上使用它了。

1. `我的电脑`点击右键->`属性`->`高级系统设置`->`环境变量`,选中`Path`这一项,进行编辑;

2. 在编辑栏最后输入ADB所在的路径`c:\Users\用户名\AppData\Local\Android\sdk\platform-tools\`;如果该项之前还有别的路径,请用`;`分隔开;

3. 重启电脑->连接上手机->启动`cmd命令行终端`,输入`adb version`,如果得到类似下面的结果,说明ADB已经设置好了;

$adb version
Android Debug Bridge version 1.0.32
Revision eac51f2bb6a8-android

cmd命令行终端的启动方法:

  1. 通过Win+R启动Windows操作系统的运行面板;
  2. 在面板中输入cmd,启动命令行窗口;

3.2 ADB常用命令

ADB提供了很多使用的命令,这里列出最为常用的几个命令的用法。

3.2.1 adb devices

列出当前连接到电脑上的所有安卓设备

$ adb devices
List of devices attached
192.168.56.101:5555 device
356BCJMDUV48    device

3.2.2 adb logcat

输出安卓设备上的log信息。功能和Android Device Manager中的logcat完全一样。后者实际上就是利用了ADB工具。

清除设备上已有的log,

$ adb logcat -c

开始输出log,

$ adb logcat -v time

logcat的-v的输出选项,可以控制输出数据的显示格式。它提供brief process tag raw time threadtime long等参数。大多数情况下,我们使用-v time这个参数项就好了。

获取帮助,

$ adb logcat -h

其实adb logcat并没有h命令选项,不过当logcat没有找到正确的命令时,就会输出logcat的帮助信息,供使用者参考。

3.2.3 adb start-server

启动ADB工具,

$ adb start-server

3.2.4 adb kill-server

停止ADB工具,

$ adb start-server

3.2.5 adb shell

从电脑登录到安卓设备上,

$ adb shell
root@vbox86p:/ # 

登录到设备上后,就可以直接操作设备了。

3.2.6 adb shell dumpsys

输出设备上所有系统模块的状态信息,这个输出会非常的长,

$ adb shell dumpsys

为了让我们关注我们需要的模块,可以进一步设置要dump的模块名称,例如:

$ ./adb shell dumpsys window

甚至更进一步:

$ ./adb shell dumpsys window windows

这些模块的名称和更进一步的关键字(window windows等等),可以从adb shell dumpsys返回的结果中找到,它们的表现形式大概如下:

......
WINDOW MANAGER LAST ANR (dumpsys window lastanr)
......
WINDOW MANAGER POLICY STATE (dumpsys window policy)
......

括号中的就是可以使用的dump形式。

3.2.7 adb install

安装应用,

$ adb install -r /Users/User/Desktop/app.apk
5474 KB/s (1182939 bytes in 0.211s)
    pkg: /data/local/tmp/app.apk
Success

-r选项表示强制安装-如果这个应用以前安装过,就把它卸载了重新安装,可以不使用;后面跟的是安装文件在电脑上的位置。

3.2.8 adb uninstall

卸载应用,

$ adb uninstall com.anddle.calculator
Success

uninstall后面跟的是要卸载的程序的包名字。

3.2.9 adb help

ADB工具还有很多别的功能,可以通过这个命令查询它们的深入的详细的用法。

$ adb help

第4节 Wifi代替数据线调试

我们通常都是使用USB线连接设备和电脑进行的程序调试。

有的程序本身就要使用USB口,例如一个文件浏览器,它可以列出通过USB接口接入的U盘。

在调试这样的应用的时候,USB接口被占用了,但设备也只有一个USB接口,就可以考虑使用WiFi来进行ADB调试了。

通过WiFi代替数据线进行程序调试,利用了ADB工具的adb tcpipadb connect命令。

  1. 使用USB数据线连接设备和电脑,输入如下命令

    adb tcpip 5555 //5555表示指定的端口号码,可以修改成别的不知名端口
  2. 断开USB线,将电脑的ADB通过IP地址连接到设备上
    adb connect 192.168.1.101 //192.168.1.101为android设备在Wifi网络上的IP地址

这样通过命令行就完成了Wifi调试的设置。



不过这里还有一个更简单的方案,使用Android Studio的第三方插件ADB WIFI

  1. Preferences->Plugins->Browse repositories...;
  2. 在搜索栏中输入ADB WIFI
  3. 选择安装plugin
  4. 重启Android Studio就可以了;

以后在要使用Wifi调试的时候,

  1. 使用USB数据线连接设备和电脑;
  2. Tools->Android->ADB WIFI->ADB USB to WIFI
  3. 拔出USB连接线;

此时,就可以像之前使用USB数据线调试那样,通过Wifi对程序进行调试了。

结束

现在,大家对安卓应用调试需要使用的技术有了一个整体的认识,目前这些知识已经能够解决大部分应用需要的调试问题了。

在后面,我们会对调试的高级用法做详细的讲述,例如DDMS各种功能的详细用法。

时间: 2024-10-12 06:55:48

AndroidStudio应用调试技巧(下)的相关文章

AndroidStudio应用调试技巧(上)

前言 安卓开发的过程中,需要对开发的程序进行调试.谷歌官方和非官方,提供了很多帮助我们调试代码的工具和方法.有的使用起来很简单,有的则功能强大,很少有机会接触.因此,我们打算由浅入深的向同学们介绍,知道针对不同的场景,使用合适的工具. 本文针对的读者是: 对安卓程序调试需要指导的新手: 对程序调试没有太多经验的开发者: 在开始以前,假设各位已经做好了如下准备: 已经在搭建好了安卓软件开发平台 一部安卓系统设备(手机或平板电脑): 一根连接电脑和安卓设备的数据线(通常是micro usb数据线):

android studio下的代码调试技巧的运用

记得当初刚开始学习java的时候,每次在eclipse上遇到调试程序的时候都是敲syso+快捷键,用system.out.printLn.输出语句来调试java的程序,哈哈哈,当初感觉确实蛮方便的,后来慢慢步入到安卓,然后使用安卓版的eclipse,在安卓代码当然是要杜绝java的输出语句了,于是又用输出日志Log的几种方式来调试,偶尔还会用到吐司调试(尴尬),eclipse版本的debug模式当初没怎么用习惯,只会简单的单步调试,于是就荒废了,虽然调试起来有点麻烦,但是用顺手了也还马马虎虎,但

一探前端开发中的JS调试技巧

前言:调试技巧,在任何一项技术研发中都可谓是必不可少的技能.掌握各种调试技巧,必定能在工作中起到事半功倍的效果.譬如,快速定位问题.降低故障概率.帮助分析逻辑错误等等.而在互联网前端开发越来越重要的今天,如何在前端开发中降低开发成本,提升工作效率,掌握前端开发调试技巧尤为重要. 本文将一一讲解各种前端JS调试技巧,也许你已经熟练掌握,那让我们一起来温习,也许有你没见过的方法,不妨一起来学习,也许你尚不知如何调试,赶紧趁此机会填补空白. 骨灰级调试大师Alert 那还是互联网刚刚起步的时代,网页前

(转) Java程序员应该知道的10个调试技巧

原地址:http://www.csdn.net/article/2012-09-03/2809495-java-debugging-tips-with-eclipse 调试可以帮助识别和解决应用程序缺陷,在本文中,作者将使用大家常用的的开发工具Eclipse来调试Java应用程序.但这里介绍的调试方法基本都是通用的,也适用于NetBeans IDE,我们会把重点放在运行时上面. 在开始之前,推荐大家去看看Eclipse shortcuts这篇文章,它将会给你带来很多方便.在本文中使用的是Ecli

Ganglia 调试技巧

Gmond # 检查Gmond服务是否正在运行,发出如下命令:ps aux | grep gmond 输出: root      8046  0.0  0.0 103244   844 pts/0    S+   09:38   0:00 grep gmond nobody   25759  1.8  1.0 206388 82356 ?        Ssl  Apr28 208:45 /usr/local/sbin/gmond --conf=/etc/ganglia/gmond.conf #

VS2010常用调试技巧(1)

调试是一个程序员最基本的技能,其重要性不言自明.不会调试的程序员就意味着他即使会一门语言,却不能编制出好的软件.本文就本人在开发过程中常用的调试技巧作下简单呢介绍,希望对大家有所帮助,能力超群者请绕道. 1.单步调试(F10) 在Debug状态下,按下F10,逐行进行调试. 2.逐句调试(F11) 在调试状态下,按下F11,会逐句调试,遇到函数会进入函数内部调试. 3.跳到当前光标处(Ctrl+F10) 我经常看到有些初级程序员,为了到达目标代码位置,在程序运行前就早早设定了断点,然后反复按F1

Chrome调试折腾记_(3)JS断点调试技巧

JS调试技巧 技巧一:格式化压缩代码 技巧二:快速跳转到某个断点的位置 右侧的Breakpoints会汇总你在JS文件所有打过的断点,点击跟checkbox同一行的会暂时取消这个断点,若是点击checkbox下一行的会直接跳转到该断点的位置 技巧三:查看断点内部的作用范围[很实用] 右侧的scope可以看到相当多实用的信息,比如this的指向,是否有值,断点是对象还是其他等.. 技巧4:监听事件断点 右侧的Event Listener Breakpoints可以选择性的监听某类行为事件,比如键盘

网页调试技巧:抓取马上跳转的页面POST信息或者页面内容

http://www.qs5.org/Post/625.html 网页调试技巧:抓取马上跳转的页面POST信息或者页面内容 2016/02/02 | 心得分享 | 0 Replies 有时候调试网页或者抓别人网页的POST包的时候. 总会遇到这样的尴尬,我们需要抓取POST提交的信息. 或者获取POST完成页面返回的代码. 但是,目标页却马上就跳转了,导致,还没来得及Esc呢,页面就已经刷新了. 这种情况,起码谷歌浏览器的F12是搞不了了... 比如下面的情况 我把密码放在 被Post页面的源码

iOS各种调试技巧豪华套餐

转载自http://www.cnblogs.com/daiweilai/p/4421340.html 目录 前言 逼优鸡 知己知彼 百战不殆 抽刀断Bug 普通操作 全局断点(Global BreakPoint) 条件断点(Condational Breakpoints) 打印的艺术 NSLog 开启僵尸对象(Enable NSZombie Objects) 进击的码农 Console(lldb 命令) Profile(instruments) Xcode视图调试 结语 前言 最近博主临近毕业季