Penurunan biaya data untuk miliaran
Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Biaya pengeluaran untuk paket data di beberapa negara dapat mencapai 10% dari pendapatan bulanan pengguna secara umum. Ini
berarti meminimalkan ukuran download aplikasi dan membolehkan pengguna mengontrol cara aplikasi menggunakan
data dapat memberikan manfaat besar dan nyata bagi banyak pengguna. Meminimalkan ukuran download juga membantu
menghemat ruang dalam penyimpanan internal, yang merupakan resource langka di perangkat tertentu.
Di sini, Anda dapat menemukan beberapa strategi untuk membantu mengoptimalkan jumlah data yang digunakan aplikasi Anda, baik
melalui jaringan maupun dalam penyimpanan internal.
Mengurangi ukuran aplikasi
Mengurangi ukuran aplikasi adalah salah satu cara mendasar agar Anda dapat membantu pengguna menggunakan lebih sedikit data, baik
dalam hal data jaringan maupun penyimpanan internal. Bagian ini menjelaskan beberapa pendekatan untuk
mengurangi ukuran aplikasi.
Mengurangi ukuran aset visual APK
- Aset visual sering kali menjadi kontributor terbesar terhadap ukuran
APK. Mengoptimalkannya dapat memperkecil ukuran download dan mempersingkat waktu
penginstalan bagi pengguna.
- Untuk aset visual seperti ikon, gunakan format Scalable Vector Graphics
(SVG). Gambar SVG berukuran sangat kecil dibandingkan dengan grafis bitmap dan dapat dirender
pada saat runtime ke resolusi apa pun. Android Support Library
menyediakan implementasi yang kompatibel dengan versi lama untuk resource vektor ke Android 2.1 (API level 7).
Mulai dengan vektor menggunakan
postingan Medium ini.
- Untuk gambar non-vektor, seperti foto, gunakan WebP untuk mengurangi
waktu pemuatan gambar dan menghemat bandwidth jaringan. WebP terbukti menghasilkan
ukuran file yang lebih kecil daripada format PNG dan JPG-nya, setidaknya dengan
kualitas gambar yang sama. Bahkan dengan setelan lossy, WebP dapat menghasilkan gambar
yang hampir identik dengan aslinya. Android telah menyertakan dukungan WebP lossy sejak Android 4.0 (API
level 14: Ice Cream Sandwich), dan dukungan WebP lossless transparan
sejak Android 4.2 (API level 17: Jelly Bean).
- Jika Anda memiliki banyak gambar besar dalam beberapa kepadatan, pertimbangkan
untuk menggunakan dukungan
Multi-APK untuk membagi APK menurut kepadatan. Hal ini menghasilkan build
yang ditargetkan untuk kepadatan tertentu, yang berarti pengguna dengan perangkat kepadatan rendah
tidak harus menanggung penalti saat mendownload aset kepadatan tinggi yang tidak digunakan.
- Untuk informasi selengkapnya tentang cara mengurangi ukuran APK, lihat
Mengurangi Ukuran APK dan
Menyingkat Kode dan Resource. Selain itu, Anda dapat
menemukan panduan mendetail tentang cara mengurangi ukuran APK di
rangkaian postingan Medium ini.
Mengurangi ukuran kode
- Setiap library di project Android Anda menambahkan kode yang berpotensi tidak digunakan ke APK. Berhati-hatilah
dalam menggunakan library eksternal karena tidak semua library
didesain untuk digunakan di aplikasi seluler. Pastikan library yang digunakan aplikasi Anda
dioptimalkan untuk penggunaan seluler.
- Pertimbangkan untuk mengoptimalkan kode yang dikompilasi menggunakan alat seperti ProGuard. ProGuard mengidentifikasi
kode yang tidak digunakan dan menghapusnya dari APK. Aktifkan
juga penyingkatan resource pada waktu build dengan menyetel
minifyEnabled=true
, shrinkResources=true
dalam
build.gradle
—hal ini otomatis akan menghapus resource yang tidak digunakan dari
APK Anda.
- Saat menggunakan layanan Google Play, Anda harus
secara selektif hanya menyertakan API yang diperlukan ke dalam APK Anda.
- Untuk informasi selengkapnya terkait cara mengurangi ukuran kode dalam APK, lihat pelatihan
Android tentang cara Menghindari
framework injeksi dependensi.
Mengizinkan aplikasi dipindahkan ke penyimpanan eksternal (SD)
- Perangkat berbiaya rendah sering kali hadir dengan sedikit ruang penyimpanan di perangkat. Pengguna dapat
memperbesar ruang ini dengan kartu SD; namun, aplikasi harus secara jelas mendeklarasikan
dukungannya terhadap penginstalan ke penyimpanan eksternal sebelum pengguna dapat memindahkannya.
- Izinkan aplikasi Anda diinstal ke penyimpanan eksternal menggunakan flag
android:installLocation
dalam AndroidManifest.xml Anda. Untuk informasi
selengkapnya terkait cara membuat aplikasi Anda dapat dipindahkan ke penyimpanan eksternal, lihat
panduan Android tentang Lokasi
Penginstalan Aplikasi.
Mengurangi penggunaan disk aplikasi pascapenginstalan
- Menjaga penggunaan disk aplikasi tetap rendah berarti bahwa pengguna cenderung tidak
meng-uninstal aplikasi Anda saat perangkat memiliki sedikit ruang kosong. Penting bagi Anda
untuk menerapkan batasan pada cache. Hal ini juga untuk mencegah penggunaan disk
aplikasi berkembang tanpa batas. Pastikan Anda menempatkan data yang di-cache di
getCacheDir()
. Sistem dapat menghapus file
yang ditempatkan di sini jika diperlukan, sehingga file tersebut tidak akan muncul karena penyimpanan dikhususkan untuk
aplikasi.
Menawarkan penggunaan jaringan yang dapat dikonfigurasi
Platform Android memiliki sejumlah cara agar Anda dapat memberi pengguna kontrol
atas penggunaan jaringan aplikasi Anda, dengan mengoptimalkannya untuk kebutuhan sendiri. Misalnya,
pada penggunaan pertama, aplikasi dapat memandu pengguna melalui berbagai setelan terkait jaringan.
Anda juga dapat memberikan layar preferensi jaringan dari luar aplikasi.
Memberikan pengalaman orientasi untuk pilihan jaringan
pengguna
- Aplikasi yang memungkinkan pengguna mengurangi penggunaan data akan diterima dengan baik meskipun
memiliki persyaratan data yang berat. Jika aplikasi Anda menggunakan bandwidth
dalam jumlah yang cukup besar (misalnya, aplikasi streaming video), Anda dapat memberikan
pengalaman orientasi bagi pengguna untuk mengonfigurasi penggunaan jaringan. Misalnya,
Anda dapat mengizinkan pengguna untuk memaksakan streaming video dengan kecepatan bit lebih rendah pada jaringan
seluler.
- Setelan tambahan bagi pengguna untuk mengontrol sinkronisasi data, pengambilan data, dan
perilaku penggunaan jaringan (misalnya, mengambil data semua kategori berita berbintang hanya jika
menggunakan Wi-Fi) juga membantu pengguna menyesuaikan perilaku aplikasi Anda dengan kebutuhan mereka.
- Untuk informasi selengkapnya terkait cara mengelola penggunaan jaringan, lihat pelatihan Android
tentang Mengelola
Penggunaan Jaringan.
Menyediakan layar preferensi
jaringan
- Anda dapat membuka setelan jaringan aplikasi dari luar aplikasi dengan
menggunakan layar preferensi jaringan. Anda dapat menampilkan layar ini baik dari
layar setelan sistem maupun layar penggunaan data sistem.
- Untuk menyediakan layar preferensi jaringan yang dapat diakses pengguna dari dalam
aplikasi Anda dan dari setelan sistem, sertakan aktivitas yang
mendukung tindakan
ACTION_MANAGE_NETWORK_USAGE
dalam
aplikasi Anda.
- Untuk informasi selengkapnya terkait cara menambahkan layar preferensi jaringan, lihat
pelatihan Android tentang
Mengimplementasikan Aktivitas Preferensi.
Referensi lainnya
Untuk mempelajari topik ini lebih lanjut, lihat referensi tambahan berikut:
Postingan blog
Konten dan contoh kode di halaman ini tunduk kepada lisensi yang dijelaskan dalam Lisensi Konten. Java dan OpenJDK adalah merek dagang atau merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2025-07-27 UTC.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Informasi yang saya butuhkan tidak ada","missingTheInformationINeed","thumb-down"],["Terlalu rumit/langkahnya terlalu banyak","tooComplicatedTooManySteps","thumb-down"],["Sudah usang","outOfDate","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Masalah kode / contoh","samplesCodeIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 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)"]]