Android Studio 3.5 introducerer Apply Changes, efterfølgeren til Instant Run-funktionen i det populære app-udviklingsværktøj.
Android Studio 3.5 (i øjeblikket på Canary- og Dev-kanalerne) har nu en ny måde at skubbe kodeændringer til din app og se deres effekter på farten uden at skulle genstarte appen. Kaldet blot "Anvend ændringer" og er efterfølgeren til "Instant Run"-funktionen i tidligere versioner af Android Studio.
Googles Android-udviklerblog siger følgende om Anvend ændringer:
Anvend ændringer giver dig mulighed for at skubbe kode- og ressourceændringer til din kørende app uden at genstarte din app – og i nogle tilfælde uden at genstarte den aktuelle aktivitet. Apply Changes erstatter Instant Run med en helt ny tilgang til build-optimering. I stedet for at omskrive bytekoden for din APK i løbet af byggetiden, omdefinerer Apply Changes klasser på farten ved at udnytte runtime-instrumenteringen, der understøttes i Android 8.0 (API-niveau 26) eller højere.
Derudover beder Android Studio dig nu om at beslutte, om du vil genstarte din app eller aktivitet, når den registrerer, at ændringer ikke er kompatible med Anvend ændringer. Denne ekstra kontrol skulle give dig en mere konsistent og forudsigelig oplevelse sammenlignet med adfærden for Instant Run.
Blogindlægget fortsætter med at angive nogle begrænsninger for den nye funktionalitet. For eksempel skal den enhed, du tester din app på, som minimum køre Android 8.0 Oreo (API niveau 26) og der er visse kodeændringer, som stadig kræver, at din app genstartes. Som med "Instant Run" vil "Anvend ændringer" tvinge din app til at genstarte, hvis du:
- Tilføjelse eller sletning af en klasse, metode eller felt
- Ændring af manifestet
- Ændring af metodesignaturer
- Ændring af modifikatorer af metoder eller klasser
- Omdøbning af klasser
- Skiftende klassearv
- Tilføjelse eller fjernelse af en ressource
Under "Kendte problemer" hedder det i blogindlægget, at da Google oprindeligt prioriterede stabilitet over ydeevne i denne nye funktion, vil "Anvend ændringer" nogle gange køre langsommere end dens forreste funktion "Instant Run." Desuden understøttes x86_x64 emulatorbilleder ikke, og til fejlretningsformål er kun Android Pie (API niveau 28) understøttes. Du kan se den fulde liste over begrænsninger og kendte problemer på kildelinket nedenfor.
For en mere detaljeret beskrivelse af forskellen mellem "Apply Changes" og "Instant Run," sagde en Google-medarbejder på Android Studio-teamet dette at sige på Reddit:
Det gør noget meget, meget anderledes. Instant Run havde en meget specifik indvirkning på opbygningen og instrumenterede hver af dine klasser på kompileringstidspunktet for at forberede dem til at blive erstattet i løbet af køretiden med en ny version af klassen. Det opdeler også din APK i flere APK'er for at genuploade din app mere trinvist.
Anvend ændringer kan ikke lide det. Din APK er meget den samme, uanset om du bruger Anvend ændringer eller ej. I stedet er den afhængig af nye runtime-instrumenteringskapaciteter i ART VM til dynamisk genindlæsning af klasser og erstatte dem, mens appen kører. Det er derfor, det kræver meget nyere versioner af Android.
"Anvend ændringer" forventes på sigt at erstatte "Instant Run" i Beta- og Stable-kanalerne, efterhånden som Google foretager forbedringer af dens ydeevne og stabilitet.
Kilde: Android Developers Blog