层次结构不适用于我的设备

时间:2011-10-18 01:17:22

标签: android

当我在终端中运行层次结构时。它可以显示它的界面,但无法连接到我的设备。它可以连接到虚拟仿真器。它在终端中提醒我,

  1. Adb拒绝了设备172.18的前向命令......未知主机服务
  2. 缺少172.18的正向端口.....
  3. 无法从设备172.18 ....获取视图服务器协议版本。
  4. 如何在层次结构查看器中显示我的设备的视图结构。任何人都可以帮助我吗?或者 谁知道在哪里可以找到层次结构的知识。提前谢谢。

6 个答案:

答案 0 :(得分:86)

出于安全原因,HierarchyViewer无法在生产版本上运行。我编写了一个API,允许您在任何设备上使用HierarchyViewer:https://github.com/romainguy/ViewServer

答案 1 :(得分:23)

对于使用Android 4.1或更高版本的任何人:您可以通过将环境变量ANDROID_HVPROTO设置为ddm来使层次结构查看器正常工作。

Mac OSX / Android Studio用户,请记住从命令行启动层次结构查看器,以便它将获取环境变量。如果您使用Android Studio安装它,则可以在/Users/<user>/Library/Android/sdk/tools

中找到它

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

答案 2 :(得分:19)

Romain的ViewServer项目(参见答案#1)非常适用于此。我下载了代码,将项目转换为库项目,在我的应用程序中添加了一个依赖项到新的库项目,并将我的app的基本Activity类从这个简单的类改为子类:

public class SimpleViewServerActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        ViewServer.get(this).addWindow(this);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        ViewServer.get(this).removeWindow(this);
    }

    @Override
    protected void onResume() {
        super.onResume();
        ViewServer.get(this).setFocusedWindow(this);
    }
}

现在我可以从Android Debug Monitor的Hierarchy View连接并调试我的布局。

答案 3 :(得分:3)

我选择后,层次结构查看器为我工作 工具 - &gt; Android - &gt;在Android Studio中启用ADB集成。

答案 4 :(得分:0)

我遇到了同样的问题,最后在http://developer.android.com/tools/performance/hierarchy-viewer/setup.html找到答案。在ViewServer连接之前,需要在开发环境中设置环境变量。

答案 5 :(得分:0)

我使用的是Android Studio 2.3.3。 结论是在这篇文章的最后。

记号:     Monitor = Android设备监视器     Studio = Android Studio

在Android Studio的首选项中 - &gt; (构建,执行,部署) - &gt;即时运行 - &gt;取消选中即时运行。否则,它将提示错误消息“应用程序安装失败”,我尝试了几种方法而不取消选中即时运行,但它们都不起作用。所以现在就取消选中Instant Run。

(i)如果是生产版(运行'app'):

(1)如果我在“工具”的下拉菜单中选中“启用ADB集成”选项:

(a)直接从Studio打开监视器将起作用,视图Hierarchy将显示在监视器中,但它将提示消息“禁用ADB集成以下调试会话将关闭:app”(它表示“调试会话”,虽然我正在使用生产构建)。注意关闭监视器后,Studio将再次自动检查“启用ADB集成”选项。

(b)从Bash打开监视器将提示错误消息“ddms,无法打开所选的VM调试端口(870)”,但只需手动取消选中“启用ADB集成”选项即可解决问题并且视图层次结构将节目。

(2)如果我没有勾选“启用ADB集成”选项:     直接从Studio和Bash打开Monitor都可以正常工作,无需额外的操作。

(ii)如果是调试版本:     我必须启用ADB集成才能启动调试,因此将检查“启用ADB集成”选项。     Studio在我的手机中安装了应用程序后:     然后在(i) - (1)部分中的行为完全相同。换句话说,对于View Hierarchy目的,启动调试版本与启动生产版本并选中“启用ADB集成”选项相同。

总之:要安装应用程序,需要取消选中“即时运行”(请参阅​​报告顶部的说明)。要在监视器中显示“查看层次结构”,需要取消选中“启用ADB集成”。从bash和Studio打开Monitor都可以正常工作。 Debug Build和production build都可以工作。