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

Posted

技术标签:

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

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

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

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

【问题讨论】:

【参考方案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 都可以。调试构建和生产构建都可以工作。

【讨论】:

以上是关于层次结构不适用于我的设备的主要内容,如果未能解决你的问题,请参考以下文章

Spring security @secure 不适用于角色层次结构

firebase 社交登录不适用于我的 android 设备,仅适用于网络

解析 Facebook 登录不适用于所有设备

正在尝试在 Android 设备上检索位置...适用于模拟器,但不适用于真实设备

GCM 不适用于 Android 4.1 设备

我的应用不适用于 Google Play 上的平板设备