Cara Mengecilkan Aplikasi Hp Samsung
Pengguna pelahap menghindari mendownload aplikasi yang nada-nadanya plus samudra, terutama di pasar negara berkembang bekas perangkat terhubung ke jaringan 2G dan 3G yang tidak stabil ataupun menggunakan paket berlandaskan pemakaian per byte. Pelataran ini menguraikan cara mengurangi ukuran download aplikasi Anda, yang memungkinkan lebih banyak pengguna mendownload permintaan Anda.
Mengupload aplikasi dengan Android App Bundle
Cara termudah untuk spontan mendapatkan penjimatan ukuran aplikasi ketika memublikasikan ke Google Play yaitu dengan mengupload tuntutan sebagai Android App Bundle, yang merupakan format upload yunior yang menyertakan semua kode dan resource yang dikompilasi tuntutan Anda, doang memasrahkan pembuatan dan penandatanganan APK kepada Google Play.
Model presentasi permohonan baru Google Play kemudian menggunakan app bundle Anda buat takhlik dan menayangkan APK nan dioptimalkan untuk setiap konfigurasi alat konsumen, sehingga mereka hanya mendownload kode dan resource yang diperlukan lakukan menjalankan aplikasi Anda. Anda tak perlu lagi membuat, menandatangani, dan mengurus beberapa APK untuk mendukung perangkat nan berbeda, dan pengguna mendapatkan hasil download nan lebih boncel dan bertambah dioptimalkan.
Perlu diingat, karena Google Play memberlakukan batasan ukuran download yang dikompresi sebesar 150 MB ataupun kurang untuk aplikasi yang dipublikasikan dengan app bundle, sebaiknya loyal ikuti pedoman nan dijelaskan di sini untuk mengurangi ukuran download permintaan Anda sekecil mana tahu.
Bikin aplikasi yang Anda publikasikan ke Google Play dengan mengupload APK yang ditandatangani, download yang dikompresi dibatasi ke
100 MB ataupun kurang.
Memahami struktur APK
Sebelum membahas cara mengurangi matra tuntutan, semoga Ia memahami struktur APK permohonan terlebih lampau. File APK terdiri berasal arsip ZIP nan weduk semua file yang mewujudkan permohonan Sira. File ini mencakup file class Java, file resource, dan file nan pintar kompilasi resource.
APK sakti direktori berikut:
* META-INF/: Berisi file label tangan
CERT.SF
dan
CERT.RSA, serta file manifes
MANIFEST.MF.
* assets/: Berisi kekayaan aplikasi, nan bisa diambil aplikasi memperalat incaran
AssetManager.
* res/: Berisi resource yang tidak dikompilasi ke
resources.arsc.
* lib/: Berisi antologi kode yang dikhususkan untuk sepuhan software prosesor. Direktori ini mandraguna subdirektori buat setiap jenis platform, begitu juga
armeabi,
armeabi-v7a,
arm64-v8a,
x86,
x86_64, dan
mips.
APK juga berisi beberapa file berikut. Di antara file tersebut, cuma
AndroidManifest.xml
nan berperilaku wajib.
* resources.arsc: Berisi kompilasi resource. File ini weduk konten XML dari semua konfigurasi folder
res/values/. Alat pengemasan mengekstrak konten XML ini, mengompilasikannya ke rang biner, dan mengarsipkan konten. Konten ini mencakup string dan kecenderungan bahasa, serta jalur ke konten yang tidak disertakan secara langsung di file
resources.arsc, seperti mana bagan dan file atak.
* classes.dex: Berisi antologi class dalam format file DEX yang dipahami maka dari itu mesin virtual Dalvik/ART.
* AndroidManifest.xml: Digdaya file manifes Android inti. File ini mencakup nama, versi, hak akal masuk, dan file library referensi aplikasi. File ini menggunakan matra XML biner Android.
Mengurangi besaran dan format resource
Dimensi APK Anda berpengaruh terhadap kelancaran pemasangan aplikasi, banyaknya eksploitasi ki kenangan, dan banyaknya daya yang digunakan. Salah satu cara termudah kerjakan memperkecil ukuran APK adalah dengan mengurangi besaran dan ukuran resource yang terserah. Secara khusus, Anda dapat menghapus resource nan tidak digunakan lagi oleh aplikasi, dan boleh menunggangi bulan-bulanan
Drawable
skalabel laksana pengubah file gambar. Bagian ini membahas metode ini serta beberapa cara enggak yang boleh Anda bagi untuk mengurangi resource di tuntutan agar dapat mengurangi keseluruhan matra APK.
Menghapus resource yang tidak digunakan
Alat
lint, penganalisis kode statis nan disertakan di Android Studio, mendeteksi resource di folder
res/
yang tidak direferensikan maka itu kode Sira. Saat menemukan resource yang mungkin tidak digunakan di project Anda, organ
lint
akan menyorongkan pesan seperti n domestik teoretis di bawah.
res/layout/preferences.xml: Warning: The resource R.layout.preferences appears to be unused [UnusedResources]
Coretan:
Gawai
lint
enggak memindai folder
assets/, aset yang direferensikan melalui refleksi, maupun file library nan Anda tautkan ke permintaan Beliau. Selain itu, alat ini tidak menghapus resource, semata-mata namun memberi tahu Anda mengenai keberadaannya.
Library yang Sira tambahkan ke kode dapat menyertakan resource yang tidak digunakan. Gradle boleh otomatis menghapus resource bakal Anda jika Anda mengaktifkan
shrinkResources
pada file
build.gradle
aplikasi Anda.
Groovy
android { // Other settings buildTypes { release { minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’ } } }
Kotlin
android { // Other settings buildTypes { getByName(“release”) { minifyEnabled = true shrinkResources = true proguardFiles(getDefaultProguardFile(‘proguard-android.txt’), “proguard-rules.pro”) } } }
Bagi menggunakan
shrinkResources, Beliau juga harus mengaktifkan penyingkatan kode. Selama proses build, mula-mula R8 menghapus kode yang tidak digunakan. Seterusnya, plugin Android Gradle akan menghapus resource yang tidak digunakan.
Buat pengumuman sepenuhnya tentang qasar kode dan resource, serta kaidah enggak Android Bengkel seni kontributif Anda mengurangi ukuran APK, lihat Menyusutkan, meng-obfuscate, dan mengoptimalkan aplikasi Engkau.
Di Android Gradle Plugin 0.7 dan yang lebih tinggi, Dia boleh mendeklarasikan konfigurasi yang didukung aplikasi. Gradle meneruskan informasi ini ke sistem build menggunakan polah
resConfig
dan
resConfigs
serta opsi
defaultConfig. Dahulu, sistem build mencegah resource dari konfigurasi lain yang tak didukung agar tidak unjuk di APK, mengurangi ukuran APK. Untuk mengetahui deklarasi seutuhnya tersapu fitur ini, tatap Menghapus resource alternatif yang enggak digunakan.
Meminimalkan penggunaan resource terbit library
Saat mengembangkan aplikasi Android, Anda biasanya menggunakan library eksternal kerjakan meningkatkan kegunaan dan fleksibilitas permohonan. Misalnya, Ia dapat mereferensikan Android Support Library kerjakan meningkatkan camar duka pengguna di instrumen hipotetis lama, atau Anda dapat menggunakan Layanan Google Play guna mengambil parafrase otomatis untuk referensi dalam aplikasi Anda.
Jika library didesain buat server atau desktop, library dapat menyertakan banyak alamat dan metode nan lain diperlukan aplikasi Anda. Untuk menyertakan bagian library yang diperlukan aplikasi sahaja, Anda dapat mengedit file library sekiranya lisensinya mengizinkan Anda mengubah library. Beliau juga dapat menggunakan library alternatif nan mobile-friendly untuk menambahkan khasiat tertentu ke permintaan Kamu.
Garitan:
Peringkasan kode boleh membersihkan bilang kode yang tidak diperlukan dari library, tetapi mungkin tidak dapat menghapus kecanduan internal yang berukuran lautan.
Dekode rang animasi native
Di Android 12 (Api level 31), API
ImageDecoder
NDK telah diperluas cak bagi mendekode semua data musim dan frame dari gambar yang menggunakan matra file WebP animasi dan GIF animasi. Detik diperkenalkan di Android 11, API ini hanya mendekode bagan pertama pecah animasi dalam format ini.
Gunakan
ImageDecoder, bukan library pihak ketiga, bikin mengurangi ukuran APK bertambah banyak dan dapatkan keistimewaan berpunca update lebih lanjut yang terkait dengan keamanan dan penampilan.
Cak bagi mengarifi detail API seutuhnya, lihat
API reference
dan model di GitHub.
Semata-mata kontributif konsistensi tertentu
Android membantu serangkaian perangkat yang besar, nan mencakup plural jenis kerapatan layar. Di Android 4.4 (API level 19) dan yang makin tinggi, framework mendukung berbagai kerapatan berikut:
ldpi,
mdpi,
tvdpi,
hdpi,
xhdpi,
xxhdpi, dan
xxxhdpi. Kendatipun Android mendukung semua kepejalan ini, Anda lain perlu mengekspor substansi raster ke setiap kepejalan.
Jika Anda mengetahui bahwa semata-mata sebagian boncel pemakai Sira yang memiliki perangkat dengan kepadatan tertentu, pertimbangkan apakah Anda terbiasa menggabungkan kepadatan tersebut ke kerumahtanggaan aplikasi Kamu. Jika Sira tidak menyertakan resource untuk konsistensi cucur tertentu, Android akan otomatis menskalakan resource yang suka-suka, yang awalnya didesain untuk kepadatan layar lainnya.
Seandainya aplikasi Anda hanya memerlukan gambar nan diskalakan saja, Anda boleh menghemat makin banyak pangsa dengan memiliki satu varian gambar dalam
drawable-nodpi/. Hendaknya setiap aplikasi menyertakan sekurang-kurangnya satu varian gambar
xxhdpi.
Cak bagi mengetahui informasi selengkapnya terkait konsistensi jib, lihat Ukuran dan Konsistensi Cucur.
Menggunakan objek drawable
Beberapa gambar tidak memerlukan resource bentuk statis. Sebagai gantinya, framework boleh membuat gambar saat runtime secara dinamis. Incaran
Drawable
(
kerumahtanggaan XML) tak memakan banyak ruang di APK. Selain itu, bulan-bulanan
Drawable
XML menghasilkan gambar monokrom nan sesuai dengan panduan desain material.
Menggunakan kembali resource
Anda boleh mengikutsertakan resource terpisah untuk variasi sebuah gambar, misalnya versi diwarnai, diberi bayangan, atau diputar. Namun, hendaknya Dia menggunakan kembali kumpulan resource yang sama, menyesuaikannya sesuai kebutuhan saat runtime.
Android menyediakan beberapa utilitas kerjakan mengubah dandan khazanah, baik menggunakan atribut
android:tint
dan
tintMode
di Android 5.0 (API level 21) dan nan bertambah tingkatan. Lakukan versi tribune yang makin rendah, gunakan class
ColorFilter.
Kamu pun bisa menyurutkan resource yang hanya merupakan sekelas yang diputar bermula resource lainnya. Cuplikan kode berikut menyediakan contoh pengubahan ikon “senang” menjadi “lain suka” dengan pemberian pivot di penggalan perdua rancangan dan memutarnya 180 derajat:
Merender dari kode
Anda juga bisa mengurangi ukuran APK dengan merender gambar secara prosedural. Perenderan prosedural mengosongkan ruang penyimpanan karena Dia bukan lagi menyimpan file bagan dalam APK.
Mengecilkan file PNG
Alat
aapt
bisa mengoptimalkan resource bagan yang ditempatkan di
res/drawable/
dengan pemampatan lossless selama proses build. Misalnya, alat
aapt
dapat mengonversi PNG warna asli yang enggak memerlukan lebih berbunga 256 warna menjadi PNG 8 bit dengan palet dandan. Tindakan tersebut akan menghasilkan tulang beragangan dengan kualitas yang sama doang dengan footprint memori yang lebih kecil.
Perlu diingat bahwa
aapt
memiliki batasan berikut:
* Peranti
aapt
tidak memperkecil file PNG yang terserah kerumahtanggaan folder
asset/.
* File rang perlu menggunakan 256 warna atau lebih sedikit agar alat
aapt
dapat mengoptimalkannya.
* Radas
aapt
boleh meng-inflate file PNG yang telah dikompresi. Untuk mencegah hal ini, Anda dapat memperalat flag
isCrunchPngs
guna menonaktifkan proses ini bagi file PNG:
Groovy
buildTypes.all { isCrunchPngs = false }
Kotlin
buildTypes.all { isCrunchPngs = false }
Mengompresi file PNG dan JPEG
Anda boleh mengurangi matra file PNG tanpa menurunkan kualitas gambar menggunakan alat seperti pngcrush, pngquant, alias zopflipng. Semua radas ini boleh mengurangi format file PNG, saja loyal mempertahankan ketajaman kualitas gambar.
Alat
pngcrush
sangat efektif: Alat ini mengiterasi filter PNG dan parameter zlib (Deflate), menggunakan setiap kombinasi filter dan parameter bagi mengompresi kerangka. Lalu, Alat ini memilih konfigurasi yang menghasilkan output terkompresi yang paling kecil.
Untuk mengompresi file JPEG, Anda dapat menunggangi alat seperti packJPG dan guetzli.
Menggunakan format file WebP
Selain menggunakan file PNG ataupun JPEG, Anda lagi bisa menggunakan dimensi file WebP untuk gambar Beliau, saat menargetkan Android 3.2 (API level 13) dan yang lebih tinggi. Format WebP meluangkan kompresi lossy (seperti JPEG) serta transparansi (seperti PNG) tetapi dapat memberikan kompresi yang lebih baik tinimbang JPEG alias PNG.
Anda dapat mengonversi rang BMP, JPG, PNG, atau GIF statis yang suka-suka ke format WebP menunggangi Android Studio. Untuk mengetahui pemberitahuan selengkapnya, lihat Membuat Gambar WebP Menunggangi Android Studio.
Menggunakan grafik vektor
Ia dapat menggunakan diagram vektor buat membuat ikon dengan resolusi bebas dan wahana skalabel lainnya. Penggunaan grafik ini dapat mengurangi footprint APK Anda secara drastis. Bagan vektor direpresentasikan di Android sebagai objek
VectorDrawable. Dengan alamat
VectorDrawable, file bertakaran 100 byte dapat menghasilkan rancangan nan radikal seukuran layar.
Namun, perlu waktu lama agar sistem merender setiap objek
VectorDrawable, dan gambar yang lebih besar memerlukan waktu yang makin lama untuk ditampilkan di layar. Maka dari itu karena itu, pertimbangkan kerjakan menggunakan grafik vektor ini hanya momen mengedepankan gambar berukuran kecil.
Untuk informasi sebaik-baiknya akan halnya cara menangani bahan
VectorDrawable, lihat Menangani Drawable.
Menggunakan tabulasi vektor lakukan lembaga animasi
Jangan gunakan
AnimationDrawable
untuk membuat kartun per frame, karena Engkau akan diharuskan menyertakan file bitmap terpisah bikin setiap frame animasi, yang akan memperbesar dimensi APK secara drastis.
Sebagai gantinya, hendaknya Anda menggunakan
AnimatedVectorDrawableCompat
bakal membuat vektor drawable beranimasi.
Mengurangi kode Java dan native
Ada beberapa metode yang dapat Anda gunakan bakal mengurangi ukuran codebase native dan Java di aplikasi.
Menghapus kode tidak perlu yang dihasilkan
Pastikan Anda mengetahui footprint kode apa pun yang dihasilkan secara otomatis. Misalnya, banyak fitur buffering protokol menghasilkan terlalu banyak metode dan class, yang dapat memperbesar ukuran aplikasi Anda dua alias tiga kali bekuk.
Meninggalkan enumerasi
Satu enum dapat menambahkan sekitar 1,0 hingga 1,4 KB ukuran file
classes.dex
permintaan Beliau. Penyisipan ini boleh dengan cepat terakumulasi untuk sistem nan kompleks ataupun library bersama. Sekiranya memungkinkan, pertimbangkan untuk menunggangi anotasi
@IntDef
dan penyingkatan kode cak bagi menyetip enumerasi dan mengubahnya menjadi bilangan buntak. Transmutasi macam ini mempertahankan semua manfaat keamanan jenis berusul enum.
Mengurangi matra biner native
Jika aplikasi menggunakan kode native dan Android NDK, Anda juga boleh mengurangi format permintaan varian rilis dengan mengoptimalkan kode Anda. Dua teknik ampuh ini boleh menghapus simbol debug dan tidak mengekstrak library native.
Menghapus simbol debug
Simbol debug dapat digunakan jika petisi medium dalam pengembangan dan masih memerlukan proses debug. Gunakan alat
arm-eabi-strip
yang disediakan di Android NDK untuk menyetip fon debug nan tidak diperlukan dari library native. Pasca- itu, Kamu bisa mengompilasi build rilis Anda.
Momen mem-build versi rilis aplikasi Sira, paketkan file
.so
yang tidak dikompresi di APK dengan memastikan bahwa
useLegacyPackaging
disetel ke
false
di file
build.gradle
aplikasi Sira. Menonaktifkan flag ini akan mencegah
PackageManager
menyalin file
.so
dari APK ke sistem file selama penginstalan dan mempunyai kelebihan adendum berupa ukuran update aplikasi yang bertambah kecil.
Menggapil bilang APK berukuran kecil
APK dapat sakti konten yang didownload oleh pemakai tetapi enggak pernah digunakan, seperti mana bahasa tambahan atau resource per konsistensi cucur. Untuk memastikan download nan minimal cak bagi pengguna, mudah-mudahan upload permohonan Kamu ke Google Play menggunakan Android App Bundle. Dengan mengupload app bundle, Google Play boleh membuat dan menayangkan APK nan dioptimalkan untuk setiap konfigurasi perangkat pengguna, sehingga pengguna hanya mendownload kode dan resource yang diperlukan bakal menjalankan aplikasi Anda. Anda tidak perlu lagi mem-build, menandatangani, dan mengelola beberapa APK bakal mendukung berbagai perangkat, dan konsumen akan mendapatkan hasil download yang bertambah kerdil dan lebih optimal.
Jika Kamu lain memublikasikan aplikasi ke Google Play, Beliau dapat membagi permintaan menjadi bilang APK, nan dibedakan oleh faktor seperti format layar alias dukungan tekstur GPU.
Detik konsumen mendownload aplikasi, perangkat mereka menerima APK yang tepat bersendikan fitur dan setelan peranti. Dengan cara ini, instrumen tidak mengakui kekayaan lakukan fitur yang tidak dimiliki perlengkapan. Misalnya, jika pemakai punya perangkat
hdpi, mereka tidak memerlukan resource
xxxhdpi
nan mungkin Anda sertakan untuk perangkat dengan tampilan yang memiliki kepadatan lebih tingkatan.
Lakukan memaklumi deklarasi selengkapnya, lihat Mengonfigurasi Pendistribusian APK dan Ikutikutan Beberapa APK.