Android Studio 3.5 Canary legger til "Bruk endringer", en Instant Run-erstatning

Android Studio 3.5 (for tiden i Kanariøyene og Dev-kanalene) har nå en ny måte å skyve kodeendringer på appen din og se effekten av dem uten å måtte starte appen på nytt. Drepet bare “Bruk endringer”, er det etterfølgeren til “Instant Run” -funksjonen i tidligere versjoner av Android Studio.

Googles Android Developers Blog sier følgende om Bruk endringer:

Bruk endringer lar deg skyve kode- og ressursendringer til den løpende appen din uten å starte appen på nytt - og i noen tilfeller uten å starte den aktuelle aktiviteten på nytt. Bruk endringer erstatter Instant Run med en helt ny tilnærming for optimalisering av bygninger. I stedet for å omskrive bytekoden til APK-en din i løpet av byggetiden, omdefinerer Bruk endringer klasser på farten ved å utnytte runtime-instrumenteringen som støttes i Android 8.0 (API-nivå 26) eller høyere.

I tillegg ber Android Studio deg nå om å bestemme om du vil starte appen eller aktiviteten din på nytt når den oppdager at endringer ikke er kompatible med Bruk endringer. Denne ekstra kontrollen skal gi deg en mer konsistent og forutsigbar opplevelse sammenlignet med oppførselen til Instant Run.

Blogginnlegget viser videre noen begrensninger for den nye funksjonaliteten. For eksempel må enheten du tester appen din på minst ha Android 8.0 Oreo (API-nivå 26), og det er visse kodeendringer som fortsatt vil kreve at appen din skal starte på nytt. Som med "Øyeblikkelig kjøring", vil "Bruk endringer" tvinge appen din til å starte på nytt hvis du er:

  • Legge til eller slette en klasse, metode eller felt
  • Å endre manifestet
  • Endring av metodesignaturer
  • Endre endringer av metoder eller klasser
  • Gi nytt navn til klasser
  • Endre klassearv
  • Legge til eller fjerne en ressurs

Under "Kjente problemer" uttaler blogginnlegget at siden Google opprinnelig prioriterte stabilitet fremfor ytelse i denne nye funksjonen, vil "Bruk endringer" noen ganger løpe saktere enn forfearsfunksjonen "Instant Run". X86_x64-emulatorbilder støttes heller ikke, og for feilsøkingsformål støttes bare Android Pie (API-nivå 28). Du kan se den komplette listen over begrensninger og kjente problemer på kildelinken nedenfor.

For en mer detaljert beskrivelse av forskjellen mellom "Bruk endringer" og "Øyeblikkelig kjøring", hadde en Google-ansatt i Android Studio-teamet dette å si på Reddit:

Det gjør noe veldig, veldig annerledes. Instant Run hadde en veldig spesifikk innvirkning på build, og instrumenterte hver av klassene dine på kompileringstidspunktet for å forberede dem på å bli erstattet i løpet av løpetiden med en ny versjon av klassen. Den delte også APK-en din i flere APK-er for å laste opp appen din mer trinnvis.

Bruk endringer gjør ingenting som det. APK-en din er veldig den samme uansett om du bruker Bruk endringer eller ikke. I stedet er det avhengig av nye runtime-instrumenteringsfunksjoner til ART VM for å dynamiske omlaste klasser og erstatte dem mens appen kjører. Dette er grunnen til at det krever mye nyere versjoner av Android.

"Bruk endringer" forventes etter hvert å erstatte "Instant Run" i Beta- og Stable-kanalene, ettersom Google forbedrer ytelsen og stabiliteten.


Kilde: Android Developers Blog