App-Größe reduzieren

Eine geringe App-Größe hängt direkt mit dem Erfolg des Downloads zusammen, insbesondere in aufstrebenden Märkten mit schlechter Netzwerkverbindung oder geringen Netzwerkgeschwindigkeiten. Dies kann zu niedrigeren App-Nutzungsraten führen, was wiederum den Umfang und die Reichweite Ihrer Zielgruppe verringert. Es gibt jedoch mehrere Möglichkeiten, die Größe Ihrer App zu reduzieren.

Best Practices

App als Android App Bundle hochladen

Am einfachsten kannst du bei der Veröffentlichung bei Google Play sofort deine App-Größe sparen, wenn du deine App als Android App Bundle hochlädst. Dies ist ein neues Veröffentlichungsformat, das den gesamten kompilierten Code und alle Ressourcen deiner App enthält und die APK-Erstellung und -Signierung bei Google Play aufschiebt.

Laufzeitcodegröße reduzieren

Prüfen Sie Code, den Ihre Anwendung zur Laufzeit nicht verwendet, z. B. große Klassen oder automatisch generierten Code. Codeoptimierer wie R8 können dabei helfen, die Codegröße zu optimieren und zu verkleinern, aber sie können nicht mit Code umgehen, der durch Laufzeitkonstanten geschützt ist. Ersetzen Sie die Prüf-Flags durch Compile-Zeitkonstanten, um die verschiedenen Optimierungstools optimal zu nutzen. Sie können das Kürzen von Code und Ressourcen in Ihrer Gradle-Konfigurationsdatei aktivieren:

android {
    buildTypes {
        getByName("release") {
            isMinifyEnabled = true
            isShrinkResources = true
        }
    }
}

Nicht benötigte Layouts entfernen

Führen Sie nicht verwendete Layouts mit kleinen Änderungen an der Benutzeroberfläche zusammen und entfernen Sie alle unnötigen Layouts, um die Größe des App-Codes zu reduzieren. Außerdem können Sie Layouts und Ansichten nach Möglichkeit dynamisch rendern. So vermeiden Sie das Zeichnen statischer Vorlagen und das Anwenden alternativer Layouts ohne technischen Aufwand.

Selten verwendete Funktionen neu bewerten

Optimieren Sie insbesondere für Android (Go-Edition) durch Deaktivieren von Funktionen mit niedrigen Messwerten für aktive Nutzer pro Tag. Beispiele dafür sind das Entfernen komplexer Animationen, großer GIF-Dateien oder anderer ästhetischer Ergänzungen, die für den Erfolg einer App nicht erforderlich sind.

Dynamic Delivery nutzen

Play Feature Delivery verwendet erweiterte Funktionen von App Bundles, damit bestimmte Funktionen deiner App bedingt bereitgestellt oder bei Bedarf heruntergeladen werden können. Sie können Funktionsmodule für eine benutzerdefinierte Bereitstellung verwenden. Ein einzigartiger Vorteil von Funktionsmodulen ist die Möglichkeit, anzupassen, wie und wann verschiedene Funktionen deiner App auf Geräte mit Android 5.0 (API-Level 21) oder höher heruntergeladen werden.

Größe des übersetzbaren Strings reduzieren

Mit dem Android-Gradle-Attribut resConfigs können Sie alternative Ressourcendateien entfernen, die Ihre App nicht benötigt. Wenn Sie eine Bibliothek verwenden, die Sprachressourcen enthält (z. B. AppCompat oder Google Play Services), enthält Ihre App unabhängig von der App-Übersetzung alle übersetzten Sprachstrings für Bibliotheksnachrichten. Wenn Sie nur die Sprachen behalten möchten, die Ihre App offiziell unterstützt, können Sie diese Sprachen über das Attribut resConfig angeben. Alle Ressourcen für nicht angegebene Sprachen werden entfernt.

Wenn Sie Ihre Sprachressourcen auf Englisch und Französisch beschränken möchten, können Sie defaultConfig so bearbeiten:


android {
    defaultConfig {
        ...
        resConfigs "en", "fr"
    }
}

Selektive Übersetzung verwenden

Wenn ein bestimmter String nicht in der UI der Anwendung sichtbar ist, müssen Sie ihn nicht übersetzen. Strings für die Fehlerbehebung, Ausnahmemeldungen oder URLs sollten Stringliterale im Code und nicht Ressourcen sein.

Übersetzen Sie URLs beispielsweise nicht.

<string name="car_frx_device_incompatible_sol_message">
  This device doesn\'t support Android Auto.\n
  &lt;a href="https://support.google.com/androidauto/answer/6395843"&gt;Learn more&lt;/a&gt;
</string>

Möglicherweise erkennen Sie &lt; und &gt, da dies Escape-Zeichen für < und > sind. Sie werden hier benötigt, denn wenn Sie ein <a>-Tag in ein <string>-Tag einfügen, löscht der Android-Ressourcencompiler sie, da er das Tag nicht erkennt. Das bedeutet jedoch, dass Sie die HTML-Tags und die URL in 78 Sprachen übersetzen. Stattdessen können Sie den HTML-Code entfernen:

<string name="car_frx_device_incompatible_sol_message">
         This device doesn\'t support Android Auto.
</string>

Native Binärdateien mit gemeinsamen Abhängigkeiten kombinieren

Wenn Ihre Anwendung verschiedene JNI-Implementierungen (Java Native Interface) mit gemeinsamen zugrunde liegenden Abhängigkeiten hat, erhöhen die verschiedenen Binärprogramme die APK-Größe mit redundanten Komponenten. Sie können mehrere JNI-Binärdateien zu einer einzigen JNI-Binärdatei kombinieren und dabei die Java- und JNI-Dateien trennen. Dadurch kann die APK-Größe erheblich reduziert werden.