Android Studio 3.5 Canary voegt 'Apply Changes' toe, een vervanging voor Instant Run

Android Studio 3.5 (momenteel in de Canarische en Dev-kanalen) biedt nu een nieuwe manier om codewijzigingen in uw app door te voeren en hun effecten meteen te bekijken zonder de app opnieuw te hoeven opstarten. Nagesynchroniseerd simpelweg "Apply Changes", het is de opvolger van de "Instant Run" -functie in eerdere versies van Android Studio.

Google's Android Developers Blog zegt het volgende over Apply Changes:

Met Wijzigingen toepassen kunt u code- en bronwijzigingen doorvoeren in uw actieve app zonder uw app opnieuw te starten - en in sommige gevallen zonder de huidige activiteit opnieuw te starten. Wijzigingen toepassen vervangt Instant Run door een volledig nieuwe aanpak voor optimalisatie van de build. In plaats van de bytecode van uw APK tijdens de bouwtijd te herschrijven, past Apply Changes de klassen meteen opnieuw toe door gebruik te maken van de runtime-instrumenten die worden ondersteund in Android 8.0 (API level 26) of hoger.

Bovendien vraagt ​​Android Studio u nu om te beslissen of u uw app of activiteit opnieuw moet opstarten wanneer wordt vastgesteld dat wijzigingen niet compatibel zijn met Wijzigingen toepassen. Deze extra controle zou u een consistentere en voorspelbaardere ervaring moeten bieden in vergelijking met het gedrag van Instant Run.

Het blogbericht gaat verder met enkele beperkingen voor de nieuwe functionaliteit. Het apparaat waarop u uw app test, moet bijvoorbeeld minimaal Android 8.0 Oreo (API Level 26) hebben en er zijn bepaalde codewijzigingen waarvoor uw app nog steeds opnieuw moet worden opgestart. Net als bij "Instant Run", zal "Apply Changes" uw app dwingen opnieuw op te starten als u:

  • Een klasse, methode of veld toevoegen of verwijderen
  • Het manifest wijzigen
  • Methode handtekeningen wijzigen
  • Modificaties van methoden of klassen wijzigen
  • Klassen hernoemen
  • Overerving van klasse wijzigen
  • Een bron toevoegen of verwijderen

Onder 'Bekende problemen' stelt de blogpost dat, omdat Google aanvankelijk prioriteit gaf aan stabiliteit boven prestaties in deze nieuwe functie, 'Wijzigingen toepassen' soms langzamer verloopt dan de vorige functie 'Direct uitvoeren'. Ook worden x86_x64 emulatorafbeeldingen niet ondersteund, en voor foutopsporing wordt alleen Android Pie (API Level 28) ondersteund. U kunt de volledige lijst met beperkingen en bekende problemen bekijken op de bronlink hieronder.

Voor een meer gedetailleerde beschrijving van het verschil tussen 'Wijzigingen toepassen' en 'Direct uitvoeren' had een Google-medewerker van het Android Studio-team dit op Reddit te zeggen:

Het doet iets heel, heel anders. Instant Run had een zeer specifieke impact op de build, waarbij elk van uw klassen tijdens het compileren werd voorbereid om ze voor te bereiden op vervanging tijdens de runtime door een nieuwe versie van de klasse. Het splitste ook uw APK in verschillende APK's om uw app meer incrementeel te uploaden.

Wijzigingen toepassen doet niets. Uw APK is vrijwel hetzelfde, of u nu Wijzigingen toepassen gebruikt of niet. In plaats daarvan vertrouwt het op nieuwe runtime-instrumentatiemogelijkheden van de ART VM om dynamische herlaadklassen te vervangen en te vervangen terwijl de app draait. Dit is waarom het veel nieuwere versies van Android vereist.

Verwacht wordt dat "Apply Changes" uiteindelijk "Instant Run" in de bèta- en stabiele kanalen zal vervangen, aangezien Google de prestaties en stabiliteit verbetert.


Bron: Android Developers Blog