为什么层次结构查看器不适用于三星Galaxy TAB 7.0?

时间:2012-05-18 05:44:13

标签: android galaxy-tab

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

这是我得到的日志

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,只是运行应用程序。 感谢。

8 个答案:

答案 0 :(得分:62)

我找到了解决方法: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中的文档以获取更多信息......

答案 1 :(得分:50)

改为使用监视工具(android-sdk/tools/monitor)。

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

在设备选项卡中按“UI自动机的转储视图层次结构”按钮。它是屏幕捕获按钮旁边的那个。

自API级别16(Android 4.1)起作用。

答案 2 :(得分:35)

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

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

从上面的链接引用

  

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

答案 3 :(得分:20)

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

答案 4 :(得分:6)

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

答案 5 :(得分:4)

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

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

答案 6 :(得分:1)

官方文件:Optimizing Your UI如此说:

  

为了保护安全性,层次结构查看器只能连接到运行Android系统开发人员版本的设备。

答案 7 :(得分:0)

Profile your layout with Hierarchy Viewer

设置环境变量

ANDROID_HVPROTO=ddm

因此,从[andrid-sdk]/tools文件夹在命令行中运行此命令:

set ANDROID_HVPROTO=ddm
hierarchyviewer

或将set ANDROID_HVPROTO=ddm放在hierarchyviewer.bat中。