【问题标题】:hierarchy is not working for my device层次结构不适用于我的设备
【发布时间】:2011-10-18 01:17:21
【问题描述】:

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

  1. Adb 拒绝设备 172.18 的转发命令......未知主机服务
  2. 缺少 172.18 的转发端口.....
  3. 无法从设备 172.18 获取查看服务器协议版本......

它如何在层次结构查看器中显示我的设备的视图结构。任何人都可以帮助我吗?或 任何知道在哪里可以找到层次结构知识的人。提前致谢。

【问题讨论】:

    标签: android


    【解决方案1】:

    出于安全原因,HierarchyViewer 不适用于生产版本。我编写了一个 API,可让您在任何设备上通过您的应用使用 HierarchyViewer:https://github.com/romainguy/ViewServer

    【讨论】:

    • 谢谢你,我试过你的方法。因为我是一个新的安卓工程师。这对我来说似乎太复杂了。不过还是谢谢你。
    • 这是同一个问题吗? 00:47:21-hierarchyviewer]缺少 015d 的转发端口 .... [2013-06-13 00:47:21-hierarchyviewer]无法从设备 015d 获取查看服务器协议版本...... [2013- 06-13 00:47:21 - ViewServerDevice]无法调试设备:asus-nexus_7-015d.....
    • @Romain Guy 你能解释一下生产版本是什么吗?谢谢!
    • @Nativ 他说的是Android系统的生产版本,我想。
    • 嗯。 Genymotion 与 hierarchyViewer 一起工作,无需对源代码进行任何修改。我想知道自 2011 年这篇文章以来出现的调试版本是否有更简单的方法来实现这一点?
    【解决方案2】:

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

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

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

    【讨论】:

    • 启动 Android 设备监视器的命令:tools/monitor(层次结构查看器是 ADM 的一部分)
    【解决方案3】:

    Romain 的 ViewServer 项目(请参阅答案 #1)非常适用于此。我下载了代码,把项目变成了一个库项目,在我的应用程序中添加了一个依赖到新的库项目,并将我的应用程序的基 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 连接并调试我的布局。

    【讨论】:

    • 尝试下载并打开项目,说:项目使用不支持的grandle版本。我有最新版本的 Android Studio 和 Grandle。有什么办法可以解决这个问题,或者链接现在可以考虑死了吗? (因为它不起作用并且层次结构查看器也死了)
    • @h3d0 只需将 gradle wrapper 替换为更新的版本,或者将 AS 配置为使用自定义 gradle 分发并忽略 gradle wrapper
    【解决方案4】:

    一旦我选择了层次结构查看器就可以为我工作 工具-->Android-->在 Android Studio 中启用 ADB 集成。

    【讨论】:

      【解决方案5】:

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

      【讨论】:

        【解决方案6】:

        我使用的是 Android Studio 2.3.3。 结论在文末。

        符号: 监视器 = Android 设备监视器 工作室 = 安卓工作室

        在 Android Studio 的首选项 -> (Build, Execution, Deployment) -> Instant Run -> 取消选中 Instant Run。否则会提示“应用程序安装失败”的错误信息,我尝试了几种方法,没有取消选中Instant Run,但都不起作用。所以现在只需取消选中 Instant Run。

        (i) 如果是生产版本(运行‘app’):

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

        (a) 直接从 Studio 中打开 Monitor 可以工作,并且 View Hierarchy 将显示在 Monitor 中,但它会提示一条消息“禁用 ADB 集成以下调试会话将被关闭:app”(它显示“调试会话”,虽然我正在使用生产版本)。注意 在我关闭 Monitor 后,Studio 将再次自动选中“Enable ADB Integration”选项。

        (b) 从 Bash 打开监视器会提示错误消息“ddms, could not open selected VM debug port(870)”,但只需手动取消选中“Enable ADB Integration”选项即可解决问题,View Hierarchy 将显示。

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

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

        结论:要安装应用程序,需要取消选中“Instant Run”(请参阅​​报告顶部的说明)。要在 Monitor 中显示 View Hierarchy,需要取消选中“Enable ADB Integration”。从 bash 和 Studio 打开 Monitor 都可以。调试构建和生产构建都可以工作。

        【讨论】:

          猜你喜欢
          • 2019-04-24
          • 2013-10-31
          • 2011-11-11
          • 1970-01-01
          • 2014-11-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多