Vill du fjärrkoda i Android Studio? Kolla in JetBrains Projector, det bästa sättet att köra JetBrains IntelliJ IDE på vilken enhet som helst.
JetBrains är företaget bakom några av de mest populära IDE: erna, inklusive IntelliJ IDEA, PyCharm och PhpStorm. Till och med Android Studio, Googles typ av in-house IDE för Android-utveckling, är baserad på IntelliJ.
Medan IntelliJs IDE: er är populära av en anledning (de är Bra), kan de vara lite tunga ibland. IntelliJ och Android Studio kan ta upp mycket resurser bara genom att vara öppna, till exempel. Och om du kompilerar något, kommer de att använda ännu mer. Du kan inte heller (ännu) riktigt köra JetBrains-grejer på mobila enheter, eftersom JetBrains inte har lättillgängliga ARM-byggen.
Så vad händer om du inte har en kraftfull dator, eller om du inte ens har en dator? Normalt skulle det vara här du skulle leta efter andra IDE som fungerar på ARM. Men JetBrains har typ en lösning, och den heter JetBrains Projector.
Vad är en projektor?
Du har säkert hört talas om fjärrskrivbord eller VNC förut. Det låter dig interagera grafiskt med en dator över ett lokalt nätverk eller till och med internet. JetBrains Projector fungerar lite som ett fjärrskrivbord, men utan några av nackdelarna.
För att använda JetBrains Projector behöver du en dator någonstans på Internet för att vara värd för den. Detta kan vara en AWS-instans eller en hemserver. Du kan sedan ansluta till den från alla webbläsare som stöds, inklusive mobil Chrome och Firefox.
Men istället för att visa ett helt skrivbord och skicka ett videoflöde av det tillbaka till en ansluten klient, JetBrains Projector skickar över den information som behövs för att klienten ska visa en IDE som om den skulle visas lokalt. Detta betyder att det inte finns någon komprimering eller upplösningsskalning, så IDE ser nästan inbyggd ut.
Dessutom är JetBrains Projector inte begränsad till bara de officiella JetBrains IDE: erna. Så länge du har en IDE som är nära baserad på en från JetBrains, kan du använda den med JetBrains Projector. Det inkluderar Android Studio.
Varför en projektor?
Den största anledningen till att du kanske vill göra fjärrutveckling är det jag pratade om i inledningen: Vad händer om du inte har en kraftfull x86-baserad dator? Du kan köpa en halvkraftig speciellt för utvecklingsarbete, eller så kan du snurra upp en molnserver och använda JetBrains Projector.
Det kan också vara användbart om du bara vill avlasta resurskraven. Till exempel har jag en ganska kraftfull spelbärbar dator med en i7-9750H och 32 GB RAM. Det räcker till även för de stora projekt jag sysslar med. Men om jag vill göra något annat utöver utveckling så är det resurskrävande också, som tittar på YouTube, spelar ett spel? Sedan börjar saker falla samman.
Men jag har en Ryzen 7 5800X-server med 32 GB RAM-minne i. Så jag installerade JetBrains Projector på det. Nu kan jag bara öppna ett nytt Chrome-fönster och ansluta till det från min bärbara dator utan att behöva oroa mig för att jonglera med resurser. Servern bygger också mycket snabbare än min bärbara dator, så det är en win-win-situation.
Hur är det att använda en projektor?
JetBrains Projector är tänkt att vara värd på en Linux-maskin. Det betyder inte att du inte kan köra det på macOS eller på Windows med WSL, men du kan stöta på några konstiga problem på grund av det.
Allt du behöver göra för att få det konfigurerat är att gå till Projektorinstallatör GitHub repo och följ instruktionerna där. De kommer att leda dig genom att installera beroenden och konfigurera en IDE. Det finns till och med några WSL-felsökningssteg om du behöver dem.
Sedan kan du bara ansluta till din serveradress med hjälp av rätt port och token (om du ställer in en), och nu har du en IDE som körs på din enhet utan något av uppsvällningen.
Android utveckling
Jag är en Android-utvecklare, så även om jag skulle kunna använda IntelliJ IDEA för utveckling, tenderar Android Studio att fungera bättre. Även om JetBrains Projector stöder IDE från tredje part, är det nu så enkelt som att använda det inbyggda kommandoradsgränssnittet för att ladda ner och installera dem. Det är ändå ganska enkelt.
För att använda Android Studio med JetBrains Projector behöver du bara ladda ner och extrahera Android Studio på ett vettigt ställe. Sedan kan du lägga till den manuellt i projektorn via kommandoraden genom att ange sökvägen.
Det finns också ett annat problem med Android-utveckling och projektor: appar som körs. Utan något extra kan du koda appar och se förhandsvisningar i Projector, men du kan inte använda en emulator eller ansluta till en riktig enhet för att faktiskt köra och felsöka appar. Eller kan du?
Det är nästan som Google förväntade sig att den här typen av scenario skulle hända eftersom ADB kan ansluta till en fjärrserver över Internet. Allt som behövs är en SSH-tunnel från klienten till projektorservern. Jag ställde in Android Studio på projektorn att inte försöka hantera ADB och att använda port 5038. Sedan använder jag bara någon slags SSH-klient (OpenSSH, plink, etc) för att skapa en tunnel som vidarebefordrar ADB-servern som körs lokalt på port 5037 till servern på port 5038. Lätt!
Om du vill ha mer information om hur du får Android Studio och SSH-tunnel att fungera, kolla in det här GitHub-dokument av Joaquim Verges.
En anmärkning om Android Studio och andra JetBrains-baserade IDE: er från tredje part: Du kan inte uppdatera dem från projektorskärmen. Du måste fjärransluta till servern direkt och uppdatera dem därifrån. Se till att motsvarande projektorinstans har stoppats innan du gör det.
Android Android utveckling
Eftersom JetBrains Projector körs i en webbläsare, och du kan ansluta från något som en Android-telefon, som ett helt slumpmässigt exempel, ville jag testa något.
Android 11 introducerade möjligheten att aktivera trådlös ADB direkt från enheten. Även om vissa tillverkare avslöjade inställningen innan dess, är den inte tillgänglig för alla Google-certifierade enheter så länge de är på Android 11 eller senare. Även om trådlös felsökning är tänkt att användas från en dator, behöver det inte vara det.
Appar som Shizuku visa att det är möjligt på Android 11 att ansluta med ADB till din enhet...från din enhet, utan att ens tänka på att använda en dator. Medan Shizuku använder detta för att låta appar köra förhöjda operationer, tror jag att du förmodligen kan se vart detta är på väg.
Så jag gjorde en app! Jag vet inte om jag någonsin kommer att göra det offentligt, men det är ganska enkelt. Jag har ett SSH-bibliotek i det tillsammans med en ARM64 ADB-binär. Jag använder ADB-binären för att ansluta till enheten jag använder, sedan använder jag SSH-biblioteket för att skapa en vidarebefordringstunnel från min enhet till projektorservern. Och slutligen använder jag den för att lagra och starta projektor-URL: er.
Bam, utvecklar för Android...från Android! När jag inte är hemma men jag vill få in lite Android-utvecklingsarbete kan jag bara ta ut min Samsung Galaxy Tab S7. Jag har ett Bluetooth-tangentbord och en Bluetooth-mus (anmärkning: om du använder projektor kommer du verkligen vill använda en mus eller styrplatta. Det går inte bra med touch-ingång), så jag kan utveckla och felsöka utan att behöva byta enhet och utan att behöva släpa runt på en mycket tyngre bärbar dator.
Problem
JetBrains Projector är fortfarande i ganska tidig utveckling, så den är inte perfekt.
- Ibland är det lite laggigt när man svarar på saker som att rulla och dra, och kontrollerna kan bli trasiga.
- Slumpmässigt, när du tittar på bibliotekskod (antingen dekompilerad eller i källvy), blir teckensnittsvikten riktigt tung och allt släpar. Detta kan dock ha åtgärdats när jag skrev detta.
- Vissa plugins fungerar inte korrekt. Eftersom detta inte är en direkt videoström, kommer plugins som de inbäddade webbläsarna helt enkelt inte att visa någonting.
- Det finns inget X-serverstöd, och det kommer förmodligen inte att finnas något. Detta kan göra det svårt att utveckla skrivbords- och webbläsarappar, men du kan alltid använda en SSH-tunnel med X-vidarebefordran och en lokal X-server om du verkligen behöver det.
- Ibland låser sig gränssnittet och du behöver uppdatera sidan eller till och med starta om servertjänsten för att få den att fungera igen.
Och det finns mer.
Men är allt det en dealbreaker? Absolut inte för mig. Jag är helt okej med en lite mindre polerad upplevelse (jag använder trots allt Android Studio Canary), speciellt om det betyder att jag kan ladda ner allt kompileringsarbete till en annan dator och till och med utveckla för min surfplatta från min läsplatta.
Även med dess problem gillar jag fortfarande JetBrains Projector. Det gör det möjligt att utveckla från mobil, det flyttar resursbelastning från en lokal dator till en fjärrdator, och det är också riktigt coolt.
Jag vet att andra IDE, som Visual Studio, låter dig ladda ner kompilering till en fjärrdator, men det kräver fortfarande att du har IDE installerad och kör lokalt.
Jag är personligen väldigt exalterad över att se var JetBrains Projector tar vägen härifrån eftersom det redan är ganska otroligt just nu. Förhoppningsvis kommer de att kunna fixa några av problemen jag beskrev ovan, men även nu borde Projector vara säker att använda för produktionsklara projekt.
Om du vill prova JetBrains Projector själv, här är länken igen till installationsprogrammet och inledande installationsguide. Om du vill konfigurera Android Studio i Projector, här är länken igen, också.