Milyarlarca kullanıcı için veri maliyeti azaltıldı
Koleksiyonlar ile düzeninizi koruyun
İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.
Bazı ülkelerdeki veri planlarının maliyeti, normal bir kullanıcının aylık gelirinin% 10'undan fazla olabilir. Yani uygulamanızın indirme boyutunu en aza indirmek ve kullanıcının, uygulamanızın verileri nasıl kullanacağını kontrol etmesine izin vermek, birçok kullanıcıya büyük ve somut bir fayda sağlayabilir. İndirme boyutunu en aza indirmek, bazı cihazlarda nadir bir kaynak olan dahili depolama alanında yer tasarrufu da sağlamaya yardımcı olur.
Burada, uygulamanızın hem ağ üzerinde hem de dahili depolamada kullandığı veri miktarını optimize etmenize yardımcı olacak bazı stratejiler bulabilirsiniz.
Uygulama boyutunu küçültme
Uygulama boyutunu küçültmek, kullanıcılarınızın hem ağ verileri hem de dahili depolama açısından daha az veri tüketmesine yardımcı olmanın temel yollarından biridir. Bu bölümde, uygulama boyutunu küçültmeye yönelik çeşitli yaklaşımlar açıklanmaktadır.
APK grafik öğesinin boyutunu küçültme
- Grafik öğeler genellikle APK'nın boyutuna en çok katkıda bulunan öğelerdir. Bunları optimize etmek indirme işlemlerinin sayısını azaltabilir, dolayısıyla kullanıcılar için yükleme sürelerini kısaltabilir.
- Simge gibi grafik öğeler için Ölçeklenebilir Vektör Grafiği (SVG) biçimini kullanın. SVG resimleri, bit eşlem grafiklerine kıyasla çok küçüktür ve çalışma zamanında herhangi bir çözünürlükte oluşturulabilir. Android Destek Kitaplığı, Android 2.1'e (API düzeyi 7) ilişkin vektör kaynakları için geriye dönük uyumlu bir uygulama sağlar.
Bu Medium yayınıyla vektörleri kullanmaya başlayın.
- Fotoğraflar gibi vektör olmayan görüntülerde, görüntü yükleme sürelerini azaltmak ve ağ bant genişliğinden tasarruf etmek için WebP kullanın. WebP'nin, en azından aynı resim kalitesinde, PNG ve JPG muadillerine göre daha küçük dosya boyutlarına neden olduğu kanıtlanmıştır. WebP, kayıplı ayarlarda bile orijinal resimle neredeyse aynı bir görüntü oluşturabilir. Android, Android 4.0'dan (API düzeyi 14: Ice Cream Sandwich) ve Android 4.2'den (API düzeyi 17: Jelly Bean) kayıpsız, şeffaf WebP desteğine sahiptir.
- Birden fazla yoğunlukta çok sayıda büyük resminiz varsa APK'nızı yoğunluğa göre bölmek için Birden fazla APK desteği özelliğini kullanabilirsiniz. Bu sayede belirli yoğunluklara göre hedeflenmiş derlemeler elde edilir. Böylece düşük yoğunluklu cihazlara sahip kullanıcıların, kullanılmayan yüksek yoğunluklu öğeleri indirme cezası almak zorunda kalmazsınız.
- APK boyutunu küçültme hakkında daha fazla bilgi için APK Boyutunu Küçültme ve Kodunuzu ve Kaynaklarınızı Küçültme konularına bakın. Ayrıca, bu
Medium yayını serisinde APK boyutunu küçültmeyle ilgili ayrıntılı bir kılavuz bulabilirsiniz.
Kod boyutunu küçült
- Android projenizdeki her kitaplık, APK'ya kullanılmayan olası kodlar ekliyor. Tüm kitaplıklar mobil uygulamalarda kullanılmak üzere tasarlanmadığından harici kitaplıkları kullanırken özellikle dikkatli olun. Uygulamanızın kullandığı kitaplıkların mobil kullanım için optimize edilmiş olduğundan emin olun.
- ProGuard gibi bir araç kullanarak derlenmiş kodunuzu optimize etmeyi düşünün. ProGuard, kullanılmayan kodu tespit eder ve APK'nızdan kaldırır. Ayrıca,
build.gradle
içinde minifyEnabled=true
ve shrinkResources=true
ayarlarını yaparak derleme sırasında
kaynak daraltmayı etkinleştirin. Böylece kullanılmayan kaynaklar APK'nızdan otomatik olarak kaldırılır.
- Google Play hizmetlerini kullanırken APK'nıza yalnızca gerekli API'leri
seçerek eklemeniz gerekir.
- APK'nızın kod boyutunu küçültme hakkında daha fazla bilgi için Bağımlılık yerleştirme çerçevelerinden kaçınma ile ilgili Android eğitimine bakın.
Uygulamanın harici (SD) depolama birimine taşınmasına izin ver
- Düşük maliyetli cihazlar genellikle cihazdaki depolama alanı azdır. Kullanıcılar SD kartlarla bu süreyi genişletebilirler. Ancak kullanıcıların taşımadan önce uygulamaların harici depolamaya yüklenmeyi desteklediklerini açıkça beyan etmeleri gerekir.
- AndroidManifest.xml dosyanızdaki
android:installLocation
işaretini kullanarak uygulamanızın harici depolamaya yüklenmesine izin verin. Uygulamanızın harici depolama alanına taşınmasını etkinleştirme hakkında daha fazla bilgi için Uygulama Yükleme Konumu ile ilgili Android kılavuzuna bakın.
Yükleme sonrası uygulama disk kullanımını azaltma
- Uygulamanızın disk kullanımını düşük tutmak, cihazda boş alan azaldığında kullanıcıların uygulamanızı kaldırma olasılığını azaltır. Önbelleklerinizin etrafına sınırlar uygulamanız önemlidir. Böylece uygulamanızın disk kullanımı süresiz olarak artar. Önbelleğe alınmış verilerinizi
getCacheDir()
konumuna yerleştirdiğinizden emin olun. Sistem gerektiğinde buraya yerleştirilen dosyaları silebilir. Böylece bu dosyalar, uygulamaya atanan depolama alanı olarak görünmez.
Yapılandırılabilir ağ kullanımı sunar
Android platformunda, uygulamanızın ağ kullanımı üzerinde kullanıcıya kontrol olanağı sunarak uygulamanızı kendi ihtiyaçlarına göre optimize edebileceğiniz çeşitli yöntemler bulunur. Örneğin, uygulamanız ilk kullanımda kullanıcıyı ağla ilgili çeşitli ayarlar konusunda yönlendirebilir.
Ayrıca, uygulamanın dışından bir ağ tercihleri ekranı da sağlayabilirsiniz.
Kullanıcıların ağ seçimleri için ilk katılım deneyimleri sağlayın
- Kullanıcıların veri kullanımını azaltmalarına olanak tanıyan uygulamalar yoğun veri gereksinimleri olsa bile olumlu karşılanır. Uygulamanız önemli miktarda bant genişliği kullanıyorsa (ör. video yayın uygulamaları) kullanıcılara ağ kullanımını yapılandırmaları için ilk katılım deneyimi sunabilirsiniz. Örneğin, kullanıcının hücresel ağlarda daha düşük bit hızına sahip video akışlarını zorunlu kılmasına izin verebilirsiniz.
- Kullanıcıların veri senkronizasyonunu, önceden getirmeyi ve ağ kullanımı davranışını kontrol etmesini sağlayan ek ayarlar (ör. yalnızca kablosuz ağda yıldızlı tüm haber kategorilerini önceden getirme) de kullanıcıların uygulamanızın davranışını ihtiyaçlarına göre uyarlamalarına yardımcı olur.
- Ağ kullanımını yönetme hakkında daha fazla bilgi için Ağ Kullanımını Yönetme konulu Android eğitimine bakın.
Ağ tercihleri ekranı
- Uygulamanın dışından bir ağ tercihleri ekranı aracılığıyla uygulamanın ağ ayarlarına gidebilirsiniz. Bu ekranı sistem ayarları ekranından veya sistem veri kullanımı ekranından çağırabilirsiniz.
- Kullanıcıların hem uygulamanızın içinden hem de sistem ayarlarından erişebileceği bir ağ tercihleri ekranı sağlamak için uygulamanızda
ACTION_MANAGE_NETWORK_USAGE
işlemini destekleyen bir etkinlik ekleyin.
- Ağ tercihleri ekranı ekleme hakkında daha fazla bilgi için
Tercihler Etkinliğini Uygulama konulu Android eğitimine bakın.
Ek kaynaklar
Bu konu hakkında daha fazla bilgi edinmek için aşağıdaki ek kaynakları inceleyin:
Blog yayınları
Bu sayfadaki içerik ve kod örnekleri, İçerik Lisansı sayfasında açıklanan lisanslara tabidir. Java ve OpenJDK, Oracle ve/veya satış ortaklarının tescilli ticari markasıdır.
Son güncelleme tarihi: 2025-07-27 UTC.
[[["Anlaması kolay","easyToUnderstand","thumb-up"],["Sorunumu çözdü","solvedMyProblem","thumb-up"],["Diğer","otherUp","thumb-up"]],[["İhtiyacım olan bilgiler yok","missingTheInformationINeed","thumb-down"],["Çok karmaşık / çok fazla adım var","tooComplicatedTooManySteps","thumb-down"],["Güncel değil","outOfDate","thumb-down"],["Çeviri sorunu","translationIssue","thumb-down"],["Örnek veya kod sorunu","samplesCodeIssue","thumb-down"],["Diğer","otherDown","thumb-down"]],["Son güncelleme tarihi: 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)"]]