探索iPad的Android开发

2021-06-08 07:39:31

Apple宣布M1对于iPads,人们开始推测,我们将在即将到来的WWDC期间看到Xcode等Xcode等“Pro”应用程序。它让我思考在平板电脑上建立移动应用程序的经验,尤其是使用仿真器/模拟器的工作流程。

几个月前,我遇到了Joaquim Vergers的博客文章,显示了投影仪如何用于启用远程IDE体验。基本上,投影仪允许在具有很多计算功率的远程计算机上运行基于Intricij的IDE,例如Android Studio。由于投影仪在浏览器中绘制UI,因此您最喜欢的IDE可用,包括iPad。

但是,在仿真器或物理设备中,移动驱动循环不完整。据我所知,无法在iOS上运行adb服务器,杀死将Android手机直接连接到iPad的机会。在没有越狱设备或SIDELOADING应用程序的情况下,也无法在iOS上托管模拟器。我们可以在VM上与Android Studio旁边运行它,而不是托管它,并使用VNC客户端连接到它。

本博客文章的第一部分展示了结果,而第二个潜入技术细节则更深。

该演示中使用的设置包括与魔术键盘和触控板配对的iPad Air(2020)(参见上图)。这种组合效果很好,特别是在iPados中的光标支持。

下面可以查看Safari呈现的Android Studio(AS),以及通过VNC连接的Android仿真器。由于Android Studio和模拟器​​都在单个VM上运行,因此自动将仿真器作为目标设备。

投影机的性能令人惊讶的是。尽管延迟明显,但它不足以变得令人不安。光标支持非常方便,特别是对于IDE的小UI元素。由于在Linux上运行时,可以访问shell和git,这是一种大量优势。

键盘快捷方式不起作用或与浏览器中的功能(可以在iPados上特定于Safari)。

TrackPad手势(例如双指滚动)不会正确地翻译成IDE中的滚动事件。

最后的CON是,剩下的空间没有太多的空间,因为用仿真器并排运行。如果您正在运行13个“ipad pro,则会为您提供较少的问题。或者,您可以在幻灯片窗口中运行仿真器:

我的一个亮点是VNC客户端将触摸和滚动事件直接发送给仿真器。使用触摸屏来控制仿真器与单击和拖动鼠标相比,感觉更自然。一般来说,性能是可以接受的,但潜伏期和竞争率有很多可改善空间。我尝试过专用的GPU和WebRTC而不是VNC的VM,但没有得到更好的结果。可能的是,硬件加速度不适用于CPU和GPU的嵌套虚拟化,因此租用裸机机器可以提供帮助,但我还没有尝试过。

博客文章的第二部分描述了配置投影机服务器和仿真器所需的步骤。

您将需要一个VM,支持嵌套虚拟化或KVM。否则,Android仿真器将无法使用。我已经选择了Ubuntu Server 18.04 LTS作为操作系统,因为我最熟悉它,因此一些步骤必须适应您选择的发行版。选择一个在地理上最接近您的VM,因为它可能会有更低的延迟。我的配置有四个虚拟核心和16个GB的RAM。

一旦VM启动并运行,您需要设置私有/公共SSH键。大多数云提供商喜欢AWS,Azure和Google Cloud都有关于如何实现这一目标的教程。

大多数云提供商默认情况下关闭所有端口作为安全措施,但我们需要至少打开其中的三个:22用于SSH,7070为投影仪,5050 for VNC。与SSH身份验证一样,请参阅有关如何配置防火墙的云供应商的指南。

投影仪设置步骤基于Joaquim的指南,其中对投影机的最新变化进行了次要调整。

#更新本地存储库sudo apt-get update#所需的如果我们想要运行sdk和avd managers sudo apt-get安装OpenJDK-8-JDK#Python 3是投影机安装程序sudo apt-get安装python3 python3-pip#我们需要升级PIP,否则安装程序FailSpython3-MPIP INSTALL -U PIP#安装ProjectORPIP3安装投影机安装程序

现在通过退出和SSH-IN进入机器来重新启动shell会话。通过运行HELP命令检查投影仪是否正确安装。

#创建一个新目录mkdir androidstudio&& CD androidstudio#您可以在此处找到一个链接,如这里构建:https://developer.android.com/studio/Archive#投影仪仅支持版本4.2和Abovecurl -l --output android-studio.tar.gz< direct_download_link_to_as> #解压缩归档tar -xvf android-studio.tar.gz

#当#for firstProjector Config添加时,系统将提示您接受许可证--Expert没有安装的投影仪IDE。您想手动指定IDE的路径吗? [y / n] y输入IDE的路径(< tab> for complete):< path_to_android_studio>输入新配置名称或按Enter exper for Default [Android_Studio]:您想指定投影机的收听地址(或主机)吗? [y / n] y输入投影仪侦听地址(按Enter默认按Enter键)[*]:7070您要指定投影仪访问的主机名吗?您想要设置连接密码吗? [y / n] y请指定RW密码:重复密码:您想要设置单独的只读密码吗? [y / n] n添加名称的新配置

如果要启用加密,则需要通过运行投影仪编辑< config_name&gt来编辑配置。由于某种原因,投影机不会提示我们在第一步中使用安全连接。

投影仪作为配置名称运行:至于访问IDE,在浏览器中打开https:// localhost:7070 /?token = your_password_here https://127.0.0.1://127.0.0.1://127.0.0.1://127.0.0.1://127.0.0.1://127.0.0.1://127.0.0.1://127.0.0.1://127.0.0.0.0:7070/10.0.0.0.6:7070/10.0.0.6:7070/10.0.0.0.0:7070/10.0.0.0.0:7070/ ?令牌= your_password_here

如果将浏览器指向http:// your_server_ip_addres:7070?令牌= your_password_hee,您将看到Android Studio。现在,您可以继续克隆一个项目到远程机器并开始工作。

nano〜/ .bashrc#附加到.bashrc导出android_sdk = $ home / android / sdk export path = $ android_sdk / memulator:$ android_sdk / tools:$ android_sdk / tools / bin:$ android_sdk / platform-tools:$路径#源.bashrc文件加载新变量源〜/ .bashrc

一旦SDK工具位于路径上,运行AVDManager列表AVD以打印可用仿真器的列表。在撰写本文时,我有一个设备在框中提供:Pixel_3a_api_30_x86。拍摄仿真器名称,我们稍后需要它。

4:服务器不会使用GUI运行桌面环境以节省资源。但是,我们希望使用UI可访问的仿真器,因此我们需要配置内存中显示服务器 - XVFB(X虚拟帧缓冲器)。要将X显示为VNC服务器,我们将使用X11VNC。

为确保图形管道和VNC服务器正确设置,我们将使用GLXGEARS演示应用程序。

要将所有内容一起测试,我们需要创建X显示,启动VNC服务器,并运行附加到X显示器的Glxgears演示:

#创建displayxvfb:1 -screen 0 1080x2220x24> / dev / null 2>& 1& #运行5050x11vnc -display:1 -quiet -nopw -rfbport 5050#运行​​glxgears演示显示=:1 glxgears

5:打开您选择的VNC客户端,将其指向your_server_ip_addres:5050。我为iPad使用了VNC查看器。如果一切正常工作,您将看到齿轮动画。

6:一旦我们确认虚拟显示和VNC服务器正常工作,剩下的唯一步骤是运行模拟器而不是演示。停止Glxgears并开始仿真器:

display =:1仿真器-avd pixel_3a_api_30_x86 \ -no-boot-anim -nojni -netfast \#由于没有可用的gpu,我们必须使用软件加速-gpu swiftshader_indirect \#启用kvm对性能至关重要 - kemu-enable- kvm.

如果遇到错误,请说当前用户无权使用kvm,请运行以下命令:sudo gpasswd -a $用户kvm。您需要重新启动SSH会话以使更改变为活动状态。重新运行上面的仿真器命令,现在您应该看到模拟器日志:

如果尝试重新连接VNC客户端,则应能够看到仿真器运行:

我建议在AVD管理器设置中禁用设备框以节省宝贵的空间。您还可以使用VNC客户端设置进行播放以调整图像质量,并选择交互方法(仅限鼠标,触摸面板或视图)。

这个实验允许我味道在未来的移动发展可能看起来像什么。 不同的输入方法,如IDE导航的光标和键盘,以及仿真器的触摸控制感到惊人的自然。 我很高兴看到对iPados上的开发人员工具的本机支持。 让我们希望苹果最终会迈出这一跳跃。