как сжать приложение на андроид
Сжимаем APK, стараясь сохранить его работоспособность
/ PxHere / PD
Оптимизация веса APK — это нетривиальная, но очень актуальная во времена Instant App, задача. Включение proguard избавит вас от ненужного кода, если ваши зависимости можно определить на этапе компиляции, но в APK есть ещё несколько видов файлов, которые можно исключить из сборки.
Под катом о том, как сделать зависимости — определяемыми на этапе компиляции, какие файлы можно исключить из сборки и как это сделать, а так же, разберём, как исключить из сборки неиспользуемые компоненты, если у вас несколько приложений с общей кодовой базой.
Перед прочтением
Лишние файлы
Начнём с простого. Если вы не используете kotlin-reflect, то можете исключить из сборки мета-информацию о kotlin-классах. Сделать это можно следующим образом:
В build.gradle (Module: app)
Зависимости
Этот код убирает зависимость библиотеки ktor-client на kotlin-reflect. Если хотите исключить что-то другое — подставьте свои значения.
Проверьте ваши XML
Проверьте ваш DI
Если вы, как и мы, используете runtime DI, то проверьте, нет ли у вас provider’ов для тех зависимостей, которые вы не используете. Proguard не может исключить их из сборки потому что они не являются неиспользуемыми с точки зрения компилятора. Вы используете их при построении графа зависимостей.
Исключите отладочные зависимости из релизной сборки
Инструменты отладки могут занимать неожиданно много места. Например, stetho весит около 0.2 мб после сжатия! В любом случае, лучше исключить из релизной сборки всю отладочную инфраструктуру, чтобы никто не смог узнать о вашем приложении слишком много, просто скачав его из Google Play.
Платформы
Иногда на одной кодовой базе выпускаются несколько разных версий приложения. Это могут быть разные версии для разных стран или регионов, или, как в нашем, случае, для разных клиентов. Ниже советы о том, как разгрузить платформу.
/ PxHere / PD
Наш опыт
Мы разрабатываем конструктор мобильных приложений E-SHOP. У нас несколько десятков клиентов и у каждого свой индивидуальный набор компонентов. Некоторые компоненты используются всеми клиентами, некоторые — только частью. Наша задача — включить в сборку клиента только те компоненты, которые ему нужны.
Исключение компонента по флагу
Это — упрощённая версия конфигурации. Настоящая сложна из-за интеграции с нашим CI.
Теперь известно, активен ли компонент, на этапе компиляции, и proguard может исключить его из сборки!
Снова XML
Теперь проблема с неиспользуемыми XML-layouts приобретает новый масштаб! Нельзя просто взять и удалить разметку какого-нибудь компонента просто потому, что некоторым клиентам он не нужен.
Аннотация @Keep
Я не нашёл простого и безопасного способа убрать эту аннотацию. Если вы знаете, как — напишите, пожалуйста, в комментариях.
И вновь DI
Последний, но не по значимости пункт. DI при отключаемых компонентах. Тут всё просто: для каждого компонента мы используем свой контейнер, а общие зависимости подключаем через отдельный модуль.
Выводы
Все оптимизации, представленные в статье — это «низковисящие фрукты». Их довольно легко внедрить и быстро получить результат. До -43% для уже оптимизированного APK в нашем случае. Надеюсь, я сэкономил ваше время тем, что перечислил всё в одном месте.
Как уменьшить размер APK файла?
Всем известно, что Android Market накладывает ограничение на размер публикуемых программ. Сегодня в магазине можно разместить приложение, размер которого не превосходит 50 Мб, но что же делать, если Вы вылезли за это ограничение?Дэвид Карлссон, архитектор приложений из Sony Ericsson, дает несколько советов, которые помогут уменьшить размер вашего apk файла.
Что такое APK формат?
APK— аббревиатура от Android application package (файл архива Android программы). Каждое Android приложение упаковывается в apk архив, содержащий исполняемый код (.dex файлы), ресурсы, активы и файл манифеста. Фактически apk представляет собой обычный zip архив, поэтому не имеет смысла предварительно сжимать файлы ресурсов каким-нибудь архиватором.
Почему нужно стремиться к экономии памяти? Размер памяти на смартфоне ограничен несколькими мегабайтами, а пользователю нужно хранить кучу разной информации: фотографии, музыку, архив сообщений. Поэтому размер приложения отнюдь не последний фактор, учитываемый пользователем при поиске программ.
Как уменьшить размер APK файла?
Ниже приводится несколько полезных советов, которые помогут вам уменьшить размер ваших Android программ.
Используйте ProGuard
ProGuard— это обфускатор, попутно сжимающий размер кода. Как известно, Java приложения компилируются в байт-код, из которого довольно просто восстановить java исходник. Для усложнения жизни любителям реверс-инженерии придумали обфускаторы. Обфускатор служит для запутывания исходного кода программы, при сохранении исходной функциональности. Получается рабочий исходник, мало пригодный для чтения человеком. Программа ProGuard помимо собственно обфускации сжимает исходный код, делает его более быстрым и менее требовательным к памяти. Очень важно после использования ProGuard провести тщательное тестирование полученного приложения. Возможны ситуации, когда в ходе оптимизации и обфускации кода изменяется его функциональность. В таких случаях важно позаботиться о сохранении symbol mapping, чтобы можно было восстановить из обфусцированного кода исходный и попытаться выявить источник проблем.
Удаляйте отладочную информацию
Дэвид рекомендует перед компиляцией финальной версии программы убрать из нее все связанные с отладкой конструкции, поскольку они не несут для пользователя ничего полезного.
Входящий в состав Android SDK компилятор умеет автоматически удалять отладочный код из релиза, но программист должен позаботиться о правильном оформлении своей программы, поместив отладочные команды в специальный блок:
Часто начинающие разработчики оформляют отладочный код в виде отдельных методов
Удаляйте отладочные символы из нативных библиотек
Использование символов отладки имеет смысл, когда ваше приложение находится в стадии разработки. Если Вы решили собрать релиз, Дэвид рекомендует удалить символы отладки из нативных библиотек (.so файлы). Это можно сделать, вызвав команду arm-eabi-strip из Android NDK.
Используйте рекомендуемые медиа форматы
Если ваше приложение содержит графику, видео и аудио данные, использование «правильных» форматов может положительно сказаться на размере приложения. Дэвид рекомендует использовать следующие форматы:
Компрессируйте PNG файлы
Довольно часто получаемые в результате работы графических редакторов PNG файлы плохо скомпрессированы и их размер может быть дополнительно уменьшен с помощью специальных утилит:OptiPNGилиPNGCrush. Обе эти программы пересжимают PNG файл, сохраняя качество картинки. Программы перебирают параметры PNG фильтров и настроек алгоритма сжатия и создают на выходе файл с оптимальными параметрами.
Используйте 9patch PNG для масштабируемых изображений
Удаляйте неиспользуемые ресурсы
Как правило, папка res содержит несколько неиспользуемых ресурсов. Для их удаления можно использовать специальную утилитуandroid-unused-resources, которая сканирует Ваш исходный код и удаляет из проекта неиспользуемые ресурсы.
Избегайте дублирования
Убедитесь, что в вашем приложении не дублируется функциональность и активы (строки, рисунки и т.п.). Важно понимать, какие Android API вы используете, и знать их функциональность. Может получиться, что в вашей программе для решения задачи, которую можно решить средствами уже подключенных API, подключается новый API. Дублирование кода, например, включение в программу функций делающих одно и то же, также ведет к разбуханию APK файлов.
В Android появится функция для сжатия неиспользуемых приложений
Команда Android Open Source Project разрабатывает функцию для оптимизации расхода памяти приложениями, которые редко используются, сообщает Android Police.
Команда Android Open Source Project разрабатывает функцию для оптимизации расхода памяти приложениями, которые редко используются, сообщает Android Police.
В одной из будущих сборок Android 12 для разработчиков, которая может выйти уже в следующем месяце, замечен новый системный процесс под названием Hibernation. Он позволит уменьшать объём памяти, которую занимают на устройстве неиспользуемые приложения. Первым про эту функцию написали журналисты XDA Developers.
Пока не понятно, будут ли приложения переводиться в «спящий режим» автоматически по прошествии какого-то времени или самим пользователем вручную до момента, когда приложения снова понадобятся.
Судя по последним изменениям в исходный код AOSP, функция будет работать по-разному в зависимости от того, будет ли она активирована для одного пользователя Android-устройств с несколькими профилями, или для всех. Если только для одного, то кэш приложений будет очищаться только для этого пользователя.
В дальнейшем планируется реализовать поддержку экономной функции на «пакетном уровне» для всех пользователей, хотя в чём будет состоять отличие, неясно, отмечает AP. Возможно, будут удаляться все данные приложения или даже оно само будет деинсталлировано и заново установлено при выводе из спящего режима, предполагает издание. GSMArena считает, что приложения будут просто каким-то образом сжиматься и снова распаковываться, когда у пользователя возникнет в них необходимость.
Хотите сообщить важную новость? Пишите в Телеграм-бот.
А также подписывайтесь на наш Телеграм-канал.
Как уменьшить приложение (.apk) размер
когда я устанавливаю свое приложение на телефон для тестирования,он показывает, что это огромный размер, 11.35 MB. Это очень простое приложение, которое позволяет пользователю просматривать забавные факты. Единственная причина, по которой я могу думать о том, что в drawables есть 14 JPEG-файлов, которые служат фоновыми изображениями забавных фактов. Средний размер составляет около 500 КБ.
Я хотел бы обрезать размер моего приложения, чтобы не использовать драгоценные ресурсы на устройстве пользователя. Помимо того, чтобы просто избавиться от фотографий, есть ли способы оптимизировать размер файла apk?
EDIT: фотографии-это фотографии, сделанные мной с помощью самого телефона Android.
22 ответов
другие ответы упоминают сжатие изображений. Вы также можете попробовать ProGuard сжать свой байткод. вот статья при применении ProGuard к Android-приложению.
убедитесь, что ваши jpg не хранятся в более высоком разрешении, чем необходимо. Хороший телефон Android имеет разрешение экрана 1920×1200 или 2560×1440 (около 2015) 800 x 480, поэтому ваши фоны не должны содержать больше пикселей, чем это (если ваше приложение не поддерживает какое-то масштабирование). Кроме того, фотографии фона? Если нет, вы можете обнаружить, что использование векторного формата изображения, такого как svg, или с динамической палитрой, такой как gif, уменьшит размер файла даже больше.
обновление
с введением библиотеки поддержки 23.2, теперь вы можете заменить многие из ваших активов изображения с SVG (ж/ или без анимации), чтобы уменьшить размер apk дальше.
оригинал
Это может быть поздний ответ, но может быть полезно для будущих пользователей.
передать этот ссылке. Чтобы резюмировать страницу, он упоминает ниже ключевые моменты, которые помогут уменьшить размер apk в тотальность:
помимо оптимизации изображений, я также счел полезным проверить используемые вами библиотеки поддержки. У меня есть относительно простые платформы таргетинга приложений с API >=10, но мой APK оказался 2.2 M, или после использования ProGuard, 1.4 M. когда я заглянул в APK, код был 1.5 M, и было много дополнительных ресурсов (abc_*), о которых я ничего не знал.
оказывается, мне не нужен appcompat-v7, только поддержка-v4, и внесение этого изменения в мои зависимости уменьшило размер APK до 1.7 M (0.9 M с ProGuard). Понятно, что библиотеки поддержки несут много дополнительных (код и ресурс), поэтому убедитесь, что вы используете только те, которые вам нужны, может помочь.
есть две вещи, которые я могу отметить из опыта.
Я знаю, что я поздно здесь, чтобы ответить на этот вопрос, но я уменьшить размер приложения, используя методы ниже я хочу поделиться этими вещами со всеми.
поиск DrawableTint и TintableImageview
4)-Используйте 9-патч изображения и избежать дублирования изображения или что-нибудь в коде приложения.
Ниже приведены ссылки для ссылки на сокращение APK размер.
формат изображения WebP: обеспечивает сжатие с потерями (например, JPEG), а также прозрачность (например, PNG), но может обеспечить лучшее сжатие, чем JPEG или PNG
четыре способа и размер вашего приложения станет от 11.35 MB до около 5 MB. Во-первых, проверьте компоненты приложения через App Analyzer (встроенная функция Android studio), просто нажмите на сборку сверху и нажмите Analyze APK. Он покажет вам все, что компоненты apk использует.
шагов для достижения этих шагов.
1 & 2. Для Proguard и ShrinkResource
в gradle просто добавьте
очень простой процесс: просто щелкните правой кнопкой мыши на папке drawable папка (drawable, drawable-hdpi, drawable-xhdpi и т.д.) и нажмите на convertToWebP (последний вариант).
минимальная версия SDK должна быть 18.
вот мы идем: теперь проанализируйте размер вашего приложения.
Я думаю, что это в должности даст вам лучшее представление обо всех возможных методах использования, чтобы уменьшить размер apk с огромным отрывом.
Я дам вам отрывок из того же.
Это удаляет все другие строковые файлы, которые могли быть добавлены другими библиотеками на языках, которые вы даже не поддерживаете.
наряду с приведенными выше наиболее загруженными ответами, я хотел бы ответить последними инструментами из Android Studio Google.
Google недавно представила Android App Bundle в котором playstore автоматически доставил оптимизированную версию apk для конечных устройств. Теперь разработчикам просто нужно сгенерировать подписанный пакет и загрузить в play store, работа dev завершена. Не забывайте всегда использовать SVG-изображения.
преобразовать в WebP что значительно уменьшит размер приложения
это уменьшило размер приложения моего приложения, которое было 40 mb to 25 mb
действия:
вот что вы можете сделать для уменьшения размера сборки по изображениям (также может работать для iOS) Здесь я делюсь отличным инструментом под названием «OPTIPNG» (вы можете скачать с здесь), который поможет нам уменьшить сборку специально с помощью изображений, это уменьшит размер изображения для PNGs мы используем без ухудшения качества (разрешение и цвет) изображения.
пример-Если ваш размер изображения выключен 698 КБ, то он будет просто уменьшен до 564 КБ
здесь это шаги выполнения для OPTIPNG 0.7.5
3) введите «sudo make install»
установки должно быть сделано сейчас
4) Введите » optipng / ваш путь изображения
вы получите результат в байт, а также можете проверить свой размер
вы также можете попробовать http://www.webresizer.com/resizer/ его онлайн-инструмент, сделал довольно хорошую работу для меня.
Я Trimage Image compressor для сжатия изображений и уменьшения размера apk.Он имеет хорошую скорость сжатия, прост в использовании, сохраняет качество изображения и также доступен в Ubuntu.Кроме того, я включил ProGuard и работал над проблемами корпии, чтобы уменьшить размер APK.
Ниже приведены способы уменьшения размера приложения. Подробно объясняется в следующей ссылке.
оптимизация png изображений
удалить неиспользуемые ресурсы
сжатие Jpeg изображений
удалить отладки информация
широко использовать корпию
повторное использование ресурса, когда это возможно
рекомендуемые форматы медиа
вы можете уменьшить размер apk по del R.class и заменяет ссылку на константу.
APK содержит zip-файл всех вещей, которые ваше мобильное приложение имеет, включая файлы классов Java, файлы ресурсов и другие.
один из простых способов сделать ваш APK меньше-уменьшить количество и размер ресурсов, которые он содержит. В частности, можно удалить ресурсы, которые больше не используются приложением, и вместо файлов изображений можно использовать масштабируемые Рисоваемые объекты.
использовать MinifyEnable true и ShrinkResources true
MinifyEnabled уменьшит ваш код по мере его сжатия. В то время как shrinkResources сокращает ресурсы.
чтобы использовать ShrinkResources, вы должны установить minifyEnbled true.
Лучшие приложения для сжатия изображений на Android
Производители устройств создают все более совершенные цифровые камеры для лучшей передачи изображения. Это позволяет нам даже на миниатюрных смартфонах создавать снимки просто потрясающего качества. Однако с ростом качества растет и объем файлов. И для того, чтобы просто и быстро передать их, может потребоваться довольно много времени. Выход очевиден — изображение можно сжать. Но какой компрессор сработает лучше и не превратит ваше фото в мешанину из пикселей? Мы расскажем вам об этом в нашей новой подборке с лучшими приложениями для сжатия изображения на Android.
Android отлично справляется со сжатием фото
Bulk Image Compressor — Работает быстро и без накладок
Это приложение поможет сжать ваши изображения очень быстро и качественно. Вы также можете выбрать несколько изображений и сжать их разом. Это очень удобно, если вам нужно отправить серию снимков. Плюс ко всему, у вас есть возможность поделиться результатом непосредственно из самого приложения без дополнительной подгрузки картинок в сторонние программы.
Photoczip — Сделано по принципу все в одном
Photoczip нацелен только на одно. Он должен сжимать размер фото (и других изображений), причем, как утверждают разработчики, делает он это потери качества изображения. Дополнительным бонусом будет преобразование сжатых фото в архив формата Zip. Кроме того, вы можете конвертировать фотографии в форматы PNG в JPG, а также сохранять, удалять и редактировать теги оригинальных фотоснимков. Ну а если вы заботитесь об уникальности фото, то можете еще и водяной знак на изображение нанести. Кроме того, приложение Photozip — это полностью бесплатная программа без рекламы. А подобное редко встретишь сегодня.
PicTools — Просто и со вкусом
Это одно из лучших приложений для оптимизации размера изображений, что поставляется в комплекте со всем необходимым инструментарием. Сжатие, изменение размера, инструмент по оптимизации и обрезке фото и так далее. Вы можете легко взаимодействовать с 25-ю фотографиями за раз. А максимальный размер поддерживаемых файлов тут — 100000 на 100000 пикселей. Кажется, что смартфонов, который могут сделать столь массивные фото не существует. Или они все же есть? Напишите об этом в нашем чате в Телеграм.
Reduce Image Size — Ничего лишнего
Если вы ищите программу, которая просто сжимала бы фотографии и при этом не занимала бы много места, то Reduce Image Size для вас. При этом вы вольны не только изменять размер файла, но и конвертировать его в разные форматы — от стандартного jpeg до не самого распространенного svg. Стоит ли говорить, что и как просмотрщик изображений Reduce Image Size тоже выше всяких похвал?
Photo Compress 2.0 — Сжатие выходит на новый уровень
Еще одно бесплатное приложение для сжатия фотографий без потери качества. При этом важно заметить, что в отличие от других рассматриваемых сегодня программ, Photo Compress 2.0 не только обладает всеми функциями конкурентов, но и сохраняет данные EXIF после конвертирования. При этом можно редактировать не только содержимое файлов, как Photoczip, но и обрабатывать сами снимки посредством простых инструментов
Новости, статьи и анонсы публикаций
Свободное общение и обсуждение материалов
На Android существует огромное количество приложений для определения номера, но самые лучшие – это решения Google, Яндекс и Лаборатории Касперского. Они обладают обширной базой телефонных номеров и в большинстве случаев без труда определяют, кто вам звонит, подсказывая, стоит брать трубку или нет. Другое дело, что абоненты, которых они определяют, ограничиваются только корпоративными номерами. То есть это будут либо банки, либо торговые сети, либо службы доставки и иже с ними. А вот определить, что за человек вам звонит, они не могут. Но решение есть.
Раньше все мы слушали музыку через плееры и скачивали ее себе на устройства, но в последние годы политика стриминговых сервисов начала проникать и к нам в Россию. Многие пользователи слушали музыку в ВКонтакте, пока социальная сеть не начала ограничивать нас. Сначала запретили скачивать музыку, затем ограничили онлайн прослушивание до 30 минут в сутки, а теперь и вовсе тотально запретили ей пользоваться, при выходе из приложения на смартфоне. Сегодня предлагаю вашему вниманию подборку музыкальных сервисов, в которых можно слушать музыку онлайн, без смс и регистрации.
Можно ли сегодня купить хороший смартфон дешевле 20 тысяч. Однозначно да. Другое дело, что есть несколько оговорок. Во-первых, брать нужно не на старте продаж, а желательно минимум через полгода. К тому моменту цена аппарата как раз снижается на 30-40%. А, во-вторых, нужно разузнать, сколько смартфон стоит за границей. Потому что бывает так, что в России из-за региональных особенностей ценообразования аппарат оказывается намного дешевле, чем в Европе или США. Разберёмся подробнее, что к чему.