#java #android #memory #apk
У меня есть .apk установочник который занимает 3,8 Мб памяти. При установке в телефон приложение занимает 32,4 Мб (если использовать ProGuard то размер уменьшается до 20,4 Мб, но это все равно много). Картинки из интернета или других мест не загружаю. Программа выполняет различные математические преобразования над величинами. Папка с ресурсами (src) проекта весит всего 524 Кб, папка с java кодом занимает 200 Кб. Почему после установки приложение занимает так много места на телефоне? Как определить что именно в проекте может занимать столько места? Спасибо за ответ.
Ответы
Ответ 1
APK по сути является ZIP-архивом, то есть, файлы в нем уже подвержены некоторому сжатию. Когда APK устанавливается на телефон, он сохраняется в каталог /data/app/, что занимает как раз те пресловутые 3.8 мб. Из APK извлекается файл classes.dex (с байткодом). Он преобразуется в платформенную библиотеку для выполнения кода на процессоре телефона. Откомпилированная после первого запуска приложения библиотека находится в /data/dalvik-cache. Именно она и занимает большую часть объема (как правило, она минимум в два раза больше APK). Зачем все это делается? Для скорости работы приложения. Таким образом не приходится компилировать все байткоды, а также запускать исполнительную среду Java при каждом запуске приложения. P.S: в качестве развлечения можете взять практически любую APK и сравнить ее объем с размером итогового приложения, они гарантированно будут сильно отличаться.
Комментариев нет:
Отправить комментарий