我之前使用过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,只是运行应用程序。 感谢。
答案 0 :(得分:62)
我找到了解决方法:https://github.com/romainguy/ViewServer
ViewServer是一个简单的类,您可以在Android应用程序中使用HierarchyViewer检查工具...
- 确认您需要此库(newer versions of Android don't)
如果您确实需要此库,请按照以下说明操作:
- 包含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
中。