Android 设备未显示为 Unity3d 调试的目标

标签 android visual-studio unity3d monodevelop

首先,我确定我已按照 Attaching MonoDevelop Debugger To An Android Device 中的所有步骤进行操作正确引导(最重要的是:在build设置中启用“开发构建”和“脚本调试”)。

但是,在构建和运行 Unity Android 应用程序时,我的设备(Samsung Galaxy S5、Android 6.0.1)在 MonoDevelop 和 Visual Studio 中都没有显示为可能的调试目标。例如在 Visual Studio 中,单击“调试”->“附加 Unity 调试器”后,在打开的“选择 Unity 实例”窗口中我只看到 Unity3d 编辑器(机器:本地机器,类型:编辑器)。调试在 Unity 编辑器中运行的 Unity 项目工作正常,仅调试在物理 android 设备上运行的项目不起作用。 MonoDevelop 也是如此。

我看到设备已连接并在线

adb devices

我还可以通过命令行在该设备上调用 adb shell 命令(例如 ls)。当我打开 Android Studio 时,我还会将设备视为 Logcat 的目标,甚至将刚才提到的 Unity Android 应用程序视为可调试进程(选择它时,会看到正在运行的应用程序所期望的所有正确日志)。

我认为排除调试器方面的故障是安全的,因为我试过了

  • 两台不同的开发人员机器(均装有 Windows 10 且没有防火墙),
  • 两个不同的网络(家庭和大学)
  • MonoDevelop、Visual Studio Community 2015、Visual Studio Professional 2017 RC(以及相应的 Unity 工具),
  • 重新安装 Unity3d,
  • 不同的 Unity3d 项目(标准示例项目以及自己的最小示例,仅包含一个文本和一个按钮),
  • 手动添加 android:debuggable="true" 到项目的 AndroidManifest 和
  • 在 Visual Studio 中通过 deviceip:5555 手动将调试器连接到设备(在“选择 Unity 实例”窗口 -> 输入 IP 中)。

在设备上,我尝试了

  • 将手机关机再开机,
  • 关闭和打开 USB 调试,
  • 选择 Unity 应用作为“调试应用”(在开发者选项中)并启用/禁用“等待调试器”(也在开发者选项中),
  • 通过 USB 数据线或通过 adb connect deviceip:5555 连接设备
  • root 手机。

我不知道还能尝试什么。我很确定这是设备上的东西。它曾经曾经工作过,但是我不知道从那以后发生了什么变化。任何提示表示赞赏。

编辑

好的,所以我取得了一些进展。当我检查应用程序的 logcat 输出时,我发现了诸如

Waiting for connection from host on [192.168.2.110:55416]...

(.2.110 是设备的 IP) 因此,我在 Visual Studio 的 “选择 Unity 实例”窗口 -> 输入 IP 中手动输入了该 IP 和端口,之后,logcat 读取

PlayerConnection accepted from [192.168.2.115] handle:0x1c

(.2.115 是我的开发机器) 所以连接。 Visual Studio 只是不“识别”(?)它并且不切换到 Debug模式,因此它可以在断点处停止。有谁知道我如何强制它这样做?

最佳答案

好吧,这不是真正的答案,但我毕竟找到了调试它的方法。在所有 logcat 输出中,我还发现了这一行:

Using monoOptions --debugger-agent=transport=dt_socket,embedding=1,defer=y,address=0.0.0.0:56785

获取该端口(和实际设备 IP)并在“选择 Unity 实例”窗口的 Visual Studio 中输入它 -> 输入 IP,调试器最终连接。

问题是,每次运行应用程序时该端口都会更改,因此为了调试它,我将始终需要查找它。此外(这可能完全是一个不同的问题),Debug.Log 或 Console.WriteLine 的输出未被调试器捕获。目前读取日志的唯一方法是在 AndroidStudio 中。

是的,问题仍然存在,为什么设备没有在 Visual Studio 的 Select Unity Instance 窗口中显示为 AndroidPlayer(或根据位置MonoDevelop)?

关于Android 设备未显示为 Unity3d 调试的目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42392522/

相关文章:

c++ - CBitmap::LoadBitmap() 拒绝加载资源

visual-studio - 与 Visual Studio 一起使用 Meld

c# - 将视频从 pi 相机流式传输到 unity 项目

c# - parse() 处的 JsonReaderException - HololensDeploy

c# - Unity3D:相对于 child 移动父游戏对象

android - 循环遍历 ArrayList 时在后台添加标记

android - 如何将 testCompile 依赖项添加到 IDE 类路径

java - 安卓 : Searching youtube video from my app

android - 在android中定期将当前位置发送到服务器

C++ 就地析构函数编译警告