Geringere Datenkosten für Milliarden
Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
In einigen Ländern können Datenvolumen bis zu 10% des monatlichen Durchschnittseinkommens eines Nutzers kosten. Das bedeutet, dass die Minimierung der Downloadgröße Ihrer App und die Möglichkeit für Nutzer, die Datennutzung Ihrer App zu steuern, für viele Nutzer einen großen, spürbaren Vorteil haben kann. Durch die Minimierung der Downloadgröße wird auch Speicherplatz im internen Speicher gespart, der auf einigen Geräten nur begrenzt verfügbar ist.
Hier finden Sie einige Strategien, mit denen Sie die Datenmenge optimieren können, die Ihre App sowohl über das Netzwerk als auch im internen Speicher verwendet.
App-Größe reduzieren
Die App-Größe zu reduzieren ist eine der grundlegenden Möglichkeiten, Nutzern zu helfen, weniger Daten zu verbrauchen – sowohl Netzwerkdaten als auch internen Speicher. In diesem Abschnitt werden verschiedene Ansätze zur Reduzierung der App-Größe beschrieben.
Größe der grafischen Assets im APK reduzieren
- Grafische Assets tragen oft am meisten zur Größe des APK bei. Wenn Sie diese optimieren, können Sie die Downloadgröße verringern und so die Installationszeiten für Nutzer verkürzen.
- Verwenden Sie für grafische Assets wie Symbole das SVG-Format (Scalable Vector Graphics). SVG-Bilder sind im Vergleich zu Bitmap-Grafiken sehr klein und können zur Laufzeit in beliebiger Auflösung gerendert werden. Die Android Support Library bietet eine abwärtskompatible Implementierung für Vektorressourcen für Android 2.1 (API-Level 7).
Erste Schritte mit Vektoren
- Verwenden Sie für Bilder ohne Vektoren, z. B. Fotos, das WebP-Format, um die Ladezeiten von Bildern zu verkürzen und Netzwerkbandbreite zu sparen. WebP führt nachweislich zu kleineren Dateigrößen als PNG und JPG bei mindestens derselben Bildqualität. Selbst bei verlustbehafteten Einstellungen kann WebP ein nahezu identisches Bild wie das Original erzeugen. Android unterstützt verlustbehaftetes WebP seit Android 4.0 (API-Level 14: Ice Cream Sandwich) und verlustfreies, transparentes WebP seit Android 4.2 (API-Level 17: Jelly Bean).
- Wenn Sie viele große Bilder mit unterschiedlichen Dichten haben, sollten Sie die Unterstützung für mehrere APKs verwenden, um Ihr APK nach Dichte aufzuteilen. So werden Builds für bestimmte Dichten erstellt. Nutzer mit Geräten mit niedriger Dichte müssen also keine ungenutzten Assets mit hoher Dichte herunterladen.
- Weitere Informationen zum Reduzieren der APK-Größe finden Sie unter APK-Größe reduzieren und Code und Ressourcen verkleinern. Außerdem finden Sie in
dieser Reihe von Medium-Beiträgen eine detaillierte Anleitung zum Verringern der APK-Größe.
Codegröße reduzieren
- Jede Bibliothek in Ihrem Android-Projekt fügt dem APK potenziell ungenutzten Code hinzu. Seien Sie besonders vorsichtig bei der Verwendung externer Bibliotheken, da nicht alle Bibliotheken für die Verwendung in mobilen Apps konzipiert sind. Achten Sie darauf, dass die Bibliotheken, die Ihre App verwendet, für die mobile Nutzung optimiert sind.
- Sie können Ihren kompilierten Code mit einem Tool wie ProGuard optimieren. ProGuard identifiziert nicht verwendeten Code und entfernt ihn aus Ihrem APK.
Aktivieren Sie außerdem das Verkleinern von Ressourcen zur Build-Zeit, indem Sie
minifyEnabled=true
, shrinkResources=true
in build.gradle
festlegen. Dadurch werden nicht verwendete Ressourcen automatisch aus Ihrem APK entfernt.
- Wenn Sie die Google Play-Dienste verwenden, sollten Sie
nur die erforderlichen APIs selektiv in Ihre APK einbinden.
- Weitere Informationen zum Reduzieren der Codegröße in Ihrem APK finden Sie im Android-Training zum Thema Dependency-Injection-Frameworks vermeiden.
App auf externen Speicher (SD-Karte) verschieben
- Günstige Geräte haben oft wenig Speicherplatz. Nutzer können den Speicherplatz mit SD-Karten erweitern. Apps müssen jedoch explizit angeben, dass sie die Installation auf externen Speichermedien unterstützen, bevor Nutzer sie verschieben können.
- Ermöglichen Sie die Installation Ihrer App auf einem externen Speicher mit dem Flag
android:installLocation
in der Datei „AndroidManifest.xml“. Weitere Informationen dazu, wie Sie Ihre App für die Übertragung auf externen Speicher aktivieren, finden Sie im Android-Leitfaden zum Installationsort von Apps.
Speicherplatzbedarf der App nach der Installation reduzieren
- Wenn Ihre App wenig Speicherplatz benötigt, ist es weniger wahrscheinlich, dass Nutzer sie deinstallieren, wenn auf dem Gerät nur noch wenig freier Speicherplatz verfügbar ist. Es ist wichtig, Grenzen für Ihre Caches festzulegen, damit die Festplattennutzung Ihrer App nicht unbegrenzt ansteigt. Speichern Sie Ihre zwischengespeicherten Daten in
getCacheDir()
. Das System kann Dateien, die sich hier befinden, bei Bedarf löschen. Sie werden also nicht als Speicherplatz angezeigt, der für die App reserviert ist.
Konfigurierbare Netzwerknutzung anbieten
Die Android-Plattform bietet eine Reihe von Möglichkeiten, mit denen Sie Nutzern die Kontrolle über die Netzwerknutzung Ihrer App geben und sie für ihre eigenen Bedürfnisse optimieren können. Bei der ersten Verwendung kann Ihre App den Nutzer beispielsweise durch eine Reihe von netzwerkbezogenen Einstellungen führen.
Sie können auch von außerhalb der App einen Bildschirm mit Netzwerkeinstellungen bereitstellen.
Onboarding-Prozesse für die Netzwerkauswahl der Nutzer bereitstellen
- Apps, die es Nutzern ermöglichen, den Datenverbrauch zu reduzieren, kommen gut an, auch wenn sie einen hohen Datenverbrauch haben. Wenn Ihre App viel Bandbreite verbraucht (z. B. bei Videostreaming-Apps), können Sie Nutzern eine Anleitung zur Konfiguration der Netzwerknutzung geben. Sie könnten dem Nutzer beispielsweise erlauben, Video-Streams mit niedrigerer Bitrate in Mobilfunknetzen zu erzwingen.
- Zusätzliche Einstellungen für Nutzer, mit denen sie die Datensynchronisierung, das Prefetching und das Verhalten bei der Netzwerknutzung steuern können (z. B. alle mit Sternchen markierten Nachrichtenkategorien nur über WLAN vorab abrufen), helfen Nutzern außerdem, das Verhalten Ihrer App an ihre Bedürfnisse anzupassen.
- Weitere Informationen zum Verwalten der Netzwerknutzung finden Sie im Android-Training Managing Network Usage.
Bildschirm für Netzwerkeinstellungen bereitstellen
- Sie können die Netzwerkeinstellungen der App über einen Bildschirm mit Netzwerkeinstellungen aufrufen, ohne die App zu öffnen. Sie können diesen Bildschirm entweder über die Systemeinstellungen oder über den Bildschirm zur Systemdatennutzung aufrufen.
- Wenn Sie einen Bildschirm mit Netzwerkeinstellungen bereitstellen möchten, auf den Nutzer sowohl über Ihre App als auch über die Systemeinstellungen zugreifen können, müssen Sie in Ihre App eine Aktivität einfügen, die die Aktion
ACTION_MANAGE_NETWORK_USAGE
unterstützt.
- Weitere Informationen zum Hinzufügen eines Bildschirms für Netzwerkeinstellungen finden Sie im Android-Training
Implementing a Preferences Activity.
Zusätzliche Ressourcen
Weitere Informationen zu diesem Thema finden Sie in den folgenden zusätzlichen Ressourcen:
Blogposts
Alle Inhalte und Codebeispiele auf dieser Seite unterliegen den Lizenzen wie im Abschnitt Inhaltslizenz beschrieben. Java und OpenJDK sind Marken oder eingetragene Marken von Oracle und/oder seinen Tochtergesellschaften.
Zuletzt aktualisiert: 2025-07-27 (UTC).
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Benötigte Informationen nicht gefunden","missingTheInformationINeed","thumb-down"],["Zu umständlich/zu viele Schritte","tooComplicatedTooManySteps","thumb-down"],["Nicht mehr aktuell","outOfDate","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Problem mit Beispielen/Code","samplesCodeIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 2025-07-27 (UTC)."],[],[],null,["# Reduced data cost for billions\n\n\u003cbr /\u003e\n\n\nData plans in some countries can cost upwards of 10% of a typical user's monthly income. This\nmeans that minimizing your app's download size and letting the user control how your app uses\ndata can have a large, tangible benefit to many users. Minimizing download size also helps\nconserve space in internal storage, which is a scarce resource in some devices.\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\nHere you can find some strategies to help optimize the amount of data your app uses, both over\nthe network and in internal storage.\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\nReduce app size\n---------------\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\nReducing app size is one of the fundamental ways you can help your user consume less data, in\nterms of both network data and internal storage. This section describes several approaches to\nreducing app size.\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n### Reduce APK graphical asset size\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n- Graphical assets are often the largest contributor to the size of the APK. Optimizing these can result in smaller downloads and thus faster installation times for users.\n- For graphical assets such as icons, use the Scalable Vector Graphics (SVG) format. SVG images are tiny in size compared to bitmap graphics and can be rendered at runtime to any resolution. The [Android Support Library](/tools/support-library) provides a backward-compatible implementation for vector resources to Android 2.1 (API level 7). Get started with vectors with [this Medium post](https://medium.com/@chrisbanes/appcompat-v23-2-age-of-the-vectors-91cbafa87c88).\n- For non-vector images, such as photos, use [WebP](https://developers.google.com/speed/webp/) to reduce image load times and save network bandwidth. WebP is proven to result in smaller file sizes than its PNG and JPG counterparts, with at least the same image quality. Even at lossy settings, WebP can produce a nearly identical image to the original. Android has included lossy WebP support since Android 4.0 (API level 14: Ice Cream Sandwich) and support for lossless, transparent WebP since Android 4.2 (API level 17: Jelly Bean).\n- If you have many large images across multiple densities, consider using [Multiple\n APK support](/google/play/publishing/multiple-apks) to split your APK by density. This results in builds targeted for specific densities, meaning users with low-density devices won't have to incur the penalty of downloading unused high-density assets.\n- For more information about reducing APK size, see [Reduce APK Size](/topic/performance/reduce-apk-size) and [Shrink Your Code and Resources](/studio/build/shrink-code). In addition, you can find a detailed guide on reducing APK size in this [series of Medium posts](https://medium.com/@wkalicinski/smallerapk-part-4-multi-apk-through-abi-and-density-splits-477083989006).\n\n### Reduce code size\n\n- Every library in your Android project is adding potentially unused code to the APK. Be particularly careful about using external libraries because not all libraries are designed for use in mobile apps. Ensure that the libraries your app is using are optimized for mobile use.\n- Consider optimizing your compiled code using a tool such as [ProGuard](/tools/help/proguard). ProGuard identifies code that isn't being used and removes it from your APK. Also [enable resource shrinking](http://tools.android.com/tech-docs/new-build-system/resource-shrinking) at build time by setting `minifyEnabled=true`, `shrinkResources=true` in `build.gradle`---this automatically removes unused resources from your APK.\n- When using Google Play services, you should [selectively include](/google/play-services/setup#add_google_play_services_to_your_project) only the necessary APIs into your APK.\n- For more information on reducing code size in your APK, see the Android training on how to [Avoid\n dependency injection frameworks](/training/articles/memory#DependencyInjection).\n\n### Allow app to be moved to external (SD) storage\n\n- Low-cost devices often come with little on-device storage. Users can extend this with SD cards; however, apps need to explicitly declare that they support being installed to external storage before users can move them.\n- Allow your app to be installed to external storage using the [`\n android:installLocation`](/guide/topics/manifest/manifest-element#install) flag in your AndroidManifest.xml. For more information on enabling your app to be moved to external storage, see the Android guide on [App Install\n Location](/guide/topics/data/install-location).\n\n\u003cbr /\u003e\n\n### Reduce post-install app disk use\n\n\u003cbr /\u003e\n\n- Keeping your app's disk use low means that users are less likely to uninstall your app when the device is low on free space. It's important to apply bounds around your caches---this prevents your app's disk use from growing indefinitely. Be sure you put your cached data in [getCacheDir()](/reference/android/content/Context#getCacheDir())---the system can delete files placed here as needed, so they won't show up as storage committed to the app.\n\n\u003cbr /\u003e\n\nOffer configurable network use\n------------------------------\n\n\nThe Android platform includes a number of ways you can give the user control\nover your app's network use, optimizing it for their own needs. For example,\non first use, your app can walk the user through a variety of network-related settings.\nYou can also provide a network preferences screen from outside the app.\n\n### Provide onboarding experiences for users' network\nchoices\n\n\u003cbr /\u003e\n\n- Apps that allow users to reduce data use are well received, even if they have heavy data requirements. If your app uses a considerable amount of bandwidth (for example, video streaming apps), you can provide an onboarding experience for users to configure network use. For example, you could allow the user to force lower-bitrate video streams on cellular networks.\n- Additional settings for users to control data syncing, prefetching, and network use behavior (for example, prefetch all starred news categories on Wi-Fi only), also help users tailor your app's behavior to their needs.\n- For more information on managing network use, see the Android training on [Managing\n Network Usage](/training/basics/network-ops/managing).\n\n### Provide a network preferences\nscreen\n\n- You can navigate to the app's network settings from outside the app by means of a network preferences screen. You can invoke this screen from either the system settings screen or the system data usage screen.\n- To provide a network preferences screen that users can access from within your app as well as from the system settings, in your app include an activity that supports the [ACTION_MANAGE_NETWORK_USAGE](/reference/android/content/Intent#ACTION_MANAGE_NETWORK_USAGE) action.\n- For further information on adding a network preferences screen, see the Android training on [Implementing a Preferences Activity](/training/basics/network-ops/managing#prefs).\n\n\u003cbr /\u003e\n\nAdditional resources\n--------------------\n\nTo learn more about this topic, view the following additional resources:\n\n### Blog posts\n\n- [Nurture trust through cost transparency](https://medium.com/google-design/nurture-trust-through-cost-transparency-b61a5947d2fc)"]]