Hvordan kode i Android Studio fra hvilken som helst enhet med JetBrains Projector

Ønsker du å kode eksternt i Android Studio? Sjekk ut JetBrains Projector, den beste måten å kjøre JetBrains IntelliJ IDE på hvilken som helst enhet.

JetBrains er selskapet bak noen av de mest populære IDE-ene, inkludert IntelliJ IDEA, PyCharm og PhpStorm. Til og med Android Studio, Googles slags interne IDE for Android-utvikling, er basert på IntelliJ.

Mens IntelliJs IDE-er er populære av en grunn (de er flink), kan de være litt tunge til tider. IntelliJ og Android Studio kan ta opp mye ressurser bare ved å være åpne, for eksempel. Og hvis du kompilerer noe, kommer de til å bruke enda mer. Du kan heller ikke (ennå) egentlig kjøre JetBrains-ting på mobile enheter, siden JetBrains ikke har lett tilgjengelige ARM-bygg.

Så hva skjer hvis du ikke har en kraftig datamaskin, eller du ikke engang har en datamaskin? Normalt vil det være her du vil se deg om etter andre IDE-er som fungerer på ARM. Men JetBrains har på en måte en løsning, og den heter JetBrains Projector.

Hva er en projektor?

Du har sikkert hørt om eksternt skrivebord eller VNC før. Den lar deg samhandle grafisk med en datamaskin over et lokalt nettverk eller til og med internett. JetBrains Projector fungerer litt som et eksternt skrivebord, men uten noen av ulempene.

For å bruke JetBrains Projector, trenger du en datamaskin et sted på Internett for å være vert for den. Dette kan være en AWS-instans eller en hjemmeserver. Du kan deretter koble til den fra en hvilken som helst nettleser som støttes, inkludert Chrome og Firefox for mobil.

Men i stedet for å vise et helt skrivebord og sende en videofeed av det tilbake til en tilkoblet klient, JetBrains Projector sender over informasjonen som trengs for at klienten skal vise en IDE som om den skulle vises lokalt. Dette betyr at det ikke er noen komprimering eller oppløsningsskalering, så IDE ser nesten innfødt ut.

Dessuten er JetBrains Projector ikke begrenset til bare de offisielle JetBrains IDE-ene. Så lenge du har en IDE som er tett basert på en fra JetBrains, kan du bruke den med JetBrains Projector. Det inkluderer Android Studio.

Hvorfor en projektor?

Den største grunnen til at du kanskje vil drive med ekstern utvikling er det jeg snakket om i innledningen: Hva om du ikke har en kraftig x86-basert datamaskin? Du kan kjøpe en semi-kraftig en spesielt for utviklingsarbeid, eller du kan spinne opp en skyserver og bruke JetBrains Projector.

Det kan også være nyttig hvis du bare ønsker å avlaste ressurskravene. For eksempel har jeg en ganske kraftig gaming-laptop med en i7-9750H og 32 GB RAM. Det er nok for selv de store prosjektene jeg arbeider med. Men hvis jeg vil gjøre noe annet i tillegg til utvikling, er det ressurskrevende også, som ser på YouTube, spille et spill? Så begynner ting å falle fra hverandre.

Men jeg har en Ryzen 7 5800X-server med 32 GB RAM i. Så jeg installerte JetBrains Projector på det. Nå kan jeg bare åpne et nytt Chrome-vindu og koble til det fra den bærbare datamaskinen min uten å bekymre meg for sjonglering med ressurser. Serveren bygger også mye raskere enn den bærbare datamaskinen min, så det er en vinn-vinn-situasjon.

Hvordan er det å bruke en projektor?

JetBrains Projector er ment å være vert på en Linux-maskin. Det betyr ikke at du ikke kan kjøre det på macOS eller på Windows med WSL, men du kan få noen rare problemer på grunn av det.

For å få den satt opp, er alt du trenger å gjøre å gå over til Projektor Installer GitHub repo og følg instruksjonene der. De vil lede deg gjennom å få installert avhengighetene og sette opp en IDE. Det er til og med noen WSL-feilsøkingstrinn hvis du trenger dem.

Deretter kan du bare koble til serveradressen din ved å bruke riktig port og token (hvis du angir en), og nå har du en IDE som kjører på enheten din uten noe oppblåst.

Android utvikling

Jeg er en Android-utvikler, så selv om jeg kunne bruke IntelliJ IDEA for utvikling, har Android Studio en tendens til å fungere bedre. Mens JetBrains Projector støtter tredjeparts IDE-er, er det nå så enkelt som å bruke det innebygde kommandolinjegrensesnittet for å laste ned og installere dem. Det er likevel ganske enkelt.

For å bruke Android Studio med JetBrains Projector, er alt du trenger å gjøre å laste ned og trekke ut Android Studio et fornuftig sted. Deretter kan du manuelt legge den til Projector via kommandolinjen ved å spesifisere banen.

Det er også et annet problem med Android-utvikling og projektor: kjørende apper. Uten noe ekstra kan du kode apper og se forhåndsvisninger i Projector, men du kan ikke bruke en emulator eller koble til en ekte enhet for å faktisk kjøre og feilsøke apper. Eller kan du?

Det er nesten som Google forventet at denne typen scenario skulle skje fordi ADB kan koble til en ekstern server over Internett. Alt som trengs er en SSH-tunnel fra klienten til projektorserveren. Jeg satte Android Studio på projektoren til å ikke prøve å administrere ADB og å bruke port 5038. Da bruker jeg bare en slags SSH-klient (OpenSSH, plink, etc) for å lage en tunnel som videresender ADB-serveren som kjører lokalt på port 5037 til serveren på port 5038. Lett!

Alt du trenger er en SSH-tunnel for riktig Android-utvikling.

Hvis du vil ha mer informasjon om hvordan du får Android Studio og SSH-tunneling til å fungere, sjekk ut denne GitHub-dokument av Joaquim Verges.

En merknad om Android Studio og andre tredjeparts JetBrains-baserte IDE-er: Du kan ikke oppdatere dem fra projektorskjermen. Du må eksternt inn på serveren direkte og oppdatere dem derfra. Sørg for at den tilsvarende projektorforekomsten er stoppet før du gjør det.

Android Android utvikling

Siden JetBrains Projector kjører i en nettleser, og du kan koble til fra noe som en Android-telefon, som et helt tilfeldig eksempel, ville jeg prøve noe.

Android 11 introduserte muligheten til aktiver trådløs ADB direkte fra enheten. Selv om noen produsenter avslørte innstillingen før da, er den ikke tilgjengelig for alle Google-sertifiserte enheter så lenge de er på Android 11 eller nyere. Selv om trådløs feilsøking er ment å brukes fra en datamaskin, trenger det ikke å være det.

Apper som Shizuku demonstrer at det er mulig på Android 11 å koble til med ADB til enheten din... fra enheten din, uten engang å tenke på å bruke en datamaskin. Mens Shizuku bruker dette til å la apper kjøre forhøyede operasjoner, tror jeg du sannsynligvis kan se hvor dette går.

Så jeg har laget en app! Jeg vet ikke om jeg noen gang kommer til å gjøre det offentlig, men det er ganske enkelt. Jeg har et SSH-bibliotek i den sammen med en ARM64 ADB-binær. Jeg bruker ADB-binæren for å koble til enheten jeg bruker, deretter bruker jeg SSH-biblioteket til å lage en videresendingstunnel fra enheten min til projektorserveren. Og til slutt bruker jeg den til å lagre og starte projektor-URL-er.

Bam, utvikler for Android...fra Android! Hver gang jeg ikke er hjemme, men jeg ønsker å få litt Android-utviklingsarbeid, kan jeg bare ta ut min Samsung Galaxy Tab S7. Jeg har et Bluetooth-tastatur og en Bluetooth-mus (sidenote: hvis du bruker projektor, vil du egentlig ønsker å bruke en mus eller styreflate. Det fungerer ikke bra med berøringsinngang), så jeg kan utvikle og feilsøke uten å måtte bytte enhet og uten å måtte dra rundt på en mye tyngre bærbar datamaskin.

Problemer

JetBrains Projector er fortsatt i ganske tidlig utvikling, så den er ikke perfekt.

  1. Noen ganger er det litt tregt når du reagerer på ting som å rulle og dra, og kontrollene kan gå gale.
  2. Tilfeldig, når du ser på bibliotekkode (enten dekompilert eller i kildevisning), blir skriftvekten veldig tung og alt henger. Dette kan imidlertid ha blitt fikset da dette ble skrevet.
  3. Noen plugins vil ikke fungere ordentlig. Siden dette ikke er en direkte videostrøm, vil plugins som de innebygde nettleserne bare ikke vise noe.
  4. Det er ingen X-serverstøtte, og det vil sannsynligvis ikke være noen. Dette kan gjøre det vanskelig å utvikle skrivebords- og nettleserapper, men du kan alltid bruke en SSH-tunnel med X-videresending og en lokal X-server hvis du virkelig trenger det.
  5. Noen ganger låser grensesnittet seg og du må oppdatere siden eller til og med starte servertjenesten på nytt for å få den til å fungere igjen.

Og det er mer.

Men er alt det en dealbreaker? Absolutt ikke for meg. Jeg har det helt greit med en litt mindre polert opplevelse (jeg bruker tross alt Android Studio Canary), spesielt hvis det betyr at jeg kan laste ned alt kompileringsarbeidet til en annen datamaskin og til og med utvikle for nettbrettet mitt fra min tablett.

Android Studio kjører på en Samsung Galaxy Tab S7 via JetBrains projektor

Selv med problemene, liker jeg fortsatt JetBrains Projector. Det gjør utvikling fra mobil mulig, det flytter ressursbelastning fra en lokal datamaskin til en ekstern, og det er også veldig kult.

Jeg vet at andre IDE-er, som Visual Studio, lar deg laste ned kompilering til en ekstern datamaskin, men det krever fortsatt at du har IDE-en installert og kjører lokalt.

Jeg er personlig veldig spent på å se hvor JetBrains Projector går herfra, for det er allerede ganske utrolig akkurat nå. Forhåpentligvis vil de være i stand til å fikse noen av problemene jeg beskrev ovenfor, men selv nå skal Projector være trygt å bruke for produksjonsklare prosjekter.

Hvis du vil prøve JetBrains Projector selv, her er linken igjen til installasjonsprogrammet og veiledningen for innledende oppsett. Hvis du vil sette opp Android Studio i Projector, her er den linken igjen, også.