【问题标题】:Why is hierarchyviewer not working for Samsung Galaxy TAB 7.0?为什么层次查看器不适用于三星 Galaxy TAB 7.0?
【发布时间】:2012-05-18 05:44:13
【问题描述】:

我之前使用过 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,只是运行应用程序。 谢谢。

【问题讨论】:

标签: android galaxy-tab


【解决方案1】:

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

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

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

  • 包括 ViewServer 库(找到简单的方向 here
  • 您的应用程序必须需要 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 中的文档...

【讨论】:

  • ....如果您在不是开发者手机的设备上进行开发(即...您从商店或运营商网络购买了它),这就是要走的路。太棒了。
  • 谢谢。您只需要将 ViewServer.java 也添加到您的项目源代码中,并在您的代码中添加一些方法来启用 ViewServer。还将 Internet 权限添加到您的清单中。
  • 如果你的所有活动都有 Base Activity 类,那么它会很容易实现。
【解决方案2】:

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

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

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

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

【讨论】:

  • 也可以从 Eclipse 中的 DDMS 角度获得。
  • 这根本不是同一个工具。
  • 哇,这个工具应该出现在所有 Android 入门文档中。
【解决方案3】:

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

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

以上链接引用

HierarchyViewer 不适用于用户构建(即使用设备 商店有售。)这是出于安全原因。如果 HiarchyViewer 能够处理用户构建,桌面上的任何应用程序(或 甚至在某些情况下通过电话)可能会访问 私人信息(如登录名和密码。)

【讨论】:

  • 感谢 user1378730!也许,我需要买一个。 :)
【解决方案4】:

我在 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 的回答很有用。

【讨论】:

  • 嗨小银,如果您认为这是解决方案,请在 ozodurkh 的回答中加上报价。即使该 URL 在某天变得无效,这也会使您保持有效
  • 嘿,怎么做? "在你的开发机器上设置环境变量 ANDROID_HVPROTO=ddm。"
【解决方案5】:

几乎没有通用型手机允许 HierarchyViewer 访问它们。通常只有开发者手机和模拟器具备这些功能。

【讨论】:

  • 感谢 Srdjan!你的回答很有帮助。 :)
【解决方案6】:

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

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

【讨论】:

    【解决方案7】:

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

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

    【讨论】:

      【解决方案8】:

      Profile your layout with Hierarchy Viewer:

      设置环境变量

      ANDROID_HVPROTO=ddm
      

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

      set ANDROID_HVPROTO=ddm
      hierarchyviewer
      

      或将set ANDROID_HVPROTO=ddm 放入hierarchyviewer.bat

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-01-03
        • 2013-01-27
        • 2011-06-02
        • 1970-01-01
        • 1970-01-01
        • 2011-04-14
        • 1970-01-01
        • 2012-12-22
        相关资源
        最近更新 更多