Veranstaltungen und Programme
App mit R8 verkleinern, optimieren und beschleunigen
Lesezeit: 5 Minuten
App mit R8 verkleinern, optimieren und beschleunigen
Willkommen zum ersten Tag der Android Performance Spotlight Week!
Wir beginnen mit der wirkungsvollsten Änderung, die Sie mit wenig Aufwand vornehmen können, um die Leistung Ihrer App zu verbessern: Aktivieren Sie den R8-Optimierer im vollständigen Modus.
Sie kennen R8 wahrscheinlich bereits als Tool zum Verkleinern der App-Größe. Es entfernt nicht verwendeten Code und nicht verwendete Ressourcen und reduziert so die Größe Ihrer App. Die eigentliche Stärke von R8 liegt jedoch in der Optimierung.
Wenn Sie den vollständigen Modus aktivieren und Optimierungen zulassen, führt R8 umfassende Optimierungen des gesamten Programms durch und schreibt Ihren Code so um, dass er grundlegend effizienter ist. Das ist nicht nur eine kleine Anpassung.
Nachdem Sie diesen Artikel gelesen haben, sehen Sie sich die Einführung zum R8-Optimierer in der Performance Spotlight Week auf YouTube an.
So verbessert R8 die Leistung Ihrer App
Sehen wir uns die wichtigsten Schritte an, die der R8-Optimierer unternimmt, um die App-Leistung zu verbessern.
Tree Shaking ist der wichtigste Schritt zur Reduzierung der App-Größe. In dieser Phase entfernt der R8-Optimierer nicht verwendeten Code aus Bibliotheken, von denen Ihre App abhängt, sowie toten Code aus Ihrer eigenen Codebasis.
Bei der Methodeninlining wird ein Methodenaufruf durch den tatsächlichen Code ersetzt, was die Laufzeitleistung verbessert.
Klassenzusammenführung und andere Strategien werden angewendet, um den Code kompakter zu machen. Alle Ihre schönen Abstraktionen wie Schnittstellen und Klassenhierarchien spielen an dieser Stelle keine Rolle und werden wahrscheinlich entfernt.
Bei der Code-Minifizierung werden die Namen von Klassen, Feldern und Methoden in kürzere, bedeutungslose Namen geändert. Statt MyDataModel haben Sie dann möglicherweise eine Klasse namens a. Das führt zu den meisten Verwirrungen beim Lesen von Stacktraces aus einer mit R8 optimierten App. (Wir haben das in AGP 9.0 verbessert.)
Durch die Ressourcenreduzierung wird die Größe einer App weiter reduziert, indem nicht verwendete Ressourcen wie XML-Dateien und Drawables entfernt werden.
Durch diese Schritte verbessert der R8-Optimierer die App-Startzeiten, ermöglicht ein flüssigeres UI-Rendering mit weniger langsamen und eingefrorenen Frames und verbessert die allgemeine Ressourcennutzung auf dem Gerät.
Fallstudie: Leistungsverbesserungen bei Reddit mit R8
Ein Beispiel für die Leistungsverbesserungen, die R8 bringen kann, ist Reddit. Nachdem R8 im vollständigen Modus aktiviert wurde, gab es bei der Reddit-App für Android in verschiedenen Bereichen erhebliche Leistungsverbesserungen.
Bildunterschrift: So hat R8 die Leistung der Reddit App verbessert
Das Team beobachtete einen 40% schnelleren Kaltstart, eine 30% ige Reduzierung der „App antwortet nicht“-Fehler (ANR), eine 25% ige Verbesserung des Frame-Renderings und eine 14% ige Reduzierung der App-Größe.
Diese Verbesserungen sind entscheidend für die Nutzerzufriedenheit. Ein schnellerer Start bedeutet weniger Wartezeit und schnelleren Zugriff auf Inhalte. Weniger ANRs führen zu einer stabileren und zuverlässigeren App und reduzieren die Frustration der Nutzer. Durch das flüssigere Frame-Rendering werden UI-Ruckler vermieden, sodass sich das Scrollen und die Animationen flüssig und reaktionsschnell anfühlen. Diese positiven technischen Auswirkungen waren auch in der Nutzerstimmung deutlich sichtbar.
Weitere Informationen zu den Verbesserungen finden Sie in unserem Blog.
Nichttechnische Auswirkungen der Verwendung von R8
Bei unserer Zusammenarbeit mit Partnern haben wir festgestellt, dass diese technischen Verbesserungen sich direkt auf die Nutzerzufriedenheit auswirken und sich in der Nutzerbindung, den Nutzerinteraktionen und der Sitzungslänge widerspiegeln können. Auch die Nutzer – Wiederkehrrate, die mit täglich, wöchentlich oder monatlich aktiven Nutzern gemessen werden kann, wurde durch die Verbesserungen der technischen Leistung positiv beeinflusst. Außerdem haben wir festgestellt, dass die App-Bewertungen im Google Play Store mit der Einführung von R8 gestiegen sind. Wenn Sie diese Informationen mit Ihren Produktinhabern, CTOs und Entscheidungsträgern teilen, können Sie die Leistung Ihrer App beschleunigen.
Nennen wir es so, wie es ist: Eine bewusste Leistungsoptimierung ist eine Tugend.
So erhalten Sie eine leistungsstärkere App
Wir haben gehört, dass unsere Entwicklerleitfäden für R8 verbessert werden müssen. Also haben wir uns an die Arbeit gemacht. Die Entwicklerleitfäden für den R8-Optimierer sind jetzt viel praxisorientierter und bieten umfassende Anleitungen zum Aktivieren und Debuggen von R8.
Die Dokumentation enthält eine allgemeine Strategie für die Einführung und betont, wie wichtig es ist, optimierungsfreundliche Bibliotheken auszuwählen und die Funktionen von R8 schrittweise einzuführen, um die Stabilität zu gewährleisten. Mit diesem schrittweisen Ansatz können Sie die Vorteile von R8 sicher nutzen und erhalten gleichzeitig Anleitungen zu Problemen, die schwer zu debuggen sind.
Wir haben unsere Anleitungen zu Keep-Regeln erheblich erweitert. Diese Regeln sind der primäre Mechanismus zur Steuerung des R8-Optimierers. Wir bieten jetzt einen Abschnitt zu Keep-Regeln, zur Anwendung und zu Best Practices für das Schreiben und Verwalten von Keep-Regeln. Außerdem bieten wir praktische und umsetzbare Anwendungsfälle und Beispiele, die Ihnen helfen zu verstehen, wie Sie verhindern können, dass R8 Code entfernt, der zur Laufzeit benötigt wird, z. B. Code, auf den über Reflection zugegriffen wird, oder die Verwendung der nativen JNI-Schnittstelle.
Die Dokumentation umfasst jetzt auch wichtige Folgeschritte und erweiterte Szenarien. Wir haben einen Abschnitt zum Testen und zur Fehlerbehebung hinzugefügt, damit Sie die Leistungssteigerungen überprüfen und potenzielle Probleme beheben können. Im Abschnitt zu erweiterten Konfigurationen wird erläutert, wie Sie bestimmte Build-Varianten auswählen und anpassen können, welche Ressourcen beibehalten oder entfernt werden. Außerdem werden spezielle Optimierungsanweisungen für Bibliotheksautoren angeboten, damit Sie ein optimiertes und R8-freundliches Paket für andere Entwickler bereitstellen können.
Das volle Potenzial des R8-Optimierers nutzen
Der R8-Optimierer verwendet seit Version 8.0 des Android Gradle-Plug-ins standardmäßig den vollständigen Modus. Wenn Ihr Projekt über viele Jahre hinweg entwickelt wurde, enthält es möglicherweise noch ein Legacy-Flag, um es zu deaktivieren. Suchen Sie in der Datei gradle.properties nach dieser Zeile und entfernen Sie sie.
android.enableR8.fullMode=false // delete this line to enable R8's full potential
Prüfen Sie jetzt, ob Sie R8 in der Datei build.gradle.kts Ihrer App für die Release-Variante aktiviert haben. Sie wird aktiviert, indem Sie isMinifyEnabled und isShrinkResources auf „true“ setzen. In diesem Schritt können Sie auch Standard- und benutzerdefinierte Konfigurationsdateien übergeben.
release {
isMinifyEnabled = true
isShrinkResources = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"keep-rules.pro"
)
}Fallstudie: Leistungsverbesserungen bei Disney+
Die Entwickler bei Disney+ investieren in die App-Leistung und optimieren die Nutzererfahrung der App. Manchmal können schon scheinbar kleine Änderungen große Auswirkungen haben. Bei der Überprüfung der R8-Konfiguration stellte das Team fest, dass das Flag -dontoptimize verwendet wurde. Es wurde durch eine Standardkonfigurationsdatei eingeführt, die auch heute noch in vielen Apps verwendet wird.
Nachdem proguard-android.txt durch proguard-android-optimize.txt ersetzt wurde, verzeichnete das Disney+-Team erhebliche Verbesserungen bei der Leistung der App.
Nachdem eine neue Version der App mit dieser Änderung für Nutzer eingeführt wurde, stellte Disney+ einen 30% schnelleren App-Start und 25% weniger ANRs fest, die von Nutzern wahrgenommen wurden.
Viele Apps verwenden heute noch die Datei proguard-android.txt, die das Flag -dontoptimize enthält. Hier kommen unsere Toolverbesserungen ins Spiel.
Tool-Support
Ab dem Feature Drop für Android Studio Narwhal 3 wird eine Lint-Warnung angezeigt, wenn Sie proguard-android.txt
Ab AGP 9.0 stellen wir den Support für die Datei vollständig ein. Das bedeutet, dass Sie zu proguard-android-optimize.txt migrieren müssen.
Wir haben auch in neue Android Studio-Funktionen investiert, um das Debuggen von mit R8 optimiertem Code einfacher als je zuvor zu gestalten. Ab AGP 9.0 können Sie Stacktraces in Logcat von Android Studio für mit R8 verarbeitete Builds automatisch deobfuskieren. So können Sie die genaue Codezeile ermitteln, die ein Problem verursacht, auch in einer vollständig optimierten App. Das wird im morgigen Blogpost zu dieser Android Performance Spotlight Week ausführlicher behandelt.
Nächste Schritte
Sehen Sie sich die Einführung zum R8-Optimierer in der Performance Spotlight Week auf YouTube an.
📣 Nehmen Sie an der Performance Challenge teil!
Überzeugen Sie sich selbst von den Vorteilen.
Wir fordern Sie auf, den vollständigen Modus von R8 für Ihre App noch heute zu aktivieren.
- Folgen Sie unserer Entwicklerleitfäden, um loszulegen: App-Optimierung aktivieren.
- Prüfen Sie, ob Sie noch
proguard-android.txtverwenden, und ersetzen Sie sie durchproguard-android-optimize.txt. - Messen Sie dann die Auswirkungen. Spüren Sie nicht nur den Unterschied, sondern überprüfen Sie ihn. Messen Sie die Leistungssteigerungen, indem Sie den Code aus unserer Macrobenchmark-Beispiel-App auf GitHub anpassen, um die Startzeiten vor und nach der Optimierung zu messen.
Wir sind zuversichtlich, dass Sie eine erhebliche Verbesserung der Leistung Ihrer App feststellen werden. Verwenden Sie bei Fragen zur Aktivierung oder Fehlerbehebung von R8 den Hashtag #optimizationEnabled. Wir helfen Ihnen gerne weiter.
Fragen für die Ask Android-Sitzung am Freitag einreichen
Verwenden Sie den Social-Tag #AskAndroid, um Fragen zur Leistung einzureichen. Wir beobachten Ihre Fragen die ganze Woche über und beantworten einige davon am Freitag, 21. November, in der Ask Android-Sitzung zur Leistung. Bleiben Sie dran, denn morgen werden wir noch tiefer in das Debuggen und die Fehlerbehebung eintauchen. Beginnen Sie jetzt mit R8 und beschleunigen Sie Ihre App.
Weiterlesen
-
Veranstaltungen und Programme
Von den grundlegenden Funktionen des R8-Optimierers und der profilgesteuerten Optimierung über Leistungsverbesserungen mit Jetpack Compose bis hin zu einem neuen Leitfaden zur Verbesserung der Leistung Ihrer App haben wir die Tools mit geringem Aufwand und großer Wirkung behandelt, die Sie zum Erstellen einer leistungsstarken App benötigen.
Ben Weiss, Sara Hamilton • Lesezeit: 3 Minuten
-
Veranstaltungen und Programme
Wir nehmen Bewerbungen für das Android XR Developer Catalyst Program entgegen. Dieses Programm wurde speziell entwickelt, um die Entwicklung von Android XR-Apps zu beschleunigen, die innerhalb des nächsten Jahres eingeführt werden sollen.
Lesezeit: 1 Minute
-
Veranstaltungen und Programme
Der Zeitplan für die Google I/O ist da!
Lesezeit: 1 Minute
Auf dem Laufenden bleiben
Lassen Sie sich Woche für Woche die neuesten Informationen zur Android-Entwicklung zusenden.