Android Studio 3.5 introduceert Apply Changes, de opvolger van de Instant Run-functie van de populaire app-ontwikkeltool.
Android Studio 3.5 (momenteel in de Canary- en Dev-kanalen) biedt nu een nieuwe manier om codewijzigingen naar uw app te pushen en de effecten ervan direct te bekijken zonder dat u de app opnieuw hoeft te starten. Het heet simpelweg 'Wijzigingen toepassen' en is de opvolger van de 'Instant Run'-functie in eerdere versies van Android-studio.
Die van Google Blog voor Android-ontwikkelaars zegt het volgende over Wijzigingen toepassen:
Met Wijzigingen toepassen kunt u code- en bronwijzigingen doorvoeren naar uw actieve app zonder uw app opnieuw te starten, en in sommige gevallen zonder de huidige activiteit opnieuw te starten. Apply Changes vervangt Instant Run door een geheel nieuwe aanpak voor build-optimalisatie. In plaats van de bytecode van uw APK tijdens de bouwtijd te herschrijven, herdefinieert Apply Changes klassen in een handomdraai door gebruik te maken van de runtime-instrumentatie die wordt ondersteund in Android 8.0 (API-niveau 26) of hoger.
Bovendien vraagt Android Studio u nu om te beslissen of u uw app of activiteit opnieuw wilt starten wanneer wordt gedetecteerd dat wijzigingen niet compatibel zijn met Wijzigingen toepassen. Deze extra controle zou u een consistentere en voorspelbaardere ervaring moeten bieden vergeleken met het gedrag van Instant Run.
De blogpost gaat verder met het opsommen van enkele beperkingen van de nieuwe functionaliteit. Het apparaat waarop u uw app test, moet bijvoorbeeld minimaal actief zijn Android 8.0 Oreo (API-niveau 26) en er zijn bepaalde codewijzigingen waarbij uw app nog steeds opnieuw moet worden opgestart. Net als bij 'Instant Run' zorgt 'Apply Changes' ervoor dat uw app opnieuw wordt opgestart als u:
- Een klasse, methode of veld toevoegen of verwijderen
- Het manifest wijzigen
- Methodehandtekeningen wijzigen
- Modifiers van methoden of klassen wijzigen
- Hernoemen van klassen
- Veranderende klassenovererving
- Een bron toevoegen of verwijderen
Onder 'Bekende problemen' stelt de blogpost dat, aangezien Google in deze nieuwe functie aanvankelijk prioriteit gaf aan stabiliteit boven prestaties, soms 'Wijzigingen toepassen' wordt uitgevoerd langzamer dan zijn voorganger "Instant Run." Bovendien worden x86_x64-emulatorafbeeldingen niet ondersteund en voor foutopsporingsdoeleinden wordt alleen Android Pie (API-niveau 28) gebruikt ondersteund. U kunt de volledige lijst met beperkingen en bekende problemen bekijken via de onderstaande bronlink.
Voor een meer gedetailleerde beschrijving van het verschil tussen 'Wijzigingen toepassen' en 'Instant Run', zei een Google-medewerker van het Android Studio-team dit over Reddit:
Het doet iets heel, heel anders. Instant Run had een zeer specifieke impact op de build, waarbij elk van je klassen tijdens het compileren werd geïnstrumenteerd om ze voor te bereiden op vervanging tijdens de runtime door een nieuwe versie van de klasse. Het splitst uw APK ook in verschillende APK's om uw app stapsgewijs opnieuw te uploaden.
Wijzigingen toepassen doet er niets aan. Uw APK is vrijwel hetzelfde, ongeacht of u Wijzigingen toepassen gebruikt of niet. In plaats daarvan vertrouwt het op nieuwe runtime-instrumentatiemogelijkheden van de ART VM om klassen dynamisch te herladen en te vervangen terwijl de app actief is. Daarom zijn er veel nieuwere versies van Android nodig.
Er wordt verwacht dat 'Apply Changes' uiteindelijk 'Instant Run' zal vervangen in de bèta- en stabiele kanalen, omdat Google verbeteringen aanbrengt in de prestaties en stabiliteit.
Bron: Android-ontwikkelaarsblog