Profielgestuurde optimalisatie voor Android-app-opstart

We hebben onze Android cold start verkort van 1,2s naar 380ms.

De meeste apps draaien tijdens de eerste lancering in de langzaamste compilatiemodus. Android gebruikt de "interpret-only"-modus wanneer een gebruiker je app voor het eerst installeert. Dit maakt je opstarttijd traag. Het systeem optimaliseert code pas later tijdens inactiviteit.

Je kunt dit oplossen met een driestaps-pipeline.

  1. Genereer Baseline Profiles Baseline Profiles vertellen het systeem welke classes tijdens de installatie moeten worden gecompileerd. Gebruik Macrobenchmark om deze in je CI-pipeline te maken. Onze profielen besloegen 12% van de methoden, maar waren verantwoordelijk voor 94% van de opstarttijd.

  2. Schakel DEX Layout Reordering in Dit is één regel in je Gradle-properties. Het vertelt R8 om startup-classes te groeperen in je DEX-bestand. Dit vermindert page faults met 30% tot 50%. Wanneer classes bij elkaar blijven, laadt het systeem minder nutteloze gegevens van de schijf.

  3. Gebruik Cloud Profiles Google Play verzamelt profielen van gebruikers en stuurt deze naar nieuwe installaties. Dit versterkt je snelheidswinst.

De resultaten van ons testen:

Belangrijke tips voor je workflow:

Stapel deze lagen op elkaar om snellere apps te bouwen.

Bron: https://dev.to/software_mvp-factory/profile-guided-optimization-for-android-app-startup-2i7a