[Android翻译]如何在任何设备上使用JetBrains投影仪运行Android Studio。

643 阅读6分钟

原文地址:

原文作者:

发布时间:2020年11月11日-5分钟阅读

Android开发是很耗资源的。事实上,即使是一台顶级的MacBook Pro也只能勉强处理一个中大型项目。编译和运行应用程序需要高达10到15Gb的内存,而这还没有运行模拟器!不用说,如果你的笔记本电脑只有16Gb的内存,那么你在开发的时候就会很幸运。不用说,如果你的笔记本只有16Gb的内存,那就祝你在开发时做其他事情吧。

twitter.com/joenrv/stat…

我的个人笔记本,一台4年的老式Razer blade,16Gb内存,只要我打开Android Studio上的一个只有少量模块的个人项目,就开始飞速运转。风扇吹得比玩3D视频游戏时还响,这已经让我抓狂了。

于是我开始寻找替代品。如何才能在我的Android项目上工作,而不使我的笔记本电脑变成一个燃烧的火炉?答案当然是在云端运行昂贵的东西。

在尝试了Mirakle等不同的方法,取得了不错的成功之后,我的好朋友Ty Smith告诉我JetBrains的一个名为Projector的孵化器项目。本质上,它允许你通过浏览器访问任何JetBrains IDE,并采用了一个巧妙的技巧。我试了一下,被震撼到了。通过这种方法,你可以从任何能够运行浏览器的设备上无缝地进行编码。事实上,这是在我的手机上 "运行 "的Android Studio,因为为什么不呢?

从Pixel 4的浏览器访问远程Android Studio。

当然,你永远不会在手机上码字,但这证明设备硬件是无关紧要的。如果它有浏览器,你可以用它来编码。这就改变了一切! 没有了强大硬件的限制,我可以选择一款便携、轻巧、便宜得多的开发机器! 在我看来,一个不错的选择是一台像样的Chromebook、MacBook Air或Surface Go。我甚至考虑过用iPad作为替代,它可以用,但绝对没有真正的笔记本舒服。到目前为止,我个人最喜欢的是Pixelbook Go,很棒的键盘和超级轻巧,真的很喜欢用它来编码。

Android Studio到底在哪里运行?

你仍然需要一个强大的机器,无论是在云端还是在你的本地网络上,来完成运行IDE和Gradle构建的实际重任。幸运的是,云虚拟机现在已经成为一种商品,你可以通过亚马逊AWS、谷歌云或微软Azure等服务,在几分钟内获得一个运行。我选择了AWS,选择了一个EC2实例,有8个核心,32Gb的内存和100Gb的存储。运行这个实例的成本大约是0.40美元/小时,如果你24小时不间断地运行它,并不便宜,但由于我每周只在个人项目中使用几个小时,所以最终还是很实惠的。即使我每天使用它8小时,每周5天,它将花费我大约64美元/月。考虑到我不再需要昂贵的笔记本电脑,这已经不错了。

当我想在我的项目上工作时,我只需启动我的EC2实例,在上面运行Projector,然后打开一个Chrome标签,我就可以编写代码了。不再有疯狂的风扇,不再有过热的现象!

它是如何工作的?

Projector背后的想法很简单,但相当聪明。它用一个自定义的绘图引擎(AWT实现)拦截来自IDE(或任何Swing应用程序)的绘图命令,它不是在屏幕上渲染事物,而是记录每个命令,将它们序列化,并将它们发送到Web客户端。Web客户端解释这些绘图命令并在网页中渲染它们。Web客户端记录键盘和鼠标输入,并通过AWT将其发回IDE。

这种方法的好处是,即使在慢速连接的情况下,它也能渲染出清晰的、像素完美的字体和UI,因为它了解底层软件,所以它能渲染出矢量格式的字体。输入的反应也很灵敏,因为协议是专门的,所以进行了优化。这是比VNC等更通用的远程桌面解决方案的杀手锏优势,后者直接流式传输像素。远程桌面解决方案通常会呈现模糊的字体,并且在缓慢的连接中感觉反应迟钝。

这种方法唯一的缺点是,一些IDE键盘快捷键会与浏览器本身的快捷键发生冲突。例如,cmd+w关闭的是浏览器标签页,而不是IDE中的一个标签页。不过有一个办法可以解决这个问题,通过将页面添加为桌面快捷方式,在应用模式下打开任何网站。有了这个方法,一切对我来说都非常好用,包括我所有的快捷方式。当把Chrome放在全屏时,它的感觉就像真的一样。

Projector还处于非常早期的阶段,但我已经迫不及待地想看看它是如何发展的。

在iPad Pro上用Jetpack Compose玩耍

将应用部署到设备上并调试呢?

由于Android Studio是在远程服务器上运行的,所以我以为不能直接按Android Studio上的运行键,直接在手机上安装应用。我错了。

原来通过一个简单的ssh隧道(一个简单的命令行指令),你就可以把本地机器上的adb和远程服务器上的adb "链接 "起来,这样看起来你的设备就像直接连接到远程服务器上一样,像往常一样出现在远程的Android Studio中。

我走得更远,在手机和笔记本之间设置了WiFi调试,这意味着我不必处理任何USB电缆。

在浏览器中按下 "运行 "键,就会触发远程服务器上的构建,然后通过ssh将APK流传到我的笔记本电脑上,再通过WiFi传到我的设备上。真是生逢其时啊。

我如何尝试这个?

对自己设置这个感兴趣吗?我在Github上写了一个一步步的设置指南。

现在我们从这些硬件链中解放出来了,你会用什么设备来编码呢?请在Twitter上告诉我


通过www.DeepL.com/Translator (免费版)翻译