如何在MacOS主机上使用Android模拟器在带有Windows的虚拟机中调试
#macos #android #ios #devstories

前言

使用.NET MAUI现已可用,我开始将Xamarin.Forms应用程序移植到新的酷列​​。我的钓鱼结应用程序的iOS版本非常顺利,但是我在Android版本上确实遇到了很多麻烦。

首先,我什至没有汇编。熨除了所有问题所指出的所有问题之后,我终于将其编译成并能够将其部署到Mac上的Android模拟器上,但不能将其部署到我的物理测试设备上(诺基亚5.3)。无论是将Visual Studio用于Mac还是Rider,这都不重要,结果总是相同的。此外,一个普通的新毛伊应用程序无法部署。

由于我一直喜欢Windows Visual Studio上的用户体验,因此我决定在计算机上再尝试一下。我将Windows和Visual Studio安装在虚拟机中,并开始测试。你猜怎么了?我能够部署到Android仿真器和测试设备。另外,使用iOS模拟器(和物理设备)进行调试,就像符合此星座一样的魅力。

但是,嵌套虚拟化环境中的性能实际上是不存在的,因此我需要一个更好的解决方案 - 唯一合乎逻辑的事情是遵循iOS,我们基本上已经在Mac主机上进行了调试。这篇文章向您展示了如何做。

在这里要注意的一件重要的事情:您需要相似之处的专业许可才能使这些东西运行。您也许可以跟随其他虚拟化提供商,但是对我来说,相似之处是Mac上的第一地址。还请注意,此解决方案将Visual Studio用于MAC安装路径。此外,我假设您在Windows VM上安装了SSH(例如,GitHub桌面执行此操作)。

在没有视觉工作室或骑手的情况下启动模拟器

一如既往,我们将在该解决方案中运行许多命令。因此,让我们打开一个新的终端并首先打开模拟器文件夹:

cd /Users/YOURUSERNAME/Library/Developer/Xamarin/android-sdk-macosx/emulator

现在我们在那里,让我们看看我们已经配置了哪些模拟器:

./emulator -list-avds

您应该看到这样的东西:

terminal-showing-avd-devices

现在启动您所需的仿真器:

./emulator -avd pixel_5_-_api_33

现在应在终端出现一些信息和警告消息后开始模拟器:

emulator-running-alongside-terminal

最后但并非最不重要的一点是,我们需要在Mac上杀死Android调试桥(ADB)服务器,因为我们希望Windows控制模拟器。打开一个新的终端(根据您喜欢的窗口/选项卡)并打开平台-Tools目录:

cd /Users/YOURUSERNAME/Library/Developer/Xamarin/android-sdk-macosx/platform-tools

然后,使用此命令停止Android调试桥服务器:

./adb kill-server

如果没有运行服务器,您将在终端中收到连接拒绝的错误消息。否则,什么都不会发生。

激活远程登录

如果您已经这样做了,请激活Mac上的远程登录。开放设置,一般,共享。在此菜单中,选择“ 远程登录” - 然后打开开关。之后,单击 i - 并验证您的用户是否在允许的用户列表中。如果不是,请从+菜单中添加您的用户:

如果需要,您已经可以从对话框的顶部复制并保存SSH-url,因为我们需要下一步。

验证端口

adb documentation所述,每个模拟器都有自己的一对端口。要查找这些端口,请在终端中运行以下命令:

lsof -iTCP -sTCP:LISTEN -P | grep 'emulator\|qemu'

如果您只有一个模拟器,则应在列表中有端口对5554和5555。如果您配置了更多的模拟器,则这些端口为每个其他仿真器移动。

使用SSH从Windows登录Mac

在Windows VM中打开AM新命令行窗口。然后键入以下命令并点击输入:

ssh -L localhost:15555:127.0.0.1:5555 mac-username@ip-address-of-the-mac

如果一切顺利,则应要求您提供MacOS密码。输入密码以启动与Mac的连接。保持打开状态,直到完成Android上的调试。您应该看到与此类似的东西:

win-cli-logged-in-via-ssh

仅在模拟器的不平坦MAC端口的前方添加 1 ,您就可以在Windows中很容易地重新布线,并为所有仿真器提供一个共同的方案。如果需要/想要,请随时适应其他方案。

最后,将ADB连接到Mac上的模拟器上,最后将ADB连接到模拟器上!

在Windows终端中打开一个新的命令提示符选项卡,然后转到平台-Tools文件夹:

cd C:\Program Files (x86)\Android\android-sdk\platform-tools

喜欢之前在Mac上,我们还需要在Windows上停止ADB服务器:

adb kill-server

现在我们最终连接到映射的端口:

adb connect localhost:15555

这也应重新启动ADB服务器。如果不是,则可以使用此命令手动重新启动服务器:

adb start-server

现在,让我们检查是否已经映射了任何设备:

adb devices

您现在应该从上方看到映射端口的设备:

win-cli-adb-mapped

如果您已经没有,现在是在VM中打开Visual Studio的好时机,并验证您还可以在此处看到该设备:

win-vs2022-android-emu

当然,您想点击该调试按钮。如果一切顺利,您应该看到模拟器中运行的应用程序,就像本文的标题图像一样。

关闭

一旦完成(也许要切换到iOS),我们需要关闭SSH连接和Android Emulator。

首先,通过键入exit并在键盘上键入 Enter Enter Enter 来断开MAC的连接。这将关闭与Mac的连接。您现在可以关闭终端。

接下来,前往您的Mac,找到启动仿真器的终端。在键盘上点击控制+C ,以关闭Android模拟器。您现在也可以关闭此终端。

如果您需要为iOS模拟器进行编译,则现在应该能够像往常一样在Visual Studio对话框中配对Mac:

结论

由于我对VS4MAC/RIDER的性能和问题感到非常满意,因此我决定在我的私人开发机器上再次尝试与Windows的相似之处构造。事实证明,这是一个很好的决定,除了Android模拟器部分。但是,使用上面的解决方案,现在也解决了问题。

一如既往,我希望这篇文章对你们中的某些人有帮助。

直到下一篇文章,每个人都开心编码!


有用的链接:

https://developer.android.com/tools/adb

https://developer.android.com/studio/run/emulator-commandline

https://learn.microsoft.com/en-us/xamarin/android/troubleshooting/questions/connect-android-emulator-mac-windows

Abiaoqian tost How to use the Android emulator on a macOS host for debugging in a virtual machine with Windows首先出现在MSicc's Blog