为什么architectureviewer不适用于Samsung Galaxy TAB 7.0?


71

我之前使用过hierarachyviewer,但是在android模拟器上。当我在模拟器上使用它时,它绝对可以正常工作。但是,它不适用于带有Android 2.3.4的Samsung 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,而是在运行应用程序。谢谢。


似乎三星对Android内核的定制太多了!我在Galaxy Tab中也遇到了GSM功能的问题。
VSB

Answers:


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中的文档。


4
....如果您在不是开发人员电话的设备上进行开发(即...您是从商店或运营商网络购买的),这就是方法。太棒了
dell116

谢谢。您也只需要将ViewServer.java添加到项目源,并在代码中添加一些方法即可启用ViewServer。还将Internet许可添加到清单中。
VSB

如果所有活动都有基本活动类,则将很容易实现。
neworld 2013年

50

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

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

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

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


13
在Eclipse中,也可以从DDMS角度获得。
AndiDog

6
那根本不是同一个工具。
Teovald

哇,这个工具应该在所有适用于Android的入门文档中。

35

您只能在模拟器和从Google购买的特殊开发人员电话上使用HierarachyViewer。

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

从上面的链接引用

HierarchyViewer在用户版本上不起作用(即在商店中可用的设备上)。这是出于安全原因。如果HiearchyViewer能够处理用户版本,则您台式机(甚至在某些情况下甚至是电话)上的任何应用程序都有可能访问私有信息(例如登录名和密码)。


谢谢user1378730!也许我需要买一个。:)
Harshal Kshatriya'5

21

我在最大操作系统中解决了问题

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


1
嗨,小银子,如果您认为这是解决方案,请在引号中加上ozodurkh的答案。即使该网址有一天无效,那也将保持您的有效性
NSNoob 2015年

嘿,怎么做?“在开发计算机上设置环境变量ANDROID_HVPROTO = ddm。”
静音

6

几乎没有普通产品的电话允许HierarchyViewer对其进行访问。通常,只有开发人员的电话和仿真器才具有这些功能。


谢谢Srdjan!您的回答很有帮助。:)
Harshal Kshatriya'5


1

官方文档:优化UI如此表示:

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


1

使用Hierarchy Viewer剖析您的布局

设置环境变量

ANDROID_HVPROTO=ddm

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

set ANDROID_HVPROTO=ddm
hierarchyviewer

或放进set ANDROID_HVPROTO=ddmhierarchyviewer.bat

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.