Android Studio 3.5 führt Apply Changes ein, den Nachfolger der Instant Run-Funktion des beliebten App-Entwicklungstools.
Android Studio 3.5 (derzeit in den Canary- und Dev-Kanälen) bietet jetzt eine neue Möglichkeit, Codeänderungen in Ihre App zu übertragen und deren Auswirkungen im Handumdrehen zu sehen, ohne die App neu starten zu müssen. Es heißt einfach „Änderungen anwenden“ und ist der Nachfolger der „Instant Run“-Funktion in früheren Versionen von Android Studio.
Googles Blog für Android-Entwickler sagt Folgendes über Apply Changes:
Mit „Änderungen anwenden“ können Sie Code- und Ressourcenänderungen an Ihre laufende App übertragen, ohne die App neu zu starten – und in manchen Fällen auch ohne die aktuelle Aktivität neu zu starten. Apply Changes ersetzt Instant Run durch einen völlig neuen Ansatz zur Build-Optimierung. Anstatt den Bytecode Ihres APK während der Erstellungszeit neu zu schreiben, definiert Apply Changes Klassen im Handumdrehen neu, indem es die in Android 8.0 (API-Level 26) oder höher unterstützte Laufzeitinstrumentierung nutzt.
Darüber hinaus werden Sie von Android Studio jetzt aufgefordert, zu entscheiden, ob Ihre App oder Aktivität neu gestartet werden soll, wenn festgestellt wird, dass Änderungen nicht mit „Änderungen übernehmen“ kompatibel sind. Diese zusätzliche Kontrolle sollte Ihnen im Vergleich zum Verhalten von Instant Run ein konsistenteres und vorhersehbareres Erlebnis bieten.
Im Blogbeitrag werden weiterhin einige Einschränkungen der neuen Funktionalität aufgeführt. Beispielsweise muss das Gerät, auf dem Sie Ihre App testen, zumindest ausgeführt werden Android 8.0 Oreo (API Level 26) und es gibt bestimmte Codeänderungen, die dennoch einen Neustart Ihrer App erfordern. Wie bei „Instant Run“ erzwingt „Apply Changes“ einen Neustart Ihrer App, wenn Sie:
- Hinzufügen oder Löschen einer Klasse, Methode oder eines Felds
- Ändern des Manifests
- Methodensignaturen ändern
- Modifikatoren von Methoden oder Klassen ändern
- Klassen umbenennen
- Klassenvererbung ändern
- Hinzufügen oder Entfernen einer Ressource
Unter „Bekannte Probleme“ heißt es in dem Blogbeitrag, dass „Änderungen übernehmen“ manchmal ausgeführt wird, da Google bei dieser neuen Funktion ursprünglich der Stabilität Vorrang vor der Leistung eingeräumt hat langsamer als seine Vorgängerfunktion „Instant Run“. Außerdem werden x86_x64-Emulator-Images nicht unterstützt und zu Debugging-Zwecken nur Android Pie (API Level 28). unterstützt. Die vollständige Liste der Einschränkungen und bekannten Probleme finden Sie unter dem folgenden Quelllink.
Für eine detailliertere Beschreibung des Unterschieds zwischen „Änderungen anwenden“ und „Instant Run“ hatte ein Google-Mitarbeiter im Android Studio-Team folgendes zu sagen Reddit:
Es macht etwas ganz, ganz anderes. Instant Run hatte einen sehr spezifischen Einfluss auf den Build, indem es jede Ihrer Klassen zur Kompilierungszeit instrumentierte, um sie darauf vorzubereiten, während der Laufzeit durch eine neue Version der Klasse ersetzt zu werden. Außerdem wird Ihr APK in mehrere APKs aufgeteilt, um Ihre App schrittweise erneut hochzuladen.
„Änderungen anwenden“ macht nichts Vergleichbares. Ihr APK ist weitgehend dasselbe, unabhängig davon, ob Sie „Änderungen anwenden“ verwenden oder nicht. Stattdessen stützt es sich auf neue Laufzeitinstrumentierungsfunktionen der ART VM, um Klassen dynamisch neu zu laden und zu ersetzen, während die App ausgeführt wird. Aus diesem Grund sind viel neuere Android-Versionen erforderlich.
„Änderungen anwenden“ wird voraussichtlich irgendwann „Instant Run“ in den Beta- und Stable-Kanälen ersetzen, da Google seine Leistung und Stabilität verbessert.
Quelle: Android Developers Blog