Hoe te coderen in Android Studio vanaf elk apparaat met JetBrains Projector

Wilt u op afstand coderen in Android Studio? Bekijk JetBrains Projector, de beste manier om JetBrains' IntelliJ IDE op elk apparaat uit te voeren.

JetBrains is het bedrijf achter enkele van de meest populaire IDE's, waaronder IntelliJ IDEA, PyCharm en PhpStorm. Zelfs Android Studio, Google's soort interne IDE voor Android-ontwikkeling, is gebaseerd op IntelliJ.

Hoewel de IDE's van IntelliJ om een ​​reden populair zijn (ze zijn Goed), ze kunnen soms een beetje zwaar zijn. IntelliJ en Android Studio kunnen veel bronnen in beslag nemen, alleen al door bijvoorbeeld open te zijn. En als je iets aan het compileren bent, gaan ze er nog meer van gebruiken. Je kunt JetBrains-dingen (nog) ook niet echt op mobiele apparaten uitvoeren, omdat JetBrains geen gemakkelijk toegankelijke ARM-builds heeft.

Dus wat gebeurt er als je geen krachtige computer hebt, of als je niet eens een computer hebt? Normaal gesproken zou je hier rondkijken naar andere IDE's die wel op ARM werken. Maar JetBrains heeft een soort oplossing, en deze heet JetBrains Projector.

Wat is een projector?

Je hebt waarschijnlijk al eerder gehoord van extern bureaublad of VNC. Hiermee kunt u grafisch communiceren met een computer via een lokaal netwerk of zelfs internet. JetBrains Projector werkt een beetje als een extern bureaublad, maar zonder enkele van de nadelen.

Om JetBrains Projector te gebruiken, heb je ergens op internet een computer nodig om deze te hosten. Dit kan een AWS-instantie of een thuisserver zijn. U kunt er vervolgens verbinding mee maken vanuit elke ondersteunde browser, inclusief mobiel Chrome en Firefox.

Maar in plaats van een volledig bureaublad weer te geven en daarvan een videofeed terug te sturen naar een verbonden client, JetBrains Projector verzendt de informatie die de klant nodig heeft om een ​​IDE weer te geven alsof deze wordt weergegeven lokaal. Dit betekent dat er geen sprake is van compressie of resolutieschaling, zodat de IDE er bijna native uitziet.

Bovendien is JetBrains Projector niet beperkt tot alleen de officiële JetBrains IDE's. Zolang je een IDE hebt die nauw gebaseerd is op die van JetBrains, kun je deze gebruiken met JetBrains Projector. Dat omvat Android Studio.

Waarom een ​​projector?

De grootste reden waarom je misschien op afstand wilt ontwikkelen, is wat ik in de inleiding heb besproken: wat als je geen krachtige x86-computer hebt? Je zou een semi-krachtig exemplaar kunnen kopen speciaal voor ontwikkelingswerk, of je zou een cloudserver kunnen opzetten en JetBrains Projector kunnen gebruiken.

Het kan ook handig zijn als u alleen de resourcevereisten wilt ontlasten. Ik heb bijvoorbeeld een behoorlijk krachtige gaming-laptop met een i7-9750H en 32 GB RAM. Dat is genoeg voor zelfs de grote projecten waar ik mee te maken heb. Maar als ik naast de ontwikkeling nog iets anders wil doen, kost dat ook veel middelen, bijvoorbeeld YouTube kijken, een spel spelen? Dan beginnen de dingen uit elkaar te vallen.

Maar ik heb een Ryzen 7 5800X-server met 32 ​​GB RAM erin. Dus heb ik JetBrains Projector daarop geïnstalleerd. Nu kan ik gewoon een nieuw Chrome-venster openen en er verbinding mee maken vanaf mijn laptop, zonder dat ik me zorgen hoef te maken over het jongleren met bronnen. De server bouwt ook veel sneller dan mijn laptop, dus het is een win-winsituatie.

Hoe gebruik je een projector?

JetBrains Projector is bedoeld om te worden gehost op een Linux-machine. Dat betekent niet dat je het niet op macOS of op Windows met WSL kunt draaien, maar je kunt daardoor wel een aantal rare problemen tegenkomen.

Om het in te stellen, hoeft u alleen maar naar de Projectorinstallatieprogramma GitHub-opslagplaats en volg daar de instructies. Zij begeleiden u bij het installeren van de afhankelijkheden en het instellen van een IDE. Er zijn zelfs enkele stappen voor het oplossen van WSL-problemen als u deze nodig heeft.

Vervolgens kunt u gewoon verbinding maken met uw serveradres met behulp van de juiste poort en token (als u er een instelt), en nu heeft u een IDE op uw apparaat draaien zonder enige overlast.

Android-ontwikkeling

Ik ben een Android-ontwikkelaar, dus hoewel ik IntelliJ IDEA voor ontwikkeling zou kunnen gebruiken, werkt Android Studio meestal beter. Hoewel JetBrains Projector IDE's van derden ondersteunt, is het nu net zo eenvoudig als het gebruik van de ingebouwde opdrachtregelinterface om ze te downloaden en te installeren. Het is echter nog steeds vrij eenvoudig.

Om Android Studio met JetBrains Projector te gebruiken, hoeft u alleen maar Android Studio op een verstandige plek te downloaden en uit te pakken. Vervolgens kunt u het via de opdrachtregel handmatig aan Projector toevoegen door het pad op te geven.

Er is ook nog een ander probleem met de ontwikkeling van Android en Projector: het uitvoeren van apps. Zonder iets extra's kunt u apps coderen en voorbeelden bekijken in Projector, maar u kunt geen emulator gebruiken of verbinding maken met een echt apparaat om apps daadwerkelijk uit te voeren en fouten op te sporen. Of kun je dat?

Het lijkt bijna alsof Google verwachtte dat dit soort scenario's zouden gebeuren, omdat ADB via internet verbinding kan maken met een externe server. Het enige dat nodig is, is een SSH-tunnel van de client naar de projectorserver. Ik heb Android Studio op de projector ingesteld om niet te proberen ADB te beheren en poort 5038 te gebruiken. Vervolgens gebruik ik gewoon een soort SSH-client (OpenSSH, plink, enz.) om een ​​tunnel te maken die de ADB-server die lokaal op poort 5037 draait, doorstuurt naar de server op poort 5038. Eenvoudig!

Het enige dat je nodig hebt is een SSH-tunnel voor een goede Android-ontwikkeling.

Als je meer informatie wilt over hoe je Android Studio en SSH-tunneling werkend kunt krijgen, bekijk dan dit GitHub-document van Joaquim Verges.

Eén opmerking over Android Studio en andere op JetBrains gebaseerde IDE's van derden: u kunt ze niet bijwerken vanaf het projectorscherm. U moet rechtstreeks verbinding maken met de server en deze vanaf daar bijwerken. Zorg ervoor dat de corresponderende Projector-instantie is gestopt voordat u dat doet.

Android Android-ontwikkeling

Omdat JetBrains Projector in een browser draait en je verbinding kunt maken vanaf bijvoorbeeld een Android-telefoon, wilde ik, om een ​​volledig willekeurig voorbeeld te noemen, iets proberen.

Android 11 introduceerde de mogelijkheid om schakel draadloze ADB in rechtstreeks vanaf het apparaat. Hoewel sommige fabrikanten de instelling al eerder openbaar maakten, is deze niet beschikbaar voor alle door Google gecertificeerde apparaten, zolang ze Android 11 of hoger gebruiken. Hoewel draadloze foutopsporing bedoeld is om vanaf een computer te worden gebruikt, hoeft dit niet zo te zijn.

Apps zoals Shizuku laat zien dat het op Android 11 mogelijk is om verbinding te maken met ADB met uw apparaat... vanaf uw apparaat, zonder zelfs maar na te denken over het gebruik van een computer. Hoewel Shizuku dit gebruikt om apps verhoogde bewerkingen te laten uitvoeren, denk ik dat je waarschijnlijk wel kunt zien waar dit naartoe gaat.

Daarom heb ik een app gemaakt! Ik weet niet of ik het ooit openbaar zal maken, maar het is vrij eenvoudig. Ik heb er een SSH-bibliotheek in, samen met een ARM64 ADB-binair bestand. Ik gebruik het binaire ADB-bestand om verbinding te maken met het apparaat dat ik gebruik, en vervolgens gebruik ik de SSH-bibliotheek om een ​​doorstuurtunnel te maken van mijn apparaat naar de projectorserver. En ten slotte gebruik ik het om projector-URL's op te slaan en te starten.

Bam, ontwikkelen voor Android...van Android! Elke keer dat ik niet thuis ben, maar wat Android-ontwikkelingswerk wil doen, kan ik gewoon mijn Samsung Galaxy Tab S7. Ik heb een Bluetooth-toetsenbord en een Bluetooth-muis (kanttekening: als je Projector gebruikt, dan wel Echt u een muis of trackpad wilt gebruiken. Het werkt niet goed met aanraakinvoer), dus ik kan ontwikkelen en debuggen zonder van apparaat te hoeven wisselen en zonder een veel zwaardere laptop mee te hoeven sjouwen.

Problemen

JetBrains Projector bevindt zich nog in een vrij vroege ontwikkeling, dus het is niet perfect.

  1. Soms is het een beetje traag bij het reageren op zaken als scrollen en slepen, en de bediening kan wankel gaan.
  2. Willekeurig, bij het bekijken van bibliotheekcode (gedecompileerd of in de bronweergave), wordt het lettertype erg zwaar en blijft alles achter. Het kan zijn dat dit op het moment van schrijven al is opgelost.
  3. Sommige plug-ins werken niet goed. Omdat dit geen directe videostream is, geven plug-ins zoals de ingebouwde browsers gewoon niets weer.
  4. Er is geen X-serverondersteuning, en die zal er waarschijnlijk ook niet zijn. Dit kan het ontwikkelen van desktop- en browser-apps lastig maken, maar je kunt altijd een SSH-tunnel gebruiken met X-forwarding en een lokale X-server als je die echt nodig hebt.
  5. Soms loopt de interface vast en moet u de pagina vernieuwen of zelfs de serverservice opnieuw opstarten om deze weer te laten werken.

En er is meer.

Maar is dat allemaal een dealbreaker? Zeker niet voor mij. Ik vind het prima met een iets minder gepolijste ervaring (ik gebruik tenslotte Android Studio Canary). als dit betekent dat ik al het compilatiewerk naar een andere computer kan overbrengen en zelfs vanaf mijn computer voor mijn tablet kan ontwikkelen tablet.

Android Studio draait op een Samsung Galaxy Tab S7 via JetBrains Projector

Ondanks de problemen vind ik JetBrains Projector nog steeds erg leuk. Het maakt ontwikkelen vanaf mobiel mogelijk, het verplaatst de belasting van bronnen van een lokale computer naar een externe computer, en het is ook gewoon heel gaaf.

Ik weet dat je met andere IDE's, zoals Visual Studio, de compilatie naar een externe computer kunt overbrengen, maar daarvoor moet je nog steeds de IDE lokaal hebben geïnstalleerd en draaien.

Ik ben persoonlijk erg opgewonden om te zien waar JetBrains Projector vanaf hier naartoe gaat, omdat het op dit moment al behoorlijk ongelooflijk is. Hopelijk kunnen ze een aantal van de problemen oplossen die ik hierboven heb beschreven, maar zelfs nu zou Projector veilig moeten zijn om te gebruiken voor productieklare projecten.

Als je JetBrains Projector zelf wilt proberen, hier is de link nog een keer naar het installatieprogramma en de initiële installatiehandleiding. Als u Android Studio in Projector wilt instellen, hier is die link nog eens, ook.