Größe der Instant-App reduzieren

Google Play Instant bietet vielfältige, native Funktionen direkt im Web . Nutzer können deine App ohne vorherige Installation verwenden, wodurch eine und die Qualität der Interaktion erhöhen. Damit eine Instant-App so schnell geladen wird wie bei einer herkömmlichen mobilen Webseite. Sie müssen jedoch eine gut strukturierte, eine effiziente Instant-App. Je kleiner das Binärprogramm deiner Instant App, desto schneller und desto reibungsloser ist die User Experience.

Dieses Dokument enthält Best Practices für die Verwaltung der Struktur und binäre Größe für eine reibungslose Instant-App-Erfahrung. Sie können dieselben um auch Ihre installierbare App zu nutzen.

In mehrere Funktionsmodule refaktorieren

Die größte Verbesserung der Binärgröße Ihrer App tritt auf, wenn Sie die App in mehrere Funktionsmodule. Mit einem Basisfeature beginnen Modul und thematisch zusammenhängende Workflows in eigene Funktionsmodule extrahieren. Weisen Sie jedem Funktionsmodul eine Startaktivität und eine eindeutige URL zu, damit Benutzer den Workflow des Moduls erfolgreich abschließen kann.

Halten Sie das Basisfunktionsmodul beim Erstellen von Funktionsmodulen möglich. Achten Sie besonders auf die Bereiche Ihrer App, benötigen Zugriff auf Ihre abhängigen Bibliotheken. Wenn nur ein Funktionsmodul einer bestimmten Bibliothek, importieren Sie diese Bibliothek in das Feature-Modul selbst, nicht in die Basis Funktionsmodul. Wenn Sie eine Instant-App für einen eines bestimmten Funktionsmoduls, die Gesamtgröße des Elements Modul und das Basisfunktionsmodul müssen kleiner als 15 MB sein.

Best Practices

Beachten Sie bei der Refaktorierung Ihrer App die folgenden Best Practices:

Für beide App-Typen dieselbe Codebasis verwenden
Sie können den Projektmanagementprozess Ihrer App vereinfachen, indem Sie dieselben modulare Codebasis, um sowohl deine installierten als auch deine Instant Apps zu erstellen.
Entwicklung für mehrere Funktionsmodule
Auch wenn deine App nur einen Workflow hat und nur eine Funktion erfordert ist es vorerst immer noch eine gute Idee, ein Design für mehrere Funktionsmodule zu erstellen. So können Sie Ihrer App vorhandene Module hinzufügen, ohne dass dies Auswirkungen auf des ursprünglichen Funktionsmoduls.
Konzentrieren Sie sich zu Beginn nicht auf die Größenbeschränkung des Featuremoduls.
Größenbeschränkungen für Funktionsmodulen gelten nicht für lokal erstellte Binärdateien. Sie können veröffentlichen Sie eine Instant-App auch über den internen Test-Track, Maximale Größe von Funktionsmodulen: 15 MB Nur die alpha- und In Produktions-Tracks gilt das Limit von 15 MB.

App-Ressourcen aktualisieren

Einige Apps, insbesondere solche mit längeren Codebase-Verläufen, enthalten Ressourcen, die die Binärdateien Ihrer Anwendung nicht mehr verwenden. Wenn Sie nach Möglichkeiten suchen, die Module Ihrer App kleiner sind, sollten Sie folgende häufige Ursachen für überflüssige Code.

Dateigröße von Bildern verringern

Du kannst die Gesamtgröße der Drawables deiner App deutlich reduzieren, indem du das WebP Dateiformat anstelle von PNG verwenden. Google Play Instant bietet umfassenden Support für WebP, einschließlich Transparenz und verlustfreier Komprimierung, bleibt gleich.

Entfernen Sie nach Möglichkeit alle Anforderungen an die Abwärtskompatibilität für die Verwendung anderer PNGs. Bilder. Wenn Sie PNG-Bilder verwenden müssen, platzieren Sie diese in dem Modul, das für die um Ihre App zu erstellen und zu installieren.

Nicht verwendete Sprachen entfernen

Wenn deine App mehrere Sprachen unterstützt, entferne so viele lokalisierte Ressourcen wie wie möglich. Dieser Schritt ist besonders nützlich, wenn Sie eine App Kompatibel“ , z. B. android.support.v7.appcompat. Diese Mediathek enthält Nachrichten in vielen Sprachen, von denen deine App möglicherweise werden nicht unterstützt.

Weitere Informationen finden Sie im Hilfeartikel Nicht verwendete Alternativen entfernen Ressourcen, insbesondere nicht verwendeten Sprachen.

Überflüssige Dateien entfernen

Einige der Ressourcen, in die Sie importiert haben, werden von Ihrer Anwendung möglicherweise nicht mehr verwendet für Ihr Projekt. Um diese Ressourcen zu entfernen, gibt es in Android Studio eine Lint-Prüfung für diese spezielle Situation. So verwenden Sie das Tool:

  1. Drücken Sie Strg + Alt + Umschalttaste + I bzw. Befehlstaste + Alt + Umschalt + I (Mac OS).
  2. Geben Sie im angezeigten Dialogfeld "unused resources" ein.
  3. Wählen Sie die Option Nicht verwendete Ressourcen aus, um die Ressourcennutzung zu starten. Inspektionsprozess.

Wenn große Ressourcen in Ihrer App verbleiben, überlegen Sie, ob es möglich ist, entpacken Sie sie aus Ihrer App und laden Sie sie nach dem der Nutzer beginnt, mit Ihrer App zu interagieren. Diese Art von Verzögerungen beim Laden von Bildern erfordert in der Regel eine Codeänderung. Dies kann jedoch die App-Dateigröße, indem nur die Ressourcen heruntergeladen werden, die ein Nutzer explizit -Anfragen.

Nicht verwendete Bibliotheken entfernen

Mit zunehmendem Umfang einer App kann sie eine überraschende Anzahl von Abhängigkeiten annehmen, insbesondere der folgenden Typen:

  • Native Bibliotheken:Bibliotheken, die nativen Code enthalten, den Ihre Instant-App die App nie ausgeführt wird.
  • Transitive Abhängigkeiten:Bibliotheken, in die Ihre Anwendung importiert wird hängt davon ab,

Android Studio bietet mehrere nützliche Tools, mit denen Sie irrelevante Abhängigkeiten im Projekt Ihrer Anwendung:

Externe Bibliotheken

Die Ansicht Projekt in Android Studio enthält den Abschnitt Externe Bibliotheken.

Dieser Bereich enthält alle Bibliotheken, die in Ihrer App verwendet werden, einschließlich nativer und alle transitiven Abhängigkeiten. Suchen Sie in dieser Ansicht nach nicht verwendeten oder duplizierten die deine App nicht benötigt.

APK-Analysetool

Sie können das Tool APK Analyzer verwenden, um einschließlich Instant-App-Builds.

Nachdem Sie ermittelt haben, welche Bibliotheken Ihre App nicht benötigt, schließen Sie sie aus, Fügen Sie Ihrer Gradle-Build-Datei Zeilen wie diese hinzu:

<feature_module>/build.gradle

Cool

dependencies {
    implementation('some-important-but-large-library') {
        exclude group: 'com.example.imgtools', module: 'native'
    }
}

Kotlin

dependencies {
    implementation('some-important-but-large-library') {
        exclude(group = "com.example.imgtools", module = "native")
    }
}

Weitere Informationen zum Reduzieren der Gesamtgröße des Imports finden Sie im Gradle-Leitfaden unter Abhängigkeit Verwaltung.

Cloud-Bereitstellung von Assets implementieren

Wenn Sie die Größe weiter reduzieren möchten, müssen Sie sich möglicherweise auf die Bereitstellung von Assets in der Cloud verlassen.