use*_*631 5 windows android virtual-machine xamarin usb-debugging
我在Hyper-V虚拟机 (Windows 10) 中设置了一个开发环境。使用 Visual Studio 2019 作为我的 IDE 和 Xamarin(一个monodroid项目)。由于 Hyper-V 设计师做出的决定,我的物理设备无法“直通”。我也尝试使用变通方法,不幸的是,该设备没有显示(甚至在Device Manager)来宾计算机中。
最初我无法看到设备(在 IDE 中),但是,经过一些研究和工作,我设法让设备显示出来。我用它来“欺骗”adb在来宾上运行以查看设备(连接到我的物理机)。主机192.168.1.13在端口上运行带有 IP 的脚本6037(adb daemon运行于5037,这是默认值)。来宾机器运行脚本,remotehost设置为主机 IP,具有相同的端口。根据文档,我相信这种配置很好。
不幸的是,即使我能够部署到我的设备,调试器也无法连接,我收到 Cannot start debugging: Cannot connect to 127.0.0.1:29300: No connection could be made because the target machine actively refused it 127.0.0.1:29301
Couldn't connect debugger. You can see more details in Xamarin Diagnostic output and the full exception on logs.
从我收集到的信息来看,调试器正在尝试连接到localhost,并且由于 IDE 在来宾中运行,因此物理设备不会在localhost:29301. 我假设如果我可以让 IDE 连接到192.168.0.13:29301(主机 IP),它会找到设备,因为它是连接的地方。
当我运行时adb devices,主机和来宾都显示物理设备,在尝试运行调试器后,运行adb forward --list,转发规则如下:
V4QBB18807150883 tcp:29300 tcp:29300
V4QBB18807150883 tcp:29301 tcp:29301
我还可以看到在Xamarin Diagnostics该setprop "debug.mono.extra" "debug=127.0.0.1:29302:29303,timeout=1585047190,loglevel=0,server=y"被执行。我认为操纵这会给我一些快乐,但是,我不知道如何。
我不太熟悉adb和网络,所以任何在这方面有更多经验的人都可以对我的情况有所了解。
如何让调试器(在来宾中)连接到我的物理设备?
PS:在问这里之前我已经搜索了很多。我知道这存在:How can I connect to Android with ADB over TCP?即使在该页面上尝试了多个答案后,我也无法解决我的问题。
use*_*631 15
经过大量的研究,我遇到了这个。我没有寻找设置adb端口转发的方法,而是尝试查看是否有一种方法可以通过 Hyper-V 设置 USB 直通。
如果使用 RDP 是一个选项(通过“Hyper-V 管理器”直接连接也可以):
在主机上
按 Win+R 输入 gpedit.msc 并回车
转到计算机配置 > 管理模板 > Windows 组件 > 远程桌面服务 > 远程桌面连接客户端 > RemoteFX USB 设备重定向
选择那里唯一的 GPO 并启用它并将访问权限更改为“管理员和用户”
在虚拟机上:
按 Win+R 输入 gpedit.msc 并回车
转到计算机配置 > 管理模板 > Windows 组件 > 远程桌面服务 > 远程桌面会话主机 > 设备和资源重定向
选择 GPO“不允许支持的即插即用设备重定向”并禁用它
重启两台机器...
根据此评论,您可能需要强制更新组策略:
我必须强制更新组策略 (gpupdate) 才能生效。仅仅关闭并重新启动主机和虚拟机是不够的。谢谢
最终,在执行这些步骤后(我运行gpupdate并重新启动了两台机器),我有一个额外的列出设备选项,“其他支持的 RemoteFX USB 设备”,这是我的物理设备。选中复选框后,VM 检测到设备,无需端口转发。
这可能会导致允许像这样直通的安全风险,但是,我的 VM 不是公开的。只能通过我的主机访问。如果安全人员可以评论可能的安全风险只是为了通知我自己和遇到这篇文章的潜在其他人,我将不胜感激。
| 归档时间: |
|
| 查看次数: |
1878 次 |
| 最近记录: |