层次结构不适用于我的设备
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 设备,仅适用于网络