前言
使用.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
您应该看到这样的东西:
现在启动您所需的仿真器:
./emulator -avd pixel_5_-_api_33
现在应在终端出现一些信息和警告消息后开始模拟器:
最后但并非最不重要的一点是,我们需要在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上的调试。您应该看到与此类似的东西:
仅在模拟器的不平坦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
您现在应该从上方看到映射端口的设备:
如果您已经没有,现在是在VM中打开Visual Studio的好时机,并验证您还可以在此处看到该设备:
当然,您想点击该调试按钮。如果一切顺利,您应该看到模拟器中运行的应用程序,就像本文的标题图像一样。
关闭
一旦完成(也许要切换到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
Abiaoqian tost How to use the Android emulator on a macOS host for debugging in a virtual machine with Windows首先出现在MSicc's Blog。