ddms使用笔记 2018-4-12 16:27:27

首先下载android sdk,找到tools下的ddms.bat,直接打开即可。但我的tools文件夹下没有ddm.bat,tools文件夹下的monitor.bat也是可以用的,功能是一样的,打开后如下图所示: monitor.bat

上图中看左侧devices列表是空的,cmd内输入 adb devices 查看设备列表也是空的,说明还没有设备连接上,此时使用数据线连接上手机和电脑,打开手机上的开发者选项并且开启usb调试。此时你就可以看到devices列表内会出现你的设备,包括设备名称、设备状态以及设备的系统版本。

插一个小插曲

今天启动ddms时报错 启动报错 之后发现检查adb与java环境也都不存在了,随即检查adb环境与java环境配置也没有问题,在网上搜索解决办法,找到了下面的解决办法。 解决办法

尝试这个办法ddms虽然打开了,但是打开之后继续报错。报错详情是让我C:\android-sdk_r24.4.1-windows\android-sdk-windows\tools\lib\monitor-x86_64\configuration下找1523412379242.log,打开这个日志文件找问题。打开后如图:

!ENTRY org.eclipse.osgi 4 0 2018-04-11 10:06:22.051 !MESSAGE Application error !STACK 1 java.lang.NullPointerException at org.eclipse.core.runtime.URIUtil.toURI(URIUtil.java:280) at org.eclipse.e4.ui.internal.workbench.ResourceHandler.loadMostRecentModel(ResourceHandler.java:127) at org.eclipse.e4.ui.internal.workbench.swt.E4Application.loadApplicationModel(E4Application.java:370) at org.eclipse.e4.ui.internal.workbench.swt.E4Application.createE4Workbench(E4Application.java:220) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:557) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:543) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at com.android.ide.eclipse.monitor.MonitorApplication.start(MonitorApplication.java:63) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:353) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584) at org.eclipse.equinox.launcher.Main.run(Main.java:1438)

看到这个问题就蒙了。最后放弃这条线。开始从最开始考虑为什么昨天还可以今天就不行了呢,回想了下昨天晚上自己对我的电脑都做了什么(跟adb和java环境相关的操作):

  1. 重启了电脑
  2. 安装了android studio

随后,我做了两个动作

  1. 重启电脑,不行;
  2. 卸载android studio,之后,一切恢复正常,emmmmmmmmm 难道是自己之前安装的adb环境和android studio有冲突?试验一下看下,在这个网站https://developer.android.com/studio/index.html?hl=zh-cn 下载一个无android sdk的android tudio版本安装试一下,下载成功之后安装,再重启电脑,再次检查自己的adb环境是没有问题的,ddms也能正常打开。 so?两者有冲突?

以下是ddms使用详解*(先列自己掌握的):

屏幕左上角devices列表,展示已连接上的设备,以及该设备下运行的进程列表 一:online这列展示的是进程id,随后是进程关联的端口号

devices

随后要介绍的功能是devices面板内的ui automator。 ui

不幸的是,打开报错了,这个错误的意思是无法定位页面元素,打开细节查看。 打开报错 1.首先检查android版本,因为 uiautomator官方要求是android 4.1以上,但是我的版本是6.0故排除这个原因,这个先不管了,用另一个工具来代替吧。打开C:\android-sdk_r24.4.1-windows\android-sdk-windows\tools\bin\uiautomatorviewer.bat ui 可以看到当前界面的资源标识、包名等信息 资源标识

二:logcat and console:

终端上每个进程运行都有会日志产生,而且很多。 日志

所以这个时候可以用搜索功能或者过滤器 搜索和过滤器

指定观察某个进程的日志,直接搜索该进程的pid(进程id:可以从devices面板内得到)

logcat内容详解:

* level:v-详细(verbose显示所有日志消息);D-调试(debug显示仅在开发期间有用的调试日志消息,以及此列表中较低的消息级别); I-信息(info 显示常规使用的预计日志消息,以及此列表中较低的消息级别) W-警告(warn显示尚不是错误的潜在问题,以及此列表中较低的消息级别) E-错误(error显示已经引发错误的问题,以及此消息列表中较低的消息级别) A-断言(assert显示开发者预计绝不会发生的问题)
* time:执行的时间
* pid:进程id
* tid:   TID(线程控制符)英文全称为THREAD Identifier,TID就是线程的身份标识,进程一运行系统就会自动分配给各线程独一无二的TID。类似于进程的概念.
* application:应用程序
* tag:标签,通常表示系统中的一些进程名,比如我们运行helloworld程序的话,就会看到activitymanager在运行。
* text:日志详情

这个日志的作用是,比如app正在运行中crash,可以用日志来定位crash的原因。