Toggle Menu

Kiat untuk Pengembang Android untuk mengurangi Ukuran file APK

Diterbitkan: 2015-10-28
Berikut adalah sejumlah rekomendasi untuk rekan pengembang Android saya untuk mengurangi jejak statis. Anda dapat memilih yang paling sesuai dengan kebutuhan khusus Anda sendiri.

1) ProGuard

Pekerjakan Freelancer di Truelancer

Alat untuk menyusutkan kode, seperti ProGuard, akan mengurangi ukuran file APK secara signifikan. Alat ini tersedia di sourceforge. Perhatikan bahwa, sangat penting untuk menguji ulang semua aplikasi setelah menerapkan ProGuard karena terkadang dapat mengubah perilaku aplikasi. Karena ProGuard menggantikan simbol aplikasi, untuk membuat kode sulit dibaca, Anda harus mempertahankan pemetaan simbol, sehingga Anda dapat menerjemahkan jejak tumpukan kembali ke simbol aslinya jika Anda harus menyelidiki kerusakan pada aplikasi Anda.

2) Penghapusan informasi Debug

Saya sarankan Anda menghapus semua fungsi yang terkait dengan debug dari aplikasi. Aplikasi umumnya tidak melihat atau menggunakan data ini, dan sistem operasi Android tidak memerlukannya untuk menjalankan aplikasi. Oleh karena itu, informasi debug hanya membuang-buang ruang, dan harus dihapus.

Untuk mencapai ini, semua fungsi terkait debug harus diapit dalam blok bersyarat, seperti di bawah ini:

 debug akhir statis = false;
 jika (debug) {
 v(TAG, "Debug ...")
 }

Penting bahwa flag debug diatur pada waktu kompilasi (yaitu dinyatakan sebagai final statis) agar kompilator dapat menghapus semua fungsionalitas debug sepenuhnya. Membuat metode debug Anda sendiri seperti yang ditunjukkan di bawah ini bukanlah ide yang baik karena panggilan ke myDebugPrint() tidak diapit oleh blok bersyarat, yang berarti bahwa kompilator harus menyimpan informasi tentang myDebugPrint() di kelas pemanggil.

 kekosongan publik myDebugPrint()
jika (Debug)
v(TAG, "Men-debug ...");
}
}
…
myDebugPrint()

3) Penghapusan simbol debug dari pustaka asli Menggunakan simbol debug masuk akal jika aplikasi Anda masih dalam pengembangan, dan masih memerlukan proses debug. Namun jika simbol debug masih muncul saat Anda mengompilasi build rilis, dan jika Anda ingin menghapusnya, kami menyarankan agar simbol Debug dihapus dari pustaka asli (file .so). Ini dilakukan menggunakan perintah arm-eabi-strip, dari Android NDK.

4) Format media yang disarankan Jika aplikasi Anda sangat bergantung pada gambar, audio, atau video, cara lain untuk mengurangi ukuran file APK adalah dengan menggunakan format media tertentu. Kami menyarankan Anda menggunakan format media berikut untuk gambar, audio, dan video:

  • Video: Gunakan H264 AVC. Encode video ke resolusi yang tidak lebih besar dari resolusi layar perangkat target (jika diketahui).
  • Audio : AAC Audio direkomendasikan untuk semua sumber audio. AAC mencapai kompresi yang lebih baik pada kualitas tertentu, dibandingkan dengan mp3 atau Ogg Vorbis. Format mentah seperti WAV tidak boleh digunakan. Alasan umum untuk menggunakan format WAV adalah bahwa decoding aliran audio terkompresi biasanya berarti latensi tinggi saat pemutaran. Namun, Android menyediakan Sound Pool API yang memungkinkan aplikasi menggunakan aliran audio terkompresi tanpa penalti latensi tinggi.
  • Gambar : PNG atau JPEG. Gunakan PNG; karena ini adalah format lossless sangat cocok untuk tekstur dan karya seni karena tidak akan ada artefak visual dari kompresi. Jika ada batasan ruang, gunakan JPEG atau kombinasi PNG dan JPEG. Gambar JPEG berkualitas tinggi dapat berfungsi dengan baik untuk gambar foto-realistis yang besar, yang dioptimalkan untuk skema kompresi JPEG.
  • Optimalkan ukuran PNG tanpa kehilangan kualitas

Wajib Baca 5 Resolusi Keuangan yang Harus Kamu Tetapkan di Tahun 2015

Jika Anda menggunakan format PNG, gambar PNG dapat diperkecil ukuran filenya tanpa kehilangan kualitas. Untuk melakukan ini, gunakan alat seperti OptiPNG atau PNGCrush. Keduanya bagus untuk mengurangi ukuran file PNG sambil tetap memastikan kualitas gambar. PNGcrush adalah program sumber terbuka yang mengulangi filter PNG dan parameter zlib (Deflate), mengompresi gambar berulang kali menggunakan setiap konfigurasi parameter, dan memilih konfigurasi yang menghasilkan output terkompresi (IDAT) terkecil. Di sisi lain, OptiPNG melakukan uji coba sepenuhnya di memori, dan hanya menulis file keluaran akhir pada disk. Selain itu, ia menawarkan beberapa preset pengoptimalan kepada pengguna.

5) Hapus sumber daya yang tidak digunakan Kelompok pemboros ruang potensial lainnya yang perlu dipertimbangkan untuk dihapus dari file APK Anda adalah sumber daya yang tidak digunakan di direktori res Anda, seperti tata letak, sumber daya dapat digambar, dan warna yang tidak digunakan. Untuk mendeteksi resource yang tidak digunakan di APK Anda yang mungkin dapat dihapus, gunakan alat android-unused-resources. Android Unused Resources adalah aplikasi Java yang akan memindai proyek Anda untuk mencari sumber daya yang tidak digunakan.

6) Hindari duplikasi Memastikan bahwa aplikasi Anda tidak memiliki fungsi duplikat atau aset duplikat adalah cara yang jelas untuk menghindari file yang tidak perlu di APK Anda. Penting untuk memahami API Android mana yang Anda gunakan, dan fungsionalitas lengkap yang disediakan masing-masing. Bisa jadi satu Android API sudah melakukan pekerjaan API lain. Aset duplikat (string, bitmap, dll) juga membuang-buang ruang, dan dapat dengan mudah dihindari. Pada tingkat yang lebih rendah, kode yang digandakan juga tidak perlu meningkatkan ukuran biner yang dikirimkan.

7) Kurangi jumlah metode Anda Pengembang Android yang rajin telah lama menghadapi masalah yang menyebabkan sakit kepala dengan aplikasi mereka. Jumlah metode yang dapat dimiliki aplikasi terbatas. Yah, dulu terbatas. Akhirnya, orang-orang baik di Google memberikan solusi Oktober lalu, tapi itu jauh dari ideal. Meskipun sangat mudah diimplementasikan, solusi multidex memperumit dan memperpanjang waktu kompilasi secara signifikan. Tidak tinggal diam, dimulai dengan Lollipop (Android 5.0), seluruh Mesin Virtual Android telah direvolusi untuk menawarkan solusi yang jauh lebih tahan lama, jenis yang bahkan meningkat pada waktu kompilasi reguler. Namun, untuk saat ini, solusi Lollipop juga tidak ideal. Ini mengharuskan pengembang untuk mengembangkan hanya terhadap Lollipop, yang dapat menjadi masalah karena sebagian besar aplikasi ingin kompatibel dengan rentang audiens yang lebih luas dan mungkin takut menggunakan fitur yang tidak tersedia di versi Android sebelumnya. Jadi saat ini, solusi Lollipop adalah solusi Android masa depan yang baik, tetapi mungkin tidak akan berdampak banyak di masa mendatang. Jadi apa yang bisa dilakukan sementara itu? Kita semua setuju bahwa Anda tidak boleh menyerah pada fitur dan kemampuan, hanya untuk menghindari mencapai batas 65K. Tetapi tidak diragukan lagi bahwa praktik terbaik adalah mengurangi jumlah metode aplikasi Anda. Jadi bagaimana Anda masih bisa mencoba mengurangi jumlah metode Anda tanpa kehilangan percikan kecil yang membuat aplikasi Anda istimewa?

Harus Baca Diversifikasi Karir Anda dengan Freelancing: Manfaat Terjamin

Ikhtisar Singkat: “Dari mana semua metode ini berasal?”

Batas jumlah metode berdiri kira-kira di 65K metode (tepatnya 65.536). Kedengarannya seperti jumlah yang besar. Jika Anda seorang pengembang Android pemula, Anda mungkin berpikir “bagaimana bisa begitu banyak aplikasi mencapai angka ini dengan begitu cepat?” Anda mungkin agak benar. Tidak mudah untuk menulis begitu banyak metode sendiri. Tetapi pengembang aplikasi tidak menulis seluruh aplikasi mereka sendiri. Pengembang aplikasi menggunakan semakin banyak perpustakaan pihak ketiga (SDK – Perangkat Pengembangan Perangkat Lunak), yang membantu mereka mencapai tujuan dan fitur tertentu yang jika tidak, mereka harus mengembangkan sepenuhnya sendiri. Dari iklan melalui peningkatan GUI hingga jejaring sosial, pelaporan kerusakan, dan banyak lagi, SDK menawarkan berbagai kemampuan dan API yang menghemat waktu pengembangan yang berharga dan membantu meluncurkan aplikasi Anda lebih cepat. Tetapi setiap SDK menambah jumlah metode Anda, dan beberapa SDK bahkan melakukan lebih dari sekadar apa yang Anda tawar. Ini belum tentu hal yang buruk, tentu saja. Namun, kudeta datang dari Google sendiri. Kit Layanan Google Play mereka adalah SDK besar yang berisi lebih dari 28.000 metode. Dengan batas menjadi 65K, jumlah itu tidak terlalu rendah. Dan banyak pengembang aplikasi ingin menggunakan SDK ini karena SDK ini membuka pintu ke kerajaan Google yang ajaib, kemampuan yang sangat diinginkan yang menambahkan banyak nilai ke aplikasi seseorang. Dalam posting ini, saya tidak hanya akan menjelaskan cara selektif menggunakan paket Layanan Google Play, tetapi juga akan memberi Anda informasi tentang berapa banyak metode yang ditambahkan masing-masing paket ini ke aplikasi Anda. Jadi berpegangan pada kursi Anda, itu akan menjadi perjalanan yang bergelombang.

Taman Bermain Layanan Google Play

Jadi berapa banyak metode yang sebenarnya ditambahkan oleh Layanan Google Play? Yah, seperti segala sesuatu dalam hidup, ini jauh lebih rumit daripada sekadar angka dasar. Tapi mari kita lakukan selangkah demi selangkah. SDK Layanan Google Play sebenarnya berisi 19 SDK berbeda. Dengan Gradle, Anda dapat secara selektif memilih mana yang akan digunakan. Yang harus Anda lakukan adalah menambahkan dependensi berikut ke file build.gradle modul aplikasi Anda:

 dependensi {
kompilasi 'com.google.android.gms:play-services:7.5.0'
}

Dengan 7.5.0 menjadi versi GPS terbaru yang dirilis saat ini. Itu diberi label sebagai revisi 25 di dalam Android SDK Manager. Untuk memilih paket tertentu, ganti baris berikut dengan baris dependensi sebanyak yang Anda inginkan, dengan menentukan paket tertentu. Katakanlah misalnya, Anda hanya menginginkan Google Plus, Google Games, Google Ads, dan Google Maps:

 dependensi {
kompilasi 'com.google.android.gms:play-services-plus:7.5.0'
kompilasi 'com.google.android.gms:play-services-games:7.5.0'
kompilasi 'com.google.android.gms:play-services-ads:7.5.0'
kompilasi 'com.google.android.gms:play-services-maps:7.5.0'
}

Tidak terlalu sulit, tapi inilah tangkapan pertama. Salah satu dari 19 SDK yang mulia disebut play-services-base. Jika Anda menyertakan paket Layanan Google Play apa pun, itu juga akan ditambahkan secara otomatis. Berapa banyak metode yang terkandung dalam paket dasar? Hampir 8.000 (jumlah persis di bawah).

Harus Membaca Era Pengusaha Lepas: Orang yang memiliki freelance ke level baru

Dan inilah tangkapan kedua. Saya tidak memasukkan hanya 3 paket dalam contoh di atas. Saya bahkan tidak hanya memasukkan 4, jika Anda menghitung paket dasar juga. Bahkan, saya menyertakan 5 paket. Mengapa? Karena paket Google Games menggunakan paket Google Drive, dan itu juga diimpor (pada kenyataannya, Google Ads juga menyertakan paket yang disebut tag manager, tetapi saya hanya menghitung paket "dapat dipilih" di sini).

Jadi sekarang kami mulai memahami mengapa sedikit lebih sulit untuk menghitung berapa banyak metode yang ditambahkan setiap paket Layanan Google Play ke aplikasi kami. Termasuk satu paket, tidak berarti mengecualikan yang lain.

Jadi, inilah low-down – paket mana yang dapat Anda tambahkan, berapa banyak metode yang mereka tambahkan dan paket lain mana yang mereka bawa untuk merusak pesta. Data mengacu pada versi terbaru Layanan Google Play (7.5.0 / revisi 25):

Kiat untuk Pengembang Android untuk mengurangi Ukuran file APK 2
Jumlah total metode: 28175

Jumlah total metode: 28.175. Beberapa dari angka-angka ini, harus Anda akui, benar-benar mengerikan. Jika yang Anda inginkan hanyalah paket panorama, Anda tidak bisa hanya mendapatkan sembilan metode, Anda harus mendapatkan hampir 8.000. Tidak heran begitu banyak aplikasi yang mendekati atau melebihi batas 65 ribu itu.

Beberapa dari angka-angka ini mungkin tampak sedikit tidak konsisten jika Anda mencoba menjumlahkannya. Itu karena, sekali lagi, logika di balik Layanan Google Play sedikit lebih rumit daripada yang terlihat. Misalnya, Google Analytics menyertakan satu metode dari Google Ads untuk mendapatkan ID Iklan akun.

Perhatikan bahwa saat menghitung jumlah yang ditambahkan setiap paket ke aplikasi Anda, pastikan untuk mengecualikan ganda (misalnya, jangan hitung paket dasar lebih dari sekali).

Anda Tidak Dapat Secara Selektif Menambahkan Semuanya

Dan inilah sengatan terakhir. Ada dua paket kecil di dalam Layanan Google Play yang tidak dapat ditambahkan secara selektif. Paket pencarian (memberi Anda akses ke Google Now API) hanya mencakup 22 metode. Jika Anda ingin menggunakannya, Anda tidak punya pilihan selain menambahkan seluruh 28.000+ metode, seluruh Layanan Google Play. Mudah-mudahan, ini akan diperbaiki di versi yang lebih baru.

(Paket "tidak dapat diakses" lainnya adalah paket appstate yang mencakup 111 metode, namun sekarang tidak digunakan lagi karena SavedGames , termasuk dalam paket google-play-games).

Pekerjakan Freelancer di Truelancer