71

我之前使用过 hierarachyviewer,但在 android 模拟器上。当我在模拟器上使用它时,它工作得非常好。但是它不适用于三星 Galaxy TAB 7.0 和 Android 2.3.4。

这是我得到的日志

11:04:22 E/hierarchyviewer: Unable to get view server version from device 303599
64881B00EC
11:04:22 E/hierarchyviewer: Unable to get view server protocol version from devi
ce 30359964881B00EC
11:04:24 E/hierarchyviewer: Unable to debug device 30359964881B00EC
11:05:05 E/hierarchyviewer: Unable to get view server version from device 303599
64881B00EC
11:05:05 E/hierarchyviewer: Unable to get view server protocol version from devi
ce 30359964881B00EC
11:05:07 E/hierarchyviewer: Unable to debug device 30359964881B00EC
11:09:38 E/hierarchyviewer: Unable to get view server version from device 303599
64881B00EC
11:09:38 E/hierarchyviewer: Unable to get view server protocol version from devi
ce 30359964881B00EC
11:09:40 E/hierarchyviewer: Unable to debug device 30359964881B00EC

我也没有在调试模式下使用hierarchyviewer,只是运行应用程序。谢谢。

4

8 回答 8

62

我找到了一种解决方法:https ://github.com/romainguy/ViewServer

ViewServer 是一个简单的类,您可以在 Android 应用程序中使用 HierarchyViewer 检查工具...

如果您确实需要此库,请按照以下说明操作:

  • 包括 ViewServer 库(在此处找到简单的说明)
  • 您的应用程序必须需要 INTERNET 权限
  • 使用此 API 的推荐方法是在创建活动时注册它们,并在它们被销毁时取消注册它们:

    public class MyActivity extends Activity {
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            // Set content view, etc.
            ViewServer.get(this).addWindow(this);
        }
    
        public void onDestroy() {
            super.onDestroy();
            ViewServer.get(this).removeWindow(this);
        }
    
        public void onResume() {
            super.onResume();
            ViewServer.get(this).setFocusedWindow(this);
        }
    }
    

请参阅 ViewServer.java 中的文档以获取更多信息...

于 2012-10-11T10:08:04.357 回答
50

请改用监控工具 ( android-sdk/tools/monitor)。

连接到您的设备。如果无法连接,请先关闭 Eclipse。

按设备选项卡中的“UI automator 的转储视图层次结构”按钮。它位于屏幕捕获按钮旁边。

从 API 级别 16 (Android 4.1) 开始工作。

于 2013-05-07T15:39:14.150 回答
35

您只能在模拟器和从谷歌购买的特殊开发者手机上使用 HierarachyViewer。

http://groups.google.com/group/android-developers/browse_thread/thread/b0b0af7a316ca768

从上面的链接引用

HierarchyViewer 不适用于用户构建(即商店中可用的设备)。这是出于安全原因。如果 HiearchyViewer 能够处理用户构建,那么您桌面上的任何应用程序(在某些情况下甚至在手机上)都可能获得对私人信息(如登录名和密码)的访问权限。

于 2012-05-18T05:52:52.973 回答
21

我在 max os 中解决了问题

这个 ANDROID_HVPROTO 解决方案记录在这里:

http://developer.android.com/tools/performance/hierarchy-viewer/setup.html

然后尝试关闭 Android Studio

运行 adb kill-server, adb start-server

并向我发起监控工作!

答案是 :

https://github.com/romainguy/ViewServer/issues/14#issuecomment-75354479

@ozodrukh 的回答很有用。

于 2015-12-23T11:44:27.097 回答
6

几乎没有通用生产手机允许 HierarchyViewer 访问它们。通常开发者手机和模拟器是唯一具有这些功能的。

于 2012-05-18T05:54:40.820 回答
4

我在 4.1 Android 手机上遇到的类似问题。在您的代码中使用ViewServer 。

在检查层次结构查看器之前,只需重新启动一次 adb 服务器。

于 2015-08-04T05:44:44.693 回答
1

官方文档:Optimizing Your UI是这么说的:

为了保护安全,Hierarchy Viewer 只能连接到运行 Android 系统开发者版本的设备。

于 2016-10-30T08:51:32.213 回答
1

使用 Hierarchy Viewer 分析您的布局

设置环境变量

ANDROID_HVPROTO=ddm

所以从[andrid-sdk]/tools文件夹在命令行中运行它:

set ANDROID_HVPROTO=ddm
hierarchyviewer

set ANDROID_HVPROTO=ddm放入hierarchyviewer.bat.

于 2018-10-13T09:56:15.517 回答