Sådan kodes i Android Studio fra enhver enhed med JetBrains Projector

Ønsker du at fjernkode i Android Studio? Tjek JetBrains Projector, den bedste måde at køre JetBrains' IntelliJ IDE på en hvilken som helst enhed.

JetBrains er virksomheden bag nogle af de mest populære IDE'er, herunder IntelliJ IDEA, PyCharm og PhpStorm. Selv Android Studio, Googles slags in-house IDE til Android-udvikling, er baseret på IntelliJ.

Mens IntelliJs IDE'er er populære af en grund (de er godt), kan de til tider være lidt tunge. IntelliJ og Android Studio kan optage mange ressourcer bare ved at være åbne, for eksempel. Og hvis du kompilerer noget, kommer de til at bruge endnu mere. Du kan (endnu) ikke rigtig køre JetBrains-ting på mobile enheder, da JetBrains ikke har let tilgængelige ARM-builds.

Så hvad sker der, hvis du ikke har en kraftig computer, eller du ikke engang har en computer? Normalt ville det være her, du ville se dig om efter andre IDE'er, der virker på ARM. Men JetBrains har en slags løsning, og den hedder JetBrains Projector.

Hvad er en projektor?

Du har sikkert hørt om fjernskrivebord eller VNC før. Det lader dig interagere grafisk med en computer over et lokalt netværk eller endda internettet. JetBrains Projector fungerer lidt som et fjernskrivebord, men uden nogle af ulemperne.

For at bruge JetBrains Projector skal du have en computer et sted på internettet til at være vært for den. Dette kan være en AWS-instans eller en hjemmeserver. Du kan derefter oprette forbindelse til den fra enhver understøttet browser, inklusive mobil Chrome og Firefox.

Men i stedet for at vise et helt skrivebord og sende et videofeed af det tilbage til en tilsluttet klient, JetBrains Projector sender den information, der er nødvendig for, at klienten kan vise en IDE, som om den blev vist lokalt. Dette betyder, at der ikke er nogen komprimering eller opløsningsskalering, så IDE ser næsten oprindeligt ud.

Desuden er JetBrains Projector ikke begrænset til kun de officielle JetBrains IDE'er. Så længe du har en IDE, der er tæt baseret på en fra JetBrains, kan du bruge den med JetBrains Projector. Det inkluderer Android Studio.

Hvorfor en projektor?

Den største grund til, at du måske vil lave fjernudvikling, er det, jeg talte om i introduktionen: Hvad hvis du ikke har en kraftfuld x86-baseret computer? Du kan købe en semi-kraftfuld en specifikt til udviklingsarbejde, eller du kan oprette en cloud-server og bruge JetBrains Projector.

Det kan også være nyttigt, hvis du blot ønsker at aflaste ressourcekravene. For eksempel har jeg en ret kraftig gaming-bærbar computer med en i7-9750H og 32 GB RAM. Det er rigeligt til selv de store projekter, jeg beskæftiger mig med. Men hvis jeg vil lave noget andet oven i udviklingen, er det også ressourcekrævende, f.eks ser YouTube, spiller et spil? Så begynder tingene at falde fra hinanden.

Men jeg har en Ryzen 7 5800X-server med 32 GB RAM i. Så jeg installerede JetBrains Projector på det. Nu kan jeg bare åbne et nyt Chrome-vindue og oprette forbindelse til det fra min bærbare computer uden at bekymre mig om at jonglere med ressourcer. Serveren bygger også meget hurtigere end min bærbare computer, så det er en win-win situation.

Hvordan er det at bruge en projektor?

JetBrains Projector er beregnet til at blive hostet på en Linux-maskine. Det betyder ikke, at du ikke kan køre det på macOS eller på Windows med WSL, men du kan løbe ind i nogle mærkelige problemer på grund af det.

For at få det sat op, skal du blot gå over til Projektor Installer GitHub repo og følg instruktionerne der. De vil lede dig gennem at få afhængighederne installeret og konfigurere en IDE. Der er endda nogle WSL-fejlfindingstrin, hvis du har brug for dem.

Så kan du bare oprette forbindelse til din serveradresse ved hjælp af den korrekte port og token (hvis du indstiller en), og nu har du en IDE kørende på din enhed uden noget af bloat.

Android udvikling

Jeg er en Android-udvikler, så selvom jeg kunne bruge IntelliJ IDEA til udvikling, har Android Studio en tendens til at fungere bedre. Mens JetBrains Projector understøtter tredjeparts IDE'er, er det nu så enkelt som at bruge den indbyggede kommandolinjegrænseflade til at downloade og installere dem. Det er dog stadig ret simpelt.

For at bruge Android Studio med JetBrains Projector, skal du blot downloade og udpakke Android Studio et fornuftigt sted. Derefter kan du manuelt tilføje det til projektoren via kommandolinjen ved at angive stien.

Der er også et andet problem med Android-udvikling og projektor: at køre apps. Uden noget ekstra kan du kode apps og se forhåndsvisninger i Projector, men du kan ikke bruge en emulator eller oprette forbindelse til en rigtig enhed for rent faktisk at køre og fejlsøge apps. Eller kan du?

Det er næsten, som Google forventede, at denne slags scenarier ville ske, fordi ADB kan oprette forbindelse til en fjernserver over internettet. Det eneste, der skal til, er en SSH-tunnel fra klienten til projektorserveren. Jeg indstillede Android Studio på projektoren til ikke at forsøge at administrere ADB og bruge port 5038. Så bruger jeg bare en slags SSH-klient (OpenSSH, plink osv.) til at lave en tunnel, der videresender ADB-serveren, der kører lokalt på port 5037, til serveren på port 5038. Let!

Alt du behøver er en SSH-tunnel til korrekt Android-udvikling.

Hvis du vil have flere detaljer om, hvordan du får Android Studio og SSH-tunneling til at fungere, så tjek dette GitHub dokument af Joaquim Verges.

En bemærkning om Android Studio og andre tredjeparts JetBrains-baserede IDE'er: Du kan ikke opdatere dem fra projektorskærmen. Du bliver nødt til at fjerne direkte til serveren og opdatere dem derfra. Sørg for, at den tilsvarende projektor-instans er stoppet, før du gør det.

Android Android udvikling

Da JetBrains Projector kører i en browser, og du kan oprette forbindelse fra noget som en Android-telefon, som et helt tilfældigt eksempel, ville jeg prøve noget.

Android 11 introducerede muligheden for aktivere trådløs ADB direkte fra enheden. Mens nogle producenter afslørede indstillingen før da, er den ikke tilgængelig for alle Google-certificerede enheder, så længe de er på Android 11 eller nyere. Selvom trådløs debugging er beregnet til at blive brugt fra en computer, behøver det ikke at være det.

Apps som Shizuku demonstrer, at det er muligt på Android 11 at forbinde med ADB til din enhed...fra din enhed, uden overhovedet at tænke på at bruge en computer. Mens Shizuku bruger dette til at lade apps køre forhøjede operationer, tror jeg, du nok kan se, hvor det går hen.

Så jeg lavede en app! Jeg ved ikke, om jeg nogensinde vil offentliggøre det, men det er ret simpelt. Jeg har et SSH-bibliotek i det sammen med en ARM64 ADB-binær. Jeg bruger ADB-binæren til at oprette forbindelse til den enhed, jeg bruger, derefter bruger jeg SSH-biblioteket til at oprette en videresendelsestunnel fra min enhed til projektorserveren. Og endelig bruger jeg den til at gemme og starte projektor-URL'er.

Bam, udvikler til Android...fra Android! Hver gang jeg ikke er hjemme, men jeg vil have noget Android-udviklingsarbejde ind, kan jeg bare tage min Samsung Galaxy Tab S7. Jeg har et Bluetooth-tastatur og en Bluetooth-mus (sidenote: hvis du bruger projektor, vil du virkelig ønsker at bruge en mus eller pegefelt. Det gør det ikke godt med touch-input), så jeg kan udvikle og fejlfinde uden at skulle skifte enheder og uden at skulle slæbe rundt på en meget tungere bærbar.

Problemer

JetBrains Projector er stadig i ret tidlig udvikling, så den er ikke perfekt.

  1. Nogle gange er det lidt haltende, når man reagerer på ting som at rulle og trække, og kontrollerne kan gå galt.
  2. Tilfældigt, når du ser bibliotekskode (enten dekompileret eller i kildevisning), bliver skrifttypevægten virkelig tung, og alt halter. Dette kan dog være rettet, da dette blev skrevet.
  3. Nogle plugins fungerer ikke korrekt. Da dette ikke er en direkte videostream, vil plugins som de indlejrede browsere bare ikke vise noget.
  4. Der er ingen X-serverunderstøttelse, og der vil sandsynligvis ikke være nogen. Dette kan gøre det vanskeligt at udvikle desktop- og browserapps, men du kan altid bruge en SSH-tunnel med X-videresendelse og en lokal X-server, hvis du virkelig har brug for det.
  5. Nogle gange låser grænsefladen, og du skal opdatere siden eller endda genstarte servertjenesten for at få den til at fungere igen.

Og der er mere.

Men er alt det en dealbreaker? Bestemt ikke for mig. Jeg har det helt fint med en lidt mindre poleret oplevelse (jeg bruger trods alt Android Studio Canary), især hvis det betyder, at jeg kan overføre alt kompileringsarbejdet til en anden computer og endda udvikle til min tablet fra min tablet.

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

Selv med dens problemer, kan jeg stadig rigtig godt lide JetBrains Projector. Det gør det muligt at udvikle fra mobil, det flytter ressourcebelastning fra en lokal computer til en fjerncomputer, og det er også bare rigtig fedt.

Jeg ved, at andre IDE'er, som Visual Studio, lader dig overføre kompilering til en fjerncomputer, men det kræver stadig, at du har IDE'en installeret og kører lokalt.

Jeg er personligt virkelig spændt på at se, hvor JetBrains Projector går herfra, fordi det allerede er ret utroligt lige nu. Forhåbentlig vil de være i stand til at løse nogle af de problemer, jeg beskrev ovenfor, men selv nu burde Projector være sikker at bruge til produktionsklare projekter.

Hvis du selv vil prøve JetBrains Projector, her er linket igen til installationsprogrammet og den indledende opsætningsvejledning. Hvis du vil konfigurere Android Studio i Projector, her er det link igen, såvel.