Как уменьшить приложение на телефоне

p, blockquote 1,0,0,0,0 —>

Если значки на экране телефона плохо видно, то можно настроить их подходящий размер. Изменить параметры экрана возможно при помощи стандартных средств и сторонних приложений. Давайте рассмотрим самые эффективные способы, как увеличить или уменьшить значки на экране телефона Андроид.

p, blockquote 1,0,0,0,0 —>

Данная статья подходит для всех брендов, выпускающих телефоны на Android 10/9/8/7: Samsung, HTC, Lenovo, LG, Sony, ZTE, Huawei, Meizu, Fly, Alcatel, Xiaomi, Nokia и прочие. Мы не несем ответственности за ваши действия.

p, blockquote 2,0,0,0,0 —>

Внимание! Вы можете задать свой вопрос специалисту в конце статьи.

p, blockquote 3,0,0,0,0 —>

  1. Масштаб интерфейса Андроид
  2. Первый метод
  3. Второй метод
  4. Приложение Beautiful Icon Styler
  5. Minimal ADB and Fastboot для Windows
  6. Приложение Google Now Launcher
  7. Приложение Apex Launcher

Он пользуется успехом благодаря скорости экрана и возможности смотреть за тем, как будет выглядеть экран телефона.

На что масштаб оказывает влияние?

Самое важное, на что влияет большой масштаб экрана – это количество информации на 1 странице. Чем больше масштаб, тем больше информации поместится на экране. Это избавит пользователя от необходимости слишком часто перелистывать страницы на смартфоне.

Как изменить масштаб приложение на Андроид

Маленький масштаб, наоборот, существенно снижает возможность просмотра большого числа информации на экране и создаёт определённые неудобства для человека.

Рекомендуем уменьшать масштаб людям с нарушением зрения. Если чтение информации даётся с трудом, старайтесь давать глазам отдохнуть и не перенапрягайте зрение. Часто глазам человека требуется определённый период времени, чтобы привыкнуть к новым размерам.

Вот что затронет изменение масштаба:

  1. Календарь, переводчик и другие приложения.
  2. Диалоговые окна.
  3. Меню настроек и СМС-приложения.
  4. Play Market и прочее.

А на это изменения не повлияют:

  1. Размер картинки и видео в игре.
  2. Размер клавиатуры и текстов в целом.
  3. Видеоплееры, фотографии в галереях и прочее.

На Android 7 нужный раздел находится прямо в главном меню настроек. На версиях 8 и новее – в подменю «Система», а на MIUI – в разделе «Расширенные настройки».

Альтернативный способ

Есть еще один способ изменить масштаб в ОС Android, который не требует использования настроек для разработчика, но обладает меньшей гибкостью. Для того, чтобы увеличить или уменьшить шрифт, найдите подменю «Специальные возможности». В чистом Андроиде он расположен в главном меню, в MIUI – в подменю «Расширенные настройки».

Как изменить масштаб приложение на Андроид

Найдите пункт «Масштаб изображения на экране» и в открывшемся меню используйте кнопки «+» и «-» для смены размера элементов интерфейса. Он меняется сразу, на экране наглядно демонстрируется размер шрифта. Однако эта регулировка не столь плавная, как в параметрах разработчика, и не позволяет менять показатель DPI плавно.

Как и предыдущий способ, этот тоже ограничен размером 320 DPI, ниже которого выставить параметр не получается. К сожалению, обойти это ограничение Андроида без установки альтернативной прошивки нельзя, поэтому придется подбирать наиболее подходящий вариант из доступных.

Все действия выполнены на телефоне Huawei Y6 Prime 2018.

часто бывает, что даже максимально возможный масштаб оказывается недостаточным, особенно для людей с проблемами зрения

Даже имея гигантский экран в смартфоне, на нем может быть неудобно читать текст. Можно использовать стандартный прием – увеличить масштаб в настройках Android. Однако часто бывает, что даже максимально возможный масштаб оказывается недостаточным, особенно для людей с проблемами зрения. Существует способ обойти ограничения ОС и задать более удобный масштаб.

Все действия выполнены на телефоне Huawei Y6 Prime 2018.

Сначала скачайте на компьютер пакет Android Debug (ADB) с официального сайта Android Developer. Для Windows его размер чуть меньше 11 МБ. Распакуйте архив в любую папку, например, platform-tools.

Как изменить масштаб приложение на Андроид

Откройте в телефоне режим разработчика. Для этого зайдите в настройки и включите соответствующий переключатель. В некоторых телефонах необходимо предварительно в разделе «Система» найти «Номер сборки» и нажать на него 7-10 раз подряд.

Зайдите в меню «Для разработчиков» и включите переключатель «Отладка по USB».

Подключите смартфон кабелем USB к компьютеру.

На ПК запустите командную строку cmd.exe, нажав Windows + R, и введите в окне cmd. В командной строке перейдите в папку со скачанным ADB, введя команду CD и путь к папке. Например: cd c:temporary_downloadsplatform-tools

В командном окне введите adb device, чтобы проверить, подключен ли ваш гаджет, – на экране должен появиться серийный номер.

Затем введите adb shell dumpsys display, чтобы узнать параметры экрана. Найдите значения DPI и разрешение.

Запишите эти цифры отдельно, чтобы можно было вернуться к ним впоследствии. В Huawei Y6 Prime 2018 это 720х1440 и 320 (272,955х270,933) dpi.

Как изменить масштаб приложение на Андроид

Введите команду adb shell wm density с цифрой желаемого DPI. Например, adb shell wm density 240. Экспериментальным путем подберите наилучшее значение. Для большинства телефонов параметр DPI находится в пределах от 120 до 640.

По завершении настройки введите команду adb reboot для перезагрузки смартфона.

Гаджет предоставлен магазином MOYO

можно ли плавно масштабировать размер шрифта с шириной тела или родительского элемента ? Я ищу решение без javascript. Можно ли указать rem на ширину ?

Как изменить масштаб приложение на Андроид

Как мне масштабировать размер шрифта выше?

2 ответа

Как изменить размер шрифта logcat в Android Studio 1.0.0? Я только нашел способ изменить цвет шрифта в Android Studio.

Я регулировал размер шрифта android studio (gui) в его настройках, но (похоже) Я набрал что-то не так, и размер шрифта изменился на 100+. Теперь я не вижу ничего, кроме одного символа на всем экране, и я не могу перейти к настройкам, чтобы изменить его обратно. Что же мне теперь делать? Какой файл.

Нажмите на File -> Settings -> Editor и проверьте поле: Change font-size with CRTL + Mouse Wheel и нажмите control и отрегулируйте размер шрифта с помощью колеса мыши!

Для MacBook Пользователей:

Чтобы изменить размер шрифта:

  1. Выберите меню Android Studio (которое находится рядом со значком Apple)
  2. Предпочтения
  3. Редактор
  4. Шрифт
  5. Размер (дайте размер)— > ok

Для увеличения и уменьшения масштаба в Редакторе:

  1. Выберите меню Android Studio
  2. Редактор
  3. Общие
  4. изменить размер шрифта (масштабирование) с помощью команды и колесика мыши— > ok

Похожие вопросы:

Размер шрифта в редакторе Android Studio кажется слишком маленьким. Как я могу сделать размер шрифта больше?

можно ли плавно масштабировать размер шрифта с шириной тела или родительского элемента ? Я ищу решение без javascript. Можно ли указать rem на ширину ?

Я знаю, как изменить размер шрифта в android studio, но можно ли изменить размер шрифта android studio в режиме презентации.

Как изменить размер шрифта logcat в Android Studio 1.0.0? Я только нашел способ изменить цвет шрифта в Android Studio.

Я регулировал размер шрифта android studio (gui) в его настройках, но (похоже) Я набрал что-то не так, и размер шрифта изменился на 100+. Теперь я не вижу ничего, кроме одного символа на всем.

Как изменить размер шрифта пользовательского интерфейса в Android Studio? Все предыдущие ответы сосредоточены на изменении размера шрифта в Редакторе.

У меня есть приложение Apple Watch, которое я хотел бы масштабировать размер шрифта в зависимости от размера экрана. В настоящее время единственный способ, который я нашел для масштабирования.

На самом деле у меня нет вопроса, но я просто хочу поделиться своими знаниями здесь. Это обмен знаниями о том, как автоматически масштабировать размер шрифта в echarts.js на основе размера div.

Я использую проекты Android Studio fo Flutter, и одна вещь, которую я хотел бы улучшить,-это размер всплывающего шрифта в окне редактора. Я думаю, что то же самое актуально для разработчиков a java.

Я не хочу изменять размер шрифта самого Android Studio, а скорее размер шрифта приложения, над которым я работаю. Все результаты поиска, которые я нашел, говорят о пользовательском интерфейсе или.

Firefox — это популярный альтернативный браузер на Android, который, как и Google Chrome, также позволяет обойти ограничения масштабирования, позволяя увеличивать масштаб изображения на любой веб-странице.

Включить принудительное увеличение в Chrome на Android

Google Chrome является браузером по умолчанию на большинстве устройств Android. Чтобы включить принудительное масштабирование в Chrome, откройте приложение на своем устройстве Android, а затем нажмите значок меню в правом верхнем углу.

Как изменить масштаб приложение на Андроид

В раскрывающемся меню нажмите «Настройки».

Как изменить масштаб приложение на Андроид

В меню «Настройки» прокрутите вниз и коснитесь «Специальные возможности», чтобы войти в меню специальных возможностей Chrome.

Как изменить масштаб приложение на Андроид

Нажмите на флажок «Принудительно изменять масштаб», чтобы включить его. Вы также можете изменить ползунок «Масштабирование текста», чтобы увеличить общий размер текста на любых веб-страницах, если хотите.

Как изменить масштаб приложение на Андроид

С включенной опцией «Принудительно изменять масштаб» Chrome теперь позволяет увеличивать любой веб-сайт, включая те, которые ограничивают масштабирование. Чтобы увеличить масштаб, используйте жесты пальцами.

Подобный жест работает в Google Photos, Google Maps и Google Chrome (версии iOS Chrome это не касается).

С современными телефонами довольно часто бывает неудобно работать одной рукой, особенно когда нужно приблизить или отдалить изображенный контент. Обычно для масштабирования используется жест щипок, при котором необходимо задействовать обе руки. Но на некоторых программах Google изменять размер изображения можно одним пальцем.

Подобный жест работает в Google Photos, Google Maps и Google Chrome (версии iOS Chrome это не касается).

Чтобы изменить масштаб, тапните дважды по экрану, но не поднимайте палец после последнего прикосновения. Удерживая палец, двигайтесь вниз для увеличения масштаба и вниз – для уменьшения.

Приложение позволяет изменить масштаб шрифта от 50% до 300%, но для своей работы требует наличия Root-прав. Если у вас их нет, рекомендую прочитать эту статью. Если же вы вообще не знаете что такое Root, узнать можете здесь.

Далеко не всем подходит стандартный размер шрифта в ОС Android: для кого-то он слишком мелкий, а для других наоборот – крупный. В любом случае, если вас не устраивает этот параметр в своем телефоне или планшете – выход есть. В одной из прошлых статей я уже писал о том, как установить собственный шрифт на планшет или смартфон. Сегодня я расскажу, как с помощью бесплатного приложения Big Font уменьшить, или же увеличить размер шрифта.

Приложение позволяет изменить масштаб шрифта от 50% до 300%, но для своей работы требует наличия Root-прав. Если у вас их нет, рекомендую прочитать эту статью. Если же вы вообще не знаете что такое Root, узнать можете здесь.

Инструкция по использованию приложения Big Font

  1. Для начала найдите приложение Big Font в Play Market и установите его. Либо скачайте по этой ссылке.
  2. Запустите приложение, нажмите кнопку «Назад» на своем телефоне или планшете, чтобы закрыть экран «Что нового».
  3. Теперь с помощью перелистывания или выпадающего списка сверху выберите необходимый размер шрифта (как показано на скриншоте). В центральной части экрана доступен предосмотр выбранного масштаба, а в нижней – текущего, чтобы вы могли сравнить изменения. Как изменить масштаб приложение на Андроид
  4. После выбора необходимого значения – нажмите кнопку «Применить», чтобы изменения вступили в силу. Сделано!
  5. Если готовая градация масштабирования шрифтов в программе вас не устраивает – нажмите на иконку «+» и с помощью специального ползунка выставьте свое значение в процентах. После этого нажмите «Добавить этот размер шрифта». Теперь вы сможете выбрать его в выпадающем списке. Как изменить масштаб приложение на Андроид

Программа может вносить изменения в системные файлы, поэтому перед всеми манипуляциями лучше сделать резервную копию данных вашего устройства.

  1. Скрыть/показать лупу — дважды нажмите на экран тремя пальцами.
  2. Изменить масштаб — дважды нажмите на экран тремя пальцами за пределами лупы и, удерживая, проведите вверх или вниз, чтобы увеличить или уменьшить изображение на экране.
  3. Перемещать лупу — нажмите на край лупы и, удерживая, перемещайте ее по экрану.
  4. Прокручивать изображение — прокручивайте увеличенное изображение тремя пальцами.

Справка для ПК

Справка для моб. устройств triangle-down

Для увеличения масштаба на сайте m.facebook.com можно использовать встроенные функции устройства.

Чтобы поменять масштаб в приложении Facebook для Android, используйте функцию увеличения.

Чтобы включить увеличение:

  1. Перейдите в настройки специальных возможностей для слабовидящих.
  2. Нажмите Жесты для увеличения.
  3. Нажмите параметр, чтобы включить жесты для увеличения.

Чтобы использовать функцию увеличения:

  1. Скрыть/показать лупу — трижды нажмите на экран одним пальцем.
  2. Изменить масштаб — сведите или разведите пальцы, чтобы изменить масштаб.
  3. Перемещать лупу — сведите пальцы и, удерживая, перемещайте лупу по экрану.

Настройка масштаба также может быть доступна в мобильном браузере Android.

  1. Перейдите на главный экран телефона или планшета.
  2. Нажмите Настройки .
  3. Нажмите Общие > Специальные возможности > Масштаб.
  4. Нажмите рядом с параметром Увеличение, чтобы включить его.

Чтобы использовать функцию изменения масштаба:

  1. Скрыть/показать лупу — дважды нажмите на экран тремя пальцами.
  2. Изменить масштаб — дважды нажмите на экран тремя пальцами за пределами лупы и, удерживая, проведите вверх или вниз, чтобы увеличить или уменьшить изображение на экране.
  3. Перемещать лупу — нажмите на край лупы и, удерживая, перемещайте ее по экрану.
  4. Прокручивать изображение — прокручивайте увеличенное изображение тремя пальцами.

Настройка размера текста не влияет на то, как видят публикацию ваши друзья. Подробнее о том, почему короткие текстовые публикации могут выглядеть крупнее остальных независимо от заданных настроек.

Надеемся, что эта статья была вам полезной, а если у вас остались вопросы, пишите нам на [email protected] .

Вы можете изменить размер виджета в любой момент, как на этапе его добавления, так и когда он уже добавлен на один из экранов. Чтобы узнать как изменить размер виджета на этапе его добавления, прочитайте данную статью .

Если же вы хотите изменить размер уже созданного виджета, нажмите и удерживайте палец на нужном виджете до появления рамки, а затем потяните необходимую сторону вверх/вниз или вправо/влево, чтобы установить нужный размер. Чтобы выйти из режима редактирования, нажмите на пустом месте на экране за пределами виджета.

Как изменить масштаб приложение на Андроид

Актуально для Android версий 9.0 и выше.

Надеемся, что эта статья была вам полезной, а если у вас остались вопросы, пишите нам на [email protected] .

1. Попробуйте сторонние программы запуска

  1. Откройте Nova Setting на вашем устройстве.
  2. Нажмите на «Главный экран» вверху дисплея.
  3. Выберите вариант «Расположение значков».
  4. Переместите палец на ползунок «Размер значка», чтобы настроить размер значков приложений.
  5. Нажмите назад и посмотрите результаты.

Как уменьшить размер приложений на моем Samsung?

Коснитесь «Настройки» на главном экране. 4 Коснитесь сетки экрана приложений. 5 Выберите сетку соответственно (4 * 4 для значка больших приложений или 5 * 5 для значка меньших приложений).

Могу ли я на Самсунг сделать иконки меньше?

Если вы хотите внести это изменение в свой телефон Samsung, просто коснитесь и удерживайте пустое место на главном экране, а затем нажмите на значок настроек главного экрана. Вы должны увидеть два выбора «Сетка главного экрана» и «Сетка экрана приложений». … Это всего лишь несколько способов изменить размер значка на вашем телефоне Android.

Как сделать значки пользовательского интерфейса меньше?

Пытаться «Настройки> Дисплей> Шрифт и масштаб экрана» и уменьшите масштаб экрана..

Как мне изменить размер моих приложений?

Шаги, чтобы следовать

  1. Перейдите в меню «Настройки».
  2. Затем нажмите кнопку «Показать».
  3. После этого вам нужно будет прокрутить вниз и выбрать там опцию «Дополнительно».
  4. Затем нажмите на опцию «Размер экрана».
  5. На следующей странице вы сможете изменить размер значков на вашем телефоне Android.

Как уменьшить размер своих приложений?

Уменьшите размер приложения

  1. Удалите неиспользуемые ресурсы.
  2. Сведите к минимуму использование ресурсов из библиотек.
  3. Поддерживайте только определенные плотности.
  4. Используйте объекты, которые можно рисовать.
  5. Повторно используйте ресурсы.
  6. Рендеринг из кода.
  7. Обработка файлов PNG.
  8. Сжимайте файлы PNG и JPEG.

Как изменить размер приложения на главном экране?

Как изменить размер значков на Android?

  1. Проведите вниз по главному экрану и коснитесь значка шестеренки в правом верхнем углу, чтобы войти в меню настроек Android.
  2. Прокрутите вниз и выберите «Дисплей», чтобы открыть меню «Настройки дисплея».
  3. Выберите «Дополнительно», чтобы развернуть этот раздел.
  4. В меню настроек Advanced Display выберите Display size.

Как мне вернуть мои значки к нормальному размеру?

Щелкните правой кнопкой мыши (или нажмите и удерживайте) на рабочем столе наведите указатель на «Просмотр» и выберите «Крупные значки», «Средние значки» или «Мелкие значки». Совет. Вы также можете использовать колесо прокрутки мыши для изменения размера значков на рабочем столе. На рабочем столе нажмите и удерживайте Ctrl, прокручивая колесо, чтобы увеличить или уменьшить значки.

Можете ли вы изменить значки приложений на Samsung?

Изменить отдельные значки на вашем Android-смартфоне * довольно просто. Найдите значок приложения, который хотите изменить. Нажмите и удерживайте значок приложения, пока не появится всплывающее окно. Выберите «Изменить»..

Как уменьшить размер приложений на Samsung Galaxy s21?

Смартфоны Samsung: как настроить размер значков приложений?

  1. 1 На главном экране коснитесь пустой области и удерживайте ее.
  2. 2 Коснитесь Настройки главного экрана.
  3. 3 Коснитесь Сетка главного экрана. Примечание. Чтобы изменить размер значка экрана приложения, нажмите на сетку экрана приложения.
  4. 4 Выберите размер сетки для отображения. Нажмите ПРИМЕНИТЬ, чтобы изменить сетку экрана на главном экране.

Help!

When I install my app on the phone to test, it is showing up to be a HUGE size, 11.35 MB. It is a very simple app that lets user browse through fun-facts. The only reason I can think of is that there are 14 JPEG files in the drawables which serve as background images of the fun-facts. The average size of these is about 500 KB.

I’d like to trim the size of my app, so as not to use up the precious resources on the user’s device. Other than just getting rid of the pictures, are there ways to optimize the size of apk file?

EDIT: The pictures are photos taken by me using the Android phone itself.

asked Sep 28, 2010 at 17:08

OceanBlue's user avatar

OceanBlueOceanBlue

9,06221 gold badges61 silver badges84 bronze badges

4

Other answers mention shrinking images. You might also consider trying ProGuard to shrink your bytecode. Here’s an article on applying ProGuard to an Android app.

answered Sep 28, 2010 at 17:25

Mauricio Scheffer's user avatar

Mauricio SchefferMauricio Scheffer

98.3k23 gold badges192 silver badges275 bronze badges

4

I would recommend that you compress the .jpg files as much as possible, this should greatly reduce the size of your .apk file. A tool such as Paint.NET which is free should help you do this. It has great resizing options.

answered Sep 28, 2010 at 17:13

Nate's user avatar

NateNate

29.9k22 gold badges110 silver badges182 bronze badges

6

Make sure that your jpg’s aren’t stored in any higher resolution than necessary. A nice Android phone has a screen resolution of 1920×1200 or 2560×1440 (circa 2015)800 x 480 , so your backgrounds shouldn’t contain any more pixels than that (unless your app supports some kind of zooming). Also, are the backgrounds photographs? If not, you may find that using a vector based image format like svg, or one with a dynamic palette like gif, will reduce the file size even more.

answered Sep 28, 2010 at 17:17

Dana the Sane's user avatar

Dana the SaneDana the Sane

14.6k8 gold badges57 silver badges80 bronze badges

2

UPDATE

With the introduction of Support Library 23.2, now you can replace many of your Image assets with SVG ( w/ or w/o animations) to reduce the apk size further.

ORIGINAL

This could be a late reply but might be helpful for future users.

Refer this link.
To summarise the page, it mentions below key points that will help reduce the apk size in totality:

  • Use ProGaurd
  • Remove any debug info you have in the app ( statements such as Log.i()). They can be wrapped in a condition which is only enabled while testing out the application.
  • Use recommended media formats
    • Image: PNG orJPG
    • Audio: AAC
    • Video: H264 AVC
  • Compress images using OptiPNG or PNGCrush
  • Use 9patch to scale images
  • Find unused resources using this tool and remove them.
  • Avoid using multiple resources to achieve the same functionality. The resources do not only limit to images but extend to APIs. At times a singular API can provide multiple results instead of using two or three different APIs. Duplicated strings and assets are also a waste of space.

answered Apr 14, 2015 at 4:58

Vaibhav Singhal's user avatar

0

Convert to WebP which will significantly reduce the app size

It reduced the app size of my app which was 40 mb to 25 mb

Steps:

  • Right click on res
  • convert to WebP

What it does: It reduces the size to png to WebP format. Quality is also not destroyed


enter image description here

answered Jul 15, 2018 at 16:32

Devrath's user avatar

DevrathDevrath

41.2k52 gold badges191 silver badges286 bronze badges

Beyond optimizing images, I also found it useful to verify the Support Libraries you use. I have a relatively simple application targeting platforms with API >=10, still my APK ended up being 2.2M, or after using ProGuard, 1.4M. When I looked into the APK, the code was 1.5M and there were a lot of additional resources included (abc_*) I knew nothing about.

Then I found this: https://developer.android.com/tools/support-library/features.html

Turns out I did not need appcompat-v7, only support-v4, and making this change to my dependencies reduced the APK size to 1.7M (0.9M with ProGuard).
Understandably, the Support Libraries carry a lot of extra (code and resource), so making sure you use only the ones you need might help.

(Even though -0.5M is not significant for a 11M app, I am posting this here because I kept ending up on this page while searching for a solution…)

answered Aug 20, 2014 at 13:32

sfThomas's user avatar

sfThomassfThomas

1,8352 gold badges17 silver badges26 bronze badges

0

  • Use tinypng compress your project’s png or
    jpg format image files, It can greatly reduce the size of the image
    without loss in image quality;
  • Some images use tinypng compress may distortion, you can convert
    these images to webP format, use 智图 or
    iSparta can convert other format to webP;
  • Use Lint check no use resources and delete it;

answered Apr 4, 2015 at 9:15

UperOne's user avatar

0

Four Ways and your app size will become from 11.35 MB to near about 5 MB.
First, check the app components via App Analyzer (an inbuilt feature of Android studio), Simply click on Build on the top and click Analyze APK. It will show you everything what components apk is using.

  1. Enable Proguard
  2. Enable ShrinkResource
  3. resConfigs (Name it, like if your app is in only one language eg English then simply specify resConfigs «en»)
  4. Convert all Images from .png or.jpg to webp (Most Important).

Steps to achieve these steps.

1 & 2. For Proguard and ShrinkResource

In gradle, simply add

               release {
                       minifyEnabled true
                       proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
                       shrinkResources true
                }
  1. For resConfigs

        defaultConfig {
        applicationId "com.goparties.gpuser"
        minSdkVersion 19
        targetSdkVersion 27
        resConfigs "en"
    

    }

  2. TO convert all Images from .png or.jpg to webp

Very easy process: Just right click on the drawable folder(drawable,drawable-hdpi, drawable-xhdpi etc) and click on convertToWebP (last option).

Min SDK version should be 18.

Here we go: Now analyze your app size.

Bingo !!!!!!

answered Apr 18, 2018 at 10:47

Minkoo's user avatar

MinkooMinkoo

4291 gold badge3 silver badges16 bronze badges

One more thing to add on image file size — different algorithms can have a significant effect on the final size. I found that Yahoo’s www.smushit.com is a lot more effective (at least for .png) than compressors and codecs I have on my computer right now.

answered Sep 18, 2011 at 18:23

ProjectJourneyman's user avatar

2

There are two things I can point out from experience.

  1. If you use eclipse to create apk file then the resources are duplicated (atleast it happened in my case), you can try using ant and build.xml to create the apk and compare the size.
  2. Also look into aliasing the resources. The link for it is here.

answered Sep 28, 2010 at 17:34

omermuhammed's user avatar

omermuhammedomermuhammed

7,3254 gold badges27 silver badges40 bronze badges

3

I think this post would give you a better idea on all the possible methods to use to reduce your apk size by a huge margin.

I will give you an excerpt of the same.

  1. Use only the required libraries from Google Play Services.
  2. Apply ProGuard to your app.
  3. Minify and shrink.
  4. Adopt vector drawables.
  5. Use the android lint.
  6. Split your apk based on the architectures
  7. Adding resConfigs in your gradle files to specify localization languages.

    This strips away all other string files that could’ve been added by other libraries in languages you don’t even support.

answered Aug 10, 2016 at 7:51

Capt's user avatar

CaptCapt

2514 silver badges11 bronze badges

WebP image format: provides lossy compression (like JPEG) as well as transparency (like PNG) but can provide better compression than either JPEG or PNG

Convert images to WebP

answered Jun 27, 2017 at 12:35

Vishal Yadav's user avatar

Vishal YadavVishal Yadav

3,6123 gold badges24 silver badges42 bronze badges

Along with the above most upvoted answers, I would like to answer with latest tools from Google’s Android Studio.

Google recently has introduced the Android App Bundle in which playstore automatically delivered optimized version of apk to end devices.
Now developers just has to generate Signed Bundle, and upload to play store, dev job is done. Don’t forget always use SVG images.

Also please have look into Deliver Features On-Demand with Dynamic Features

enter image description here

answered May 17, 2018 at 5:21

Suresh Maidaragi's user avatar

Here is what you can do for reduce build size by Images (Also can work for iOS)
Here I am sharing the great tool called “OPTIPNG ” (you can download from here )which will help us to reduced the build specially by using Images, It will reduced the Image size for PNGs we are using without degrading quality (Resolution and color) of the image.

Example – If your image size is off 698 KB then It will simpley reduced size to 564 KB

Here is the execution steps for OPTIPNG 0.7.5

1) Terminal -> CD /YourLocal path of OPTIPNG

2) type “./configure”

3) type ”sudo make install”

Intallation should be done now

4) type ” optipng /your image path

You will get result in byte and can also check your size

answered Aug 23, 2014 at 4:40

Kirtikumar A.'s user avatar

I used Trimage image compressor for compressing images and reducing the size of apk.It has good compression rate,easy to use,retains the quality of image and is also available in Ubuntu.Beside this i enabled ProGuard and worked on Lint issues to reduce APK size.

answered Mar 18, 2015 at 8:52

Android Developer's user avatar

Android DeveloperAndroid Developer

8,76118 gold badges80 silver badges134 bronze badges

0

Following are the ways to reduce the app size. In detail is explained in the following link.

https://medium.com/@fahimsakri/put-your-apks-on-diet-cc3f40843c84#.m860q8s1u

Proguard

vector drawables

Apk splits

Optimize png images

Remove unused resources

9-patch images

Compress Jpeg images

Remove debug information

Avoid duplications

Use lint extensively

Reuse resource whenever possible

Recommended Media formats

answered Apr 10, 2016 at 5:11

Fahim's user avatar

FahimFahim

12.1k5 gold badges38 silver badges57 bronze badges

APK contains a zip file of all the things that your mobile application has including Java class files, resource files among others.

One of the simple ways to make your APK smaller is to reduce the number and size of the resources it contains. In particular, you can remove resources that your app no longer uses, and you can use scalable Drawable objects in place of image files.

answered Jan 9, 2017 at 12:00

hnrindani's user avatar

Use MinifyEnable true
and ShrinkResources true

MinifyEnabled will reduce your code as it compresses it.
While shrinkResources shrink the resources.

To use ShrinkResources you have to set minifyEnbled true.

answered Oct 26, 2017 at 13:17

Maaz Patel's user avatar

Maaz PatelMaaz Patel

7162 gold badges7 silver badges20 bronze badges

use SVG images instead of jpg in order to reduce the apk size.
put your image files in the database .. so that the users of your app can download it from the database and it will reduce the app size dramatically..

answered May 10, 2017 at 11:09

Ameer Khalifullah's user avatar

0

Help!

When I install my app on the phone to test, it is showing up to be a HUGE size, 11.35 MB. It is a very simple app that lets user browse through fun-facts. The only reason I can think of is that there are 14 JPEG files in the drawables which serve as background images of the fun-facts. The average size of these is about 500 KB.

I’d like to trim the size of my app, so as not to use up the precious resources on the user’s device. Other than just getting rid of the pictures, are there ways to optimize the size of apk file?

EDIT: The pictures are photos taken by me using the Android phone itself.

asked Sep 28, 2010 at 17:08

OceanBlue's user avatar

OceanBlueOceanBlue

9,06221 gold badges61 silver badges84 bronze badges

4

Other answers mention shrinking images. You might also consider trying ProGuard to shrink your bytecode. Here’s an article on applying ProGuard to an Android app.

answered Sep 28, 2010 at 17:25

Mauricio Scheffer's user avatar

Mauricio SchefferMauricio Scheffer

98.3k23 gold badges192 silver badges275 bronze badges

4

I would recommend that you compress the .jpg files as much as possible, this should greatly reduce the size of your .apk file. A tool such as Paint.NET which is free should help you do this. It has great resizing options.

answered Sep 28, 2010 at 17:13

Nate's user avatar

NateNate

29.9k22 gold badges110 silver badges182 bronze badges

6

Make sure that your jpg’s aren’t stored in any higher resolution than necessary. A nice Android phone has a screen resolution of 1920×1200 or 2560×1440 (circa 2015)800 x 480 , so your backgrounds shouldn’t contain any more pixels than that (unless your app supports some kind of zooming). Also, are the backgrounds photographs? If not, you may find that using a vector based image format like svg, or one with a dynamic palette like gif, will reduce the file size even more.

answered Sep 28, 2010 at 17:17

Dana the Sane's user avatar

Dana the SaneDana the Sane

14.6k8 gold badges57 silver badges80 bronze badges

2

UPDATE

With the introduction of Support Library 23.2, now you can replace many of your Image assets with SVG ( w/ or w/o animations) to reduce the apk size further.

ORIGINAL

This could be a late reply but might be helpful for future users.

Refer this link.
To summarise the page, it mentions below key points that will help reduce the apk size in totality:

  • Use ProGaurd
  • Remove any debug info you have in the app ( statements such as Log.i()). They can be wrapped in a condition which is only enabled while testing out the application.
  • Use recommended media formats
    • Image: PNG orJPG
    • Audio: AAC
    • Video: H264 AVC
  • Compress images using OptiPNG or PNGCrush
  • Use 9patch to scale images
  • Find unused resources using this tool and remove them.
  • Avoid using multiple resources to achieve the same functionality. The resources do not only limit to images but extend to APIs. At times a singular API can provide multiple results instead of using two or three different APIs. Duplicated strings and assets are also a waste of space.

answered Apr 14, 2015 at 4:58

Vaibhav Singhal's user avatar

0

Convert to WebP which will significantly reduce the app size

It reduced the app size of my app which was 40 mb to 25 mb

Steps:

  • Right click on res
  • convert to WebP

What it does: It reduces the size to png to WebP format. Quality is also not destroyed


enter image description here

answered Jul 15, 2018 at 16:32

Devrath's user avatar

DevrathDevrath

41.2k52 gold badges191 silver badges286 bronze badges

Beyond optimizing images, I also found it useful to verify the Support Libraries you use. I have a relatively simple application targeting platforms with API >=10, still my APK ended up being 2.2M, or after using ProGuard, 1.4M. When I looked into the APK, the code was 1.5M and there were a lot of additional resources included (abc_*) I knew nothing about.

Then I found this: https://developer.android.com/tools/support-library/features.html

Turns out I did not need appcompat-v7, only support-v4, and making this change to my dependencies reduced the APK size to 1.7M (0.9M with ProGuard).
Understandably, the Support Libraries carry a lot of extra (code and resource), so making sure you use only the ones you need might help.

(Even though -0.5M is not significant for a 11M app, I am posting this here because I kept ending up on this page while searching for a solution…)

answered Aug 20, 2014 at 13:32

sfThomas's user avatar

sfThomassfThomas

1,8352 gold badges17 silver badges26 bronze badges

0

  • Use tinypng compress your project’s png or
    jpg format image files, It can greatly reduce the size of the image
    without loss in image quality;
  • Some images use tinypng compress may distortion, you can convert
    these images to webP format, use 智图 or
    iSparta can convert other format to webP;
  • Use Lint check no use resources and delete it;

answered Apr 4, 2015 at 9:15

UperOne's user avatar

0

Four Ways and your app size will become from 11.35 MB to near about 5 MB.
First, check the app components via App Analyzer (an inbuilt feature of Android studio), Simply click on Build on the top and click Analyze APK. It will show you everything what components apk is using.

  1. Enable Proguard
  2. Enable ShrinkResource
  3. resConfigs (Name it, like if your app is in only one language eg English then simply specify resConfigs «en»)
  4. Convert all Images from .png or.jpg to webp (Most Important).

Steps to achieve these steps.

1 & 2. For Proguard and ShrinkResource

In gradle, simply add

               release {
                       minifyEnabled true
                       proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
                       shrinkResources true
                }
  1. For resConfigs

        defaultConfig {
        applicationId "com.goparties.gpuser"
        minSdkVersion 19
        targetSdkVersion 27
        resConfigs "en"
    

    }

  2. TO convert all Images from .png or.jpg to webp

Very easy process: Just right click on the drawable folder(drawable,drawable-hdpi, drawable-xhdpi etc) and click on convertToWebP (last option).

Min SDK version should be 18.

Here we go: Now analyze your app size.

Bingo !!!!!!

answered Apr 18, 2018 at 10:47

Minkoo's user avatar

MinkooMinkoo

4291 gold badge3 silver badges16 bronze badges

One more thing to add on image file size — different algorithms can have a significant effect on the final size. I found that Yahoo’s www.smushit.com is a lot more effective (at least for .png) than compressors and codecs I have on my computer right now.

answered Sep 18, 2011 at 18:23

ProjectJourneyman's user avatar

2

There are two things I can point out from experience.

  1. If you use eclipse to create apk file then the resources are duplicated (atleast it happened in my case), you can try using ant and build.xml to create the apk and compare the size.
  2. Also look into aliasing the resources. The link for it is here.

answered Sep 28, 2010 at 17:34

omermuhammed's user avatar

omermuhammedomermuhammed

7,3254 gold badges27 silver badges40 bronze badges

3

I think this post would give you a better idea on all the possible methods to use to reduce your apk size by a huge margin.

I will give you an excerpt of the same.

  1. Use only the required libraries from Google Play Services.
  2. Apply ProGuard to your app.
  3. Minify and shrink.
  4. Adopt vector drawables.
  5. Use the android lint.
  6. Split your apk based on the architectures
  7. Adding resConfigs in your gradle files to specify localization languages.

    This strips away all other string files that could’ve been added by other libraries in languages you don’t even support.

answered Aug 10, 2016 at 7:51

Capt's user avatar

CaptCapt

2514 silver badges11 bronze badges

WebP image format: provides lossy compression (like JPEG) as well as transparency (like PNG) but can provide better compression than either JPEG or PNG

Convert images to WebP

answered Jun 27, 2017 at 12:35

Vishal Yadav's user avatar

Vishal YadavVishal Yadav

3,6123 gold badges24 silver badges42 bronze badges

Along with the above most upvoted answers, I would like to answer with latest tools from Google’s Android Studio.

Google recently has introduced the Android App Bundle in which playstore automatically delivered optimized version of apk to end devices.
Now developers just has to generate Signed Bundle, and upload to play store, dev job is done. Don’t forget always use SVG images.

Also please have look into Deliver Features On-Demand with Dynamic Features

enter image description here

answered May 17, 2018 at 5:21

Suresh Maidaragi's user avatar

Here is what you can do for reduce build size by Images (Also can work for iOS)
Here I am sharing the great tool called “OPTIPNG ” (you can download from here )which will help us to reduced the build specially by using Images, It will reduced the Image size for PNGs we are using without degrading quality (Resolution and color) of the image.

Example – If your image size is off 698 KB then It will simpley reduced size to 564 KB

Here is the execution steps for OPTIPNG 0.7.5

1) Terminal -> CD /YourLocal path of OPTIPNG

2) type “./configure”

3) type ”sudo make install”

Intallation should be done now

4) type ” optipng /your image path

You will get result in byte and can also check your size

answered Aug 23, 2014 at 4:40

Kirtikumar A.'s user avatar

I used Trimage image compressor for compressing images and reducing the size of apk.It has good compression rate,easy to use,retains the quality of image and is also available in Ubuntu.Beside this i enabled ProGuard and worked on Lint issues to reduce APK size.

answered Mar 18, 2015 at 8:52

Android Developer's user avatar

Android DeveloperAndroid Developer

8,76118 gold badges80 silver badges134 bronze badges

0

Following are the ways to reduce the app size. In detail is explained in the following link.

https://medium.com/@fahimsakri/put-your-apks-on-diet-cc3f40843c84#.m860q8s1u

Proguard

vector drawables

Apk splits

Optimize png images

Remove unused resources

9-patch images

Compress Jpeg images

Remove debug information

Avoid duplications

Use lint extensively

Reuse resource whenever possible

Recommended Media formats

answered Apr 10, 2016 at 5:11

Fahim's user avatar

FahimFahim

12.1k5 gold badges38 silver badges57 bronze badges

APK contains a zip file of all the things that your mobile application has including Java class files, resource files among others.

One of the simple ways to make your APK smaller is to reduce the number and size of the resources it contains. In particular, you can remove resources that your app no longer uses, and you can use scalable Drawable objects in place of image files.

answered Jan 9, 2017 at 12:00

hnrindani's user avatar

Use MinifyEnable true
and ShrinkResources true

MinifyEnabled will reduce your code as it compresses it.
While shrinkResources shrink the resources.

To use ShrinkResources you have to set minifyEnbled true.

answered Oct 26, 2017 at 13:17

Maaz Patel's user avatar

Maaz PatelMaaz Patel

7162 gold badges7 silver badges20 bronze badges

use SVG images instead of jpg in order to reduce the apk size.
put your image files in the database .. so that the users of your app can download it from the database and it will reduce the app size dramatically..

answered May 10, 2017 at 11:09

Ameer Khalifullah's user avatar

0

Сжимаем несжимаемое – как уменьшить дистрибутив мобильного приложения

Сегодня в магазинах приложений для платформ iOS и Android существует ограничение на размер приложения в 100 МБ. Магазин Apple для приложений, которые не укладываются в этот лимит, запрещает закачку при помощи мобильного интернета. В Google Play же это строгий лимит на размер APK – все, что не укладывается в него, должно быть вынесено в файлы дополнений. Для пользователей с платным трафиком закачка большого приложения может быть довольно затратной, поэтому его размер нужно стараться уменьшить всеми силами.

Формат магазина приложений Apple

Диаграмма распределения ресурсов в .ipa файле

Большую часть занимают ресурсы игры, при этом исполняемый файл почти не уступает им. Системные ресурсы и ресурсы SDK при этом занимают достаточно мало места в архиве, поэтому оптимизировать их чаще всего нет смысла.

Оптимизация размера исполняемого файла

Исполняемый файл занимает так много места по двум причинам:

  1. В нем содержится бинарный код для двух архитектур (32 и 64 бита);
  2. Исполняемый файл в ipa зашифрован, что сильно ухудшает сжатие.

Пункт 2 актуален всегда. При расчете предполагаемого размера IPA нужно учитывать несжатый размер исполняемого файла. В лучшем случае он сожмется только незначительно. Именно поэтому Apple не рекомендуют хранить большие объемы данных (изображения, большие текстовые ресурсы и т.д.) в исполняемом файле, это может привести к аномально большому размеру приложения. Стоит также проверить настройки оптимизации в XCode и убедиться в том, что вы не подключаете лишние библиотеки.

Оптимизация ресурсов

Для мобильных игр можно выделить группы ресурсов, по списку от более тяжеловесных к менее тяжеловесным:

  1. Игровая графика;
  2. Анимации;
  3. Видео и звуки;
  4. Шрифты;
  5. Текстовые ресурсы и текстовые настроечные файлы.

Сжатие игровой графики

Размер графики можно уменьшить двумя способами:

  1. Плотно упаковать графику в полигональные атласы, чтобы сэкономить за счет прозрачных пикселей. Полигональные атласы больше предназначены для экономии оперативной памяти, но и размер файлов с атласами тоже становится несколько меньше.
  2. Разделить графику на различные группы, по требуемому качеству и упаковать каждую группу в свой сжатый формат.
  • png: формат сжатия без потерь. У него наилучшее качество, но он занимает очень много места на диске. Этот формат не рекомендуют использовать в приложении, поскольку lossless-вариант webp оптимальнее по размеру. Тем не менее, загрузочный экран и иконки приложения в ipa должны быть в формате .png. Для оптимизации размера .png можно воспользоваться утилитой optipng, доступной в Mac Ports.
  • webp: lossy-вариант c приемлемым размером. Позволяет менять качество для различных типов изображений, но достаточно долго распаковывается. Существует также и lossless-вариант.
  • pvrtc: аппаратно-поддерживаемый сжатый формат для iOS. Быстро загружается, занимает очень мало места. Однако, есть ряд ограничений. Во-первых, изображение обязательно должно быть квадратом со стороной, равной степени двойки.

Пример одного и того же изображения в формате webp, сжатого с настройкой качества 85, 95 и 100. Разница заметна, но даже самое сжатое изображение выглядит приемлемо. При этом разница в размере между webp85 и webp95 примерно 3 КБ.

webp нужно применять осторожно из-за проблем со скоростью распаковки. На медленных устройствах загрузка такого изображения может дать заметные лаги. Не стоит использовать его для упаковки большой графики, которая подгружается на лету.

В таблице приведены размеры атласа 2048×2048 при сжатии в разных форматах:

Формат png pvrtc webp
lossless
webp
95 quality
webp
85 quality
Размер, КБ 8057 2049 5593 2218 1579

Как видите, формат png не следует использовать вообще. Из форматов webp и pvrtc можно выбрать подходящий, с учетом требований к качеству графики и скорости ее загрузки

Анимации

В Gardenscapes в основном используются анимации с ключевыми кадрами, которые экспортируются из .swf. Для экономии места в таких анимациях нужно стараться оптимизировать число кадров в секунду (FPS). В нашем проекте стандартом выбрана частота 24 FPS, анимации не теряют в качестве и достаточно компактны. Помимо частоты кадров, на размер анимации влияет количество деталей. Если анимация содержит много деталей, ее размер также будет большим – поскольку для каждой детали будет хранится свой набор ключевых кадров. Для дополнительного сжатия мы используем специальный lossy-кодек для анимаций. Также мы используем FSE-кодирование, больше информации можно найти здесь.

Видео и звуки

Здесь нет каких-то общих рекомендаций, в целом все сводится к тонкой настройке форматов кодирования. Какого-то феноменального выигрыша тут получить нельзя, у нас получилось сжать видео на примерно 30% по сравнению с первоначальным вариантом и сэкономить порядка 10-20% на звуках. Все зависит от конкретного видео и аудио – нужно подбирать настройки экспериментально.

Шрифты

Обычно, шрифты не занимают много места в большинстве приложений. Но это пока вы не столкнетесь с локализациями для языков с иероглифическим письмом. Число иероглифов там может измеряться тысячами. Это увеличивает файлы шрифтов до нескольких мегабайт. Чтобы бороться с этим, мы используем автоматизированный скрипт, который составляет списки символов на основе файла с игровыми текстами – все неиспользуемые символы удаляются изо всех шрифтов.

Текстовые ресурсы и текстовые настроечные файлы

Это обычно самая малая по размеру группа ресурсов, и ее не нужно отдельно оптимизировать. Сам ipa-файл это архив, а текстовые данные хорошо архивируются. В нашем проекте тексты тем не менее занимают довольно много места. В основном из-за необходимости поддержки многих локализаций.

Если все возможности исчерпаны

Размер билда – это действительно проблема для нас. Насколько все серьезно, можно понять по некоторым дополнительным способам сжатия, которые мы изобрели.

  1. Внутри ipa-файла приложение упаковано в так называемый пакет (package). Все файлы приложения находятся в папке «Payload/<имя_пакета.app>. При упаковке файла в zip-архив к оглавлению прибавляется его полный путь. Поэтому, <имя_пакета.app> будет в оглавлении всех файлов игры. И если файлов много, то как ни крути, а лишняя информация дублируется. Мы переименовали пакет так, чтобы его имя состояло ровно из одной буквы, и хоть чуть-чуть, но уменьшили размер.
  2. Просматривая содержимое исполняемого файла, мы увидели, что встречаются полные пути к исходным файлам C++. Откуда они взялись? Оказывается, некоторые макросы __FILE__, __LINE__, попадали в production-код, и компилятор заботливо раскрывал их для каждого исходного файла, где они использовались. Мы провели ревизию таких макросов, и еще немного уменьшили билд.
  3. У кого-то есть еще идеи? Напишите в комментариях.

Итого

Оптимизация размера билда – обширная тема, в этой статье описаны только общие принципы и способы сжатия ресурсов. Кроме этого обычно возникают и другие сложные вопросы:

  • Менеджмент ресурсов: как избавиться от дубликатов ресурсов и найти все неиспользуемые ресурсы;
  • Система загрузки ресурсов из интернета, если мы не влезли в 100 МБ. Как организовать дозагрузку ресурсов так, чтобы пользователь испытывал минимум дискомфорта, а дизайнерам было бы удобно с ней работать;
  • Как минимизировать расход трафика, особенно при обновлении версии игры.

Post scriptum

Пока статья готовилась к публикации Apple увеличила максимальный объем билда до 150 МБ. Казалось бы, стало лучше. Но в Google Play все еще остается лимит 100 МБ. В результате все получается еще сложнее. Если мы при подготовке билда для iOS будем ориентироваться только на ограничение магазина Apple в 150 МБ, то после этого при подготовке билда для Android точно не сможем уложиться в 100.

Нужно делать разные билды для iOS и Android, чтобы оптимально использовать возможности магазинов приложений. Сейчас мы все еще в процессе поиска лучшего решения. И очень ждем аналогичного шага по увеличению лимита от компании Google. После этого можно будет просто заменить в тексте статьи число 100 на 150, и в ней снова все будет правильно.

Как уменьшить размер APK файла?

apk формат Android приложений

Всем известно, что Android Market накладывает ограничение на размер публикуемых программ. Сегодня в магазине можно разместить приложение, размер которого не превосходит 50 Мб, но что же делать, если Вы вылезли за это ограничение?Дэвид Карлссон, архитектор приложений из Sony Ericsson, дает несколько советов, которые помогут уменьшить размер вашего apk файла.

Что такое APK формат?

APK— аббревиатура от Android application package (файл архива Android программы). Каждое Android приложение упаковывается в apk архив, содержащий исполняемый код (.dex файлы), ресурсы, активы и файл манифеста. Фактически apk представляет собой обычный zip архив, поэтому не имеет смысла предварительно сжимать файлы ресурсов каким-нибудь архиватором.

Почему нужно стремиться к экономии памяти? Размер памяти на смартфоне ограничен несколькими мегабайтами, а пользователю нужно хранить кучу разной информации: фотографии, музыку, архив сообщений. Поэтому размер приложения отнюдь не последний фактор, учитываемый пользователем при поиске программ.

Как уменьшить размер APK файла?

Дэвид Карлссон, SEНиже приводится несколько полезных советов, которые помогут вам уменьшить размер ваших Android программ.

Используйте ProGuard

ProGuard— это обфускатор, попутно сжимающий размер кода. Как известно, Java приложения компилируются в байт-код, из которого довольно просто восстановить java исходник. Для усложнения жизни любителям реверс-инженерии придумали обфускаторы. Обфускатор служит для запутывания исходного кода программы, при сохранении исходной функциональности. Получается рабочий исходник, мало пригодный для чтения человеком. Программа ProGuard помимо собственно обфускации сжимает исходный код, делает его более быстрым и менее требовательным к памяти. Очень важно после использования ProGuard провести тщательное тестирование полученного приложения. Возможны ситуации, когда в ходе оптимизации и обфускации кода изменяется его функциональность. В таких случаях важно позаботиться о сохранении symbol mapping, чтобы можно было восстановить из обфусцированного кода исходный и попытаться выявить источник проблем.

Удаляйте отладочную информацию

Дэвид рекомендует перед компиляцией финальной версии программы убрать из нее все связанные с отладкой конструкции, поскольку они не несут для пользователя ничего полезного.

Входящий в состав Android SDK компилятор умеет автоматически удалять отладочный код из релиза, но программист должен позаботиться о правильном оформлении своей программы, поместив отладочные команды в специальный блок:

Часто начинающие разработчики оформляют отладочный код в виде отдельных методов

Это не лучшее решение, поскольку на этапе сборки релиза будет удален блок if (Debug) , но сам методmyDebugPrint() и его вызов останутся нетронутыми и будут занимать место.

Удаляйте отладочные символы из нативных библиотек

Использование символов отладки имеет смысл, когда ваше приложение находится в стадии разработки. Если Вы решили собрать релиз, Дэвид рекомендует удалить символы отладки из нативных библиотек (.so файлы). Это можно сделать, вызвав команду arm-eabi-strip из Android NDK.

Используйте рекомендуемые медиа форматы

Если ваше приложение содержит графику, видео и аудио данные, использование «правильных» форматов может положительно сказаться на размере приложения. Дэвид рекомендует использовать следующие форматы:

  • Рисунки: PNG и JPEG. Формат PNG позволяет добиваться хорошей компрессии при отсутствии ухудшения качества картинки. JPEG хорош для больших по разрешению картинок.
  • Аудио: Используйте ACC Audio. Этот формат обеспечивает лучшую компрессию, чем широко распространенные mp3 и Ogg Vorbis. Никогда не используйте wav. Это формат для профессиональных музыкантов. В нем не используется компрессия и содержится много избыточной информации. Часто wav используется для декодирования сжатого аудио потока. Обычно такой подход сопровождается заметными временными задержками. Android имеет средства для воспроизведения сжатого аудио потока лишенные этого недостатка (Sound Pool API).
  • Видео: Используйте формат H264 AVC. Если видеофайл имеет большое разрешение, обязательно перекодируйте его под разрешение экрана целевого устройства.

Компрессируйте PNG файлы

Довольно часто получаемые в результате работы графических редакторов PNG файлы плохо скомпрессированы и их размер может быть дополнительно уменьшен с помощью специальных утилит:OptiPNGилиPNGCrush. Обе эти программы пересжимают PNG файл, сохраняя качество картинки. Программы перебирают параметры PNG фильтров и настроек алгоритма сжатия и создают на выходе файл с оптимальными параметрами.

Используйте 9patch PNG для масштабируемых изображений

9patch PNG— специальный формат, который может быть использован для создания растягиваемых подложек. Наиболее часто этот формат используется для создания кнопок и других элементов пользовательского интерфейса. В рамках 9patch картинка разбивается на 9 сегментов — четыре угла, четыре грани и центральная часть. На основе такой картинки можно создавать подложки произвольного размера, при этом угловые сегменты никак не масштабируются; ребра и центральный сегмент растягиваются (многократно повторяются), заполняя промежутки между углами. Ниже показана 9patch картинка и две сгенерированные на ее основе кнопки. Применение этого формата позволяет существенно уменьшить размер графики, необходимой для создания интерфейса.

9patch PNG

Удаляйте неиспользуемые ресурсы

Как правило, папка res содержит несколько неиспользуемых ресурсов. Для их удаления можно использовать специальную утилитуandroid-unused-resources, которая сканирует Ваш исходный код и удаляет из проекта неиспользуемые ресурсы.

Избегайте дублирования

Убедитесь, что в вашем приложении не дублируется функциональность и активы (строки, рисунки и т.п.). Важно понимать, какие Android API вы используете, и знать их функциональность. Может получиться, что в вашей программе для решения задачи, которую можно решить средствами уже подключенных API, подключается новый API. Дублирование кода, например, включение в программу функций делающих одно и то же, также ведет к разбуханию APK файлов.

Размер приложения

Узнайте, что больше всего влияет на размер приложения при скачивании и на устройстве, и определите, как его можно оптимизировать.

Сравнение с другими приложениями

Сравнивайте размер своего приложения с другими решениями в Google Play и определяйте варианты оптимизации

Отслеживание устройств с нехваткой места в хранилище

Узнайте, сколько пользователей могут удалить приложение из-за нехватки свободного места на устройстве

Рекомендации

Публикуйте приложения в формате наборов Android App Bundle. Это позволит оптимизировать APK-файлы для разных устройств.

Уменьшите размер при установке, разделив приложение на функциональные модули, которые скачиваются по мере необходимости с помощью Play Feature Delivery.

Передавайте игровые объекты, используя Play Asset Delivery.

Убирайте необязательные фрагменты кода с помощью инструментов минимизации, таких как ProGuard и R8.

Подробнее

Справочный центр Play Console

Узнайте, какие данные входят в отчет о размере приложения в Play Console

Документация для разработчиков

Сделайте свое приложение ещё компактнее с помощью удобных инструментов и полезных рекомендаций

О наборах Android App Bundle

Узнайте, как сделать приложение компактнее, упростить процесс выпуска и предоставлять функции по запросу с помощью наборов App Bundle

Учебный курс по набору Android App Bundle

Проходите бесплатные курсы и узнавайте больше о наборах App Bundle, динамических функциях, подписании приложений в Google Play и других возможностях

Узнайте, как компании Riafy Technologies удалось сделать приложение более компактным и увеличить количество установок с помощью наборов Android App Bundle.

Расширение аудитории

Используйте отчеты и инструменты оптимизации, чтобы привлекать больше новых пользователей, и получайте уникальную статистику по тенденциям рынка, доступную только в Google Play.

Отчет об источниках трафика

Узнайте, как различные факторы, такие как похожие запросы, переходы и поиск в Google Play, влияют на общее количество пользователей по странам.

Статистика

Запрашивайте, анализируйте и сравнивайте уникальные показатели приложения в Play Console. Находите ответы, анализируйте тенденции на основе собственных показателей и сравнивайте производительность своего приложения с аналогичными продуктами.

Страница приложения

Совершенствуйте страницу приложения в Google Play, чтобы завоевать внимание пользователей.

Эксперименты со страницей приложения

Увеличьте количество установок и показатели удержания пользователей, оптимизировав страницу приложения в Google Play. Подберите самые эффективные локализованные тексты и графику с помощью A/B-тестирований.

Дополнительные функции

  • Локализация
  • Предварительная регистрация
  • Игровые сервисы Google Play

Используйте функцию «Размер приложения»

Отслеживайте и оптимизируйте размер приложений – компактные приложения быстрее скачиваются, и у них больше успешных установок

Если говорить о размере приложения. То первоначально нужно понять, что входить в состав пакета? Затем определить, что нужно и не нужно?

Давайте посмотрим на примере состав пакета небольшого Андроида приложения, написанного в RAD Studio XE5 Delphi. В качестве примера, я взял приложение PhotoEditorDemo, доступный на официальном Open Source проекте примеров RAD Studio XE5

Это пример кроссплатформенного простого фоторедактора:

  • Описание примера: http://docwiki.embarcadero.com/CodeExamples/XE5/en/FMX.Mobile.PhotoEditorDemo_Sample_(Delphi)
  • Исходники: http://sourceforge.net/p/radstudiodemos/code/HEAD/tree/branches/RadStudio_XE5_Update/FireMonkeyMobile/Delphi/PhotoEditorDemo/

Размер сжатого приложения

Собираем приложение и смотрим на результирующий пакет PhotoEditorDemo.apk (Он располагается в директории .AndroidDebugPhotoEditorDemobin относительно корня проекта).

После сборки приложения его размер ~6 760 КБ (в зависимости от Debug or Release сборки). Это размер сжатого пакета нативного приложения.

Размер распакованного приложения

Если мы распакуем ZIP архиватором этот файл, то увидим его содержание:

post-1-0-81223900-1389963410.jpg

В распакованном виде, пакет занимает 21,7 МБ.

Состав пакета

Что же входит в его состав:

  1. lib — место хранения собранных натиных библиотек приложения. Поскольку приложение нативное, то оно работает на основании библиотеки .so.
  2. res — место хранения ресурсов приложения (картинки, иконки и тд)
  3. META-INF — хранение подписи приложения, контрольные суммы файлов ресурсов (картинок, звуков и т.д.)
  4. AndroidManifest.xml — манифест приложения (расширенный аналог VersionInfo в Windows)
  5. classes.dex — файл с java реализацией дополнительного функционала FireMonkey.
  6. resources.arsc — таблица ресурсов. В этом файле собраны xml-описания всех ресурсов.

Самый значительный вклад в размер пакета вносят:

  1. libPhotoEditorDemo.so (20 060 КБ) — непосредственно сам бинарник приложения
  2. classes.dex (1 948 КБ) — частичная реализация FireMonkey на java.

Размер самого приложения большой потому, что включает в себя полностью все Delphi библиотеки, которые используется FireMonkey. А это:

  1. RTL
  2. Хедеры для доступа к Android API
  3. Нативные стили для Android (три стиля — 1х, 1.5x, 2х, 3х скалирования экрана). Каждый стиль содержит исходную png картинку нативного стиля.
  4. Фильтры и эффекты FireMonkey
  5. Вся остальная реализация FireMonkey.

Довольно большой набор того, что нужно включить в пакет и тяжело выбросить.

Если говорить о приложении написанном в Eclipse, то приложение включает в себя только часть пользовательского кода. И размер мал за счет того, что весь Android API находится перманентно на самом устройстве (не в пакете).

Если бы используемая часть библиотек FireMonkey находилась на каждом устройстве, то размер приложения сократился бы раза в четыре. 

Вывод

Размер установочного пакета приложения, написанного на FireMonkey не большой для нативных приложений порядка 6 760 КБ для реализации простого фоторедактора (Хотя для кого-то это может быть много). В установленном виде приложение занимает от 20 000 КБ. Основная причина полная интеграция используемых библиотек в пакет приложения. Вероятность уменьшить этот размер маловероятна. Однако увеличение функционала приложения не так сказывается на дальнейший рост приложения.

Можно попробовать сделать усеченные библиотеки, сократить функциональность. Но это не даст ощутимого уменьшения результирующего размера приложения. 

На сколько важен размер приложения для конкретной работы приложения каждый заказчик решает сам.

P.S. Цель этого ответа дать подробный ответ о причинах такого размера, а не попытка вызвать обсуждение на тему сравнения сред разработки. Каждый framework обладает своими достоинствами и недостатками. И выбор средства разработки диктуется совокупностью требования заказчика. 

С момента запуска Android Marketplace в марте 2012 года, в среднем Android приложение былоОн вырос в пять раз.

Некоторые из них добавляет разумны: типичные для Android устройств увеличились память, то почему бы вам не использовать эти дополнительные памяти, чтобы обеспечить лучший пользовательский опыт?

но, ИметьОдна точка, все HD графика, инновационные возможности и богатый мультимедийный контент, оказывают негативное влияние на пользователей, никто не хочет, чтобы приложение, вам нужно скачать навсегда, а затем взять большой кусок памяти памяти в!

Существует даже доказательство того, что существует отрицательная корреляция между размером APK и количество людей, загрузки приложений. в соответствии сПоследние исследования Для каждого увеличения 6MB, размер APK будет снижена на 1% после увеличения на странице в Google Play.

Все меры, которые можно предпринять, чтобы уменьшить размер APK, этоВсеПорекомендуйте пользователь скачать приложение, поэтому в этой статье я покажу вам, как создать тоньше, тоньше APK-, и убедитесь, что ваше приложение запускается как много устройств, как это возможно.

Android расслоение приложений: поддержка большего количества устройств при одновременном снижении размеров APK

Всякий раз, когда вы разрабатываете Android приложений, вам нужно оптимизировать код и ресурсы для различной плотности экрана, архитектур процессора, языка и многих других факторов, чтобы убедиться, что приложение совместимо с таким количеством различных устройств, как это возможно. К сожалению, это также означает, что каждый, кто скачивает приложение получитБольшое количествоОни никогда не будут использовать код и ресурсы.

В течение долгого времени, поддержка как много устройств, как это возможно без существенного увеличения размера APK всегда была проблема с разработчиками Android. Тем не менее, Android цели команды, чтобы изменить все это с помощью нового формата выпуска, который предназначен, чтобы помочь вам поддерживать различные устройства Android.Снижаться размер APK. в соответствии сРазработчики Android Официальный блогГоворя, через этот новыйAndroid App Bundle.aab ) Формат Опубликуйте приложение, вы должны быть в состоянии уменьшить размер APK на 35%.

Будет ли ваше приложение.aabПосле того, как формат файл будет загружен, Google Play будет использовать этот файл для генерации:

  • Основной APK, которые содержат весь код и ресурсы, необходимые для обеспечения основных функций приложения. Все загрузки приложения будет получать то же базовое APK.
  • Множественные конфигурации АПК подходят для различных конфигураций устройств. Каждый раз, когда кто-то загружает приложение, они получают APK конфигурации для их конкретного устройства, а только код и ресурсы, которые они на самом деле нужно.

Чтобы построить приложение как знаковое приложение пачка Android, сначала выберите на панели инструментов Android StudioBuild > Generate Signed Bundle / APK Затем выберите «Android App Bundle”Установите флажок, а затем нажмите кнопку «Следующий шаг» Теперь откройтемодульВыпадающий список, а затем выберитеappКак ваш базовый модуль.

Следуйте инструкциям на экране для завершения процесса сборки. Android Studio теперь будет генерировать один.aabФайл, и сохранить его в компьютереAndroidAppBundle / app / releaseСправочник.

Готовый.aabКогда файл будет загружен в Google Play, просто перейдитеGoogle Play консоли,Тогда выбирайСоздание приложения

Система попросит вас ввести некоторую базовую информацию о приложении, а затем нажмите кнопку «Создайте» Затем нажмите «спасти» В левом меню консоли, выберите «версия приложения Определить, какой трек вы хотите передать это приложение, а затем выберите его «управлять»Кнопка, а затем нажмитеСоздать релиз

В ответ на запрос регистрации подписи приложений в Google Play, которая необходима для использования формата расслоения App. выбиратьПросмотр документов , Затем выберите .aab файл для загрузки.

 Android Google Play

Наконец, нажмите кнопку «спасти»Для того, чтобы сохранить конфигурацию.

После того как приложение будет загружено на консоль, вы можете использовать приложение расслоение формата, чтобы увидеть, сколько места были сохранено. Для этого, пожалуйста, выберите из меню слева «релиз приложения ”。 Найти трек, который вы загруженный Bundle, затем выберитеEdit release,Затем нажмите, чтобы развернутьAndroid App Bundleчасть.

выбиратьИсследовать пакет приложений Вы увидите приблизительную оценку сохраненного пространства, выраженную в процентах.

 aab

Функция доставки динамическим модулем функции

Для проекта, нет необходимости для одного или нескольких из основных функций, поставляемых с приложением. Вы, как правило, можно разделить на опциональныйДинамическая функция APKДля того, чтобы уменьшить размер APK, то пользователь может загрузить эти функции по мере необходимости.

Для создания динамического функционального модуля, выберите на панели инструментов Android Studioдокумент > Новое строительство > Новый модуль … выбиратьДинамический модуль функции , Затем выберитеСледующий шаг

Здесь вы можете открытьБазовыйМодуль приложений раскрывающийся список, а затем выберите базовый модуль. Назовите его для вашего модуля, а затем нажмите кнопку «Следующий шаг» ВыбиратьРазрешение по требованиюФлажок. Если ваш проект поддерживает Android 4.4 или более ранней версии, вам все равно необходимо включитьFusing Поскольку это позволит динамический функциональный модуль для использования в качестве нескольких APK для этих устройств.

И, наконец, обеспечить общедоступное имя для модуля, который будет виден для конечных пользователей. ЩелчокЗаканчивать

Разрешить доступ к динамическим функциональным модулям

После того, как вы создали динамический функциональный модуль, вам необходимо предоставить пользователь способом запроса во время выполнения. Откройте свой уровень модуляbuild.gradleФайл, а затем добавить в Google Play Ядро библиотеки в качестве зависимостей проекта:

dependencies {

//Add the following//

implementation 'com.google.android.play:core:1.3.6'

Открыть «чтобы загрузить модуль динамической функции»Activityили» Fragment , Затем добавить следующее:

private void loadDyanmicFeatureOne() {

//Create an instance of SplitInstallManager//

        SplitInstallManager splitInstallManager =
                SplitInstallManagerFactory.create(this);

//Create the request//

        SplitInstallRequest request =
                SplitInstallRequest
                        .newBuilder()

//Specify the module that you want to download//

                        .addModule("dynamic-module")
                        .build();

        SplitInstallStateUpdatedListener listener = new SplitInstallStateUpdatedListener() {
            @Override
            public void onStateUpdate(SplitInstallSessionState splitInstallSessionState) {
                if(splitInstallSessionState.sessionId() == mySessionId) {
                    switch (splitInstallSessionState.status()) {
                        case SplitInstallSessionStatus.INSTALLED:
                            Toast.makeText(MainActivity.this, "The dynamic module was downloaded”, Toast.LENGTH_SHORT).show();
                            break;
                    }
                }
            }
        };

        splitInstallManager.registerListener(listener);

//Submit the request via the asynchronous startInstall//

        splitInstallManager.startInstall(request)
                .addOnFailureListener(new OnFailureListener() {
                    @Override

//If the download fails with an exception….//

                    public void onFailure(Exception e) {

//...then do something//

                    }
                })
                .addOnSuccessListener(new OnSuccessListener<Integer>() {
                    @Override

//If the module was downloaded successfully...//

                    public void onSuccess(Integer sessionId) {

//...then do something//

                        mySessionId = sessionId;
                    }
                });
    }
}

Теперь вы можете добавить код и ресурсы в динамические функциональные модули, и пользователь будет иметь возможность запрашивать модуль во время выполнения.

Сначала попробуйте, прежде чем купить: обеспечить немедленное APK приложения

Это не может быть на APK может быть установлен традиционный смысл, но вы можете предоставить часть применения в качестве легкого автономного приложения Instant APK, то пользователь может загрузить по требованию. Для тех, кто находится в крайне ограниченной памяти или ограниченные данные плана борется, приложение мгновенного может быть единственным возможным способом, чтобы испытать их в своем приложении.

КМгновенное приложение из трех частей серии, мы создали универсальный Instant приложение APK ,ДолженAPKПодключенные к уникальному URL. отображение URL позволяет поддерживать доступ из любого места в сети гиперссылок Instant App, включая форумы, твиты, сообщения Facebook и блог. Однако, отображение URL является многоступенчатым процессом, который требует, чтобы иметь веб-домен, в котором вы можете Руководили проектыassetlinks.jsonдокумент.

В последней версии Android Studio, создать Instant Apps APK проще, так как теперь вы не разводитсялюбой Instant App URL, тем самым устраняя все сложности, связанные с отображением URL.

После выпуска приложения мгновенного нет URL, пользователи будут иметь возможность передавать приложения Google Play List «Попробуй это сейчас. «Кнопка доступа.

BuzzFeed Android Instant App

Для того, чтобы создать такой «свободный URL» приложения мгновенного, вам необходимо:

  • Android-студия версии 3.2 или позже.
  • Мгновенная приложение Разработка SDK версия 1.3.0 или более поздняя версия.
  • Последняя версия Android SDK и инструмент платформы сборки.

Мгновенное приложение поддержка проекта имеет уникальную структуру. Если вы будете модульной стандартной практики в рамках процесса разработки приложений, то вам, возможно, потребуется только внести некоторые коррективы в проект, но если ваш проектНетModular, то будьте готовы потратить некоторое время, чтобы реструктурировать.

Для поддержки Instant Apps, необходимо создать следующие модули:

  • Модуль прикладных программ. Это «стандартный» Прикладной модуль может быть установлен.
  • Базовый модуль. Он содержит код и ресурсы, которые будут использоваться во всех модулях проекта, например, начиная значок приложения.
  • функциональный модуль. Он содержит код и ресурсы, необходимые для обеспечения функции независимой.
  • Модуль Instantapp. Это контейнер, который будет в конечном счете использовать каждый функциональный модуль вашего проекта и превратить его в Instant App APK.

 Instant App

Если вы хотите, чтобы начать новый проект, то вам повезло: вы можете создать пустой проект уже имеет Instant Apps структуру. Просто создайте новый нормальный проект, но при появлении запроса, выберите «Этот проект будет поддерживать приложения в режиме реального времени «.

 , 。

Вы можете добавить код, как обычно и ресурсов для каждого модуля.

Чтобы проверить URL без Instant App, вам необходимо совместимое устройство, согласно официальной документации Android, устройство работает под управлением Android 5.1 или выше версии «самого» физического устройства. Если вы используете симулятор, вы нужно использовать Android версии 8.1 или более поздней версии, x86 архитектуры и включает в себя AVD (Android Virtual Device) Google API. Кроме того, необходимо войти в действительный счет Google на испытательном оборудовании или AVD.

Чтобы проверить Instant App, пожалуйста, выберите из панели инструментов Android Studio«запустить» > «запустить … «а затем выберите»Изменение конфигурации «

В меню слева выберитеInstantApp Так как мы тестируем без URL быстрорастворимых приложения, так что найтиURLПоле и удалить весь текст. Теперь выберитезапустить Если устройство подсказки вы выбрать, чтобы присоединиться Instant программы App, пожалуйста, нажмите «Да, я. «

Теперь, ваш Instant App должен появиться на экране, без необходимости установки и не требует URL!

При публикации приложения, вы можете завершить процесс подписания, чтобы создать два отдельных Устанавливаемые и Instant App APK, и проект может быть построен в комплект поставки приложения.

Опубликовано приложение с поддержкой расслоение приложения мгновенного

В Android Studio 3.3 Beta 1, а затем вы можете мгновенные приложения с комбинацией пакетов приложений для создания и установки приложения Instant содержит одновременное.aabдокумент.

Чтобы опубликовать приложение, чтобы включить в Instant App.aabФайл, откройте проектInstantappМодуль.

В этом модулеAndroidManifest.xmlФайл, добавьте следующее:

<manifest
    xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:dist="http://schemas.android.com/apk/distribution"

//Set the targetSandboxVersion to 2//

    android:targetSandboxVersion="2">

//Add the following//

    <dist:module dist:instant="true" />
</manifest>

Откройте модуль приложенияbuild.gradleФайлы, и убедитесь, что ваши варианты обмена мгновеннымиversionCodeМенее монтируемыйversionCode

android {
    ...
    
    flavorDimensions "flavorDimension"
    productFlavors {
        instant {
            versionCode 1
        }
        installed {
            versionCode 2
        }
    }
}

В строке меню выберите Android StudioBuild > Generate Signed Bundle / APK А затем построить свой обычный App Bundle, и убедитесь, что его ключевой релиз подписи.

Удалить все неиспользуемые методы, классы, поля, свойства и ресурсы

Для кода и неиспользованных ресурсов, легко найти свой путь в проект, особенно при использовании библиотеки. Потому что они будут добавлять нулевое значение для вашего приложения, так что вы всегда должны отслеживать и удалять ненужные активы, и есть несколько инструментов, которые могут помочь вам:

Попробуйте новый R8 код Shrinker

Код термоусадочной может помочь вам уменьшить размер вашего APK путем удаления неиспользуемого кода и ресурсов.

Android Studio 3.3 бета 1 просмотр наступающего R8 инструмента восстановления кодов, инструмент также может быть выполнена в дополнение к сахару и декодирования, а также в соответствии с Google, его код вниз быстрее, чем ProGuard.

Для того, чтобы попробовать себя R8, убедитесь, что вы работаете в Android Studio 3.3 бета 1 или более поздней версии, а затем добавьте следующееgradle.propertiesДокумент:

android.enableR8=true

2. ProGuard сокращение кода

На момент написания статьи, R8 все еще находится в состоянии предварительного просмотра, так что перед конюшней, вы можете предпочесть использовать Proguard удалить неиспользуемые классы из кода, методов, полей и свойств.

Чтобы включить ProGuard, добавьте следующую строку в уровне модуляbuild.gradleДокумент:

buildTypes {
       release {
       minifyEnabled true
           proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
       }
   }
}

Обратите внимание, что Proguard может удалить код приложений на самом деле необходимости, поэтому перед выпуском Proguard вы всегда должны проверять его.

3. Включить сокращение ресурсов

После включения уменьшенного размера кода вы можете уменьшить использование ресурсов для идентификации и удаления ненужных ресурсов:

buildTypes {
       release {

//Add the following//

        shrinkResources true
           minifyEnabled true
           proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
       }
   }
}

4. Улучшение Android Lint код

Lint является статическим инструментом сканирования можно определить неиспользуемые ресурсы кода. Однако Lint на самом деле не удаляет эти ресурсы, поэтому вам нужно проверить их отчеты и вручную удалить идентифицированный ресурс.

Для запуска Lint, пожалуйста, выберите из панели инструментов Android-студия «анализировать « >“ Проверьте код …”。 Если Lint обнаруживает какие-либо ресурсы, на которые нет ссылок, то это будет «результат испытаний»Они перечислены в окне.

 , “ ”

Ваш PNG, JPEG и BMP преобразован WebP

Если ваш проект содержит много объектов, можно сделать, затем сжимает его можно значительно уменьшить размер вашего APK.

Если проектminSdkVersionЕсть 18 или более, может быть PNG, JPEG, BMP и форматы WebP конвертировать их в компресс.

Во-первых, удерживайте нажатой клавишу Control и щелкните рисунок, который вы хотите преобразовать, а затем выберите «Старинное WebP … . «Выбор между кодированием без потерь или с потерями кодирования. Когда результат кодирования больше, чем исходное изображение,выбирать» Пропустить изображения « Затем нажмите «Конечно»Преобразовать изображение.

Android-студия для использования анализатора для проверки вашего APK APK

Иногда вы можете полностью определить причину APK полностью вне контроля.

Вы можете использовать новую студию Androidанализатор APKAPK определить максимальный размер участников права. С помощью этого инструмента вы можете исследовать абсолютный и относительный размер различных типов файлов, и даже размер одного файла, так что вы будетеТочноОсновное внимание следует знатькакиеместо.

Для анализа APK просто выберите из строки меню «Студия Android».Construct» >“ Анализ АПК «

В следующем окне выберите соответствующий APK. APK анализатор откроется в новой панели.

APK APK

Для каждого файла и папки APK Analyzer может показать вам:

  • Оригинальный размер файла. Именно на этом диске несжатого размере.
  • Скачать размер. Это, как ожидается, чтобы сжать размер товара, так как он будет доставлен в Google Play.
  • Процент от общего размера загрузки. Процент APK Этот проект представляет собой процент от общего числа загрузок в.

Это не единственная функция APK анализатор может предложить.

Представьте , что вы успешно сократить размер вашего APK и выпустила небольшое приложение, приложение получило восторженные отзывы на отзывы пятизвездных на Google Play — это не значит , что вы можете не беспокоиться о размере вашего APK! В какой-то момент, вам нужно будет выпускать обновления, а это значит, что размер APK станет серьезной проблемой снова.

Мониторинг APK из выпуска на другой путь выпуска всегда хорошая идея, но если размер APK был значительно увеличен, то выaffimМы хотим, чтобы поближе посмотреть на то, что произошло.

Вы можете использовать анализатор APK выделить все различия между текущим и предыдущим APK APK, которые могут помочь вам оптимизировать региональные и даже полностью удалить активы к нулю.

Для сравнения APK, сначала выберите из строки меню «Студия Android».Construct» >“ Анализ АПК «

Затем выберите последнюю версию APK. В верхнем правом углу анализатора APK, выборПо сравнению с предыдущим APK …Затем выберите APK предыдущую версию. Всплывающее окно должно появиться, выделить все различия между текущим и предыдущим APK APK.

Не забудьте Android Go!

Развивающиеся рынки представляют собой наиболее быстро растущих пользователей смартфонов в мире, в то время как рост Oppo и Vivo бренды такие доказательства, устройство недорогой, вероятно, занимают доминирующее положение на этом быстро растущем рынке.

Для того, чтобы помочь Android привлечь растущую новую аудиторию, Google выпустил Android Go, это Android-версия улучшенных возможностей производительности и хранения данных, разработано, чтобы обеспечить лучший опыт для бюджетного оборудования (в том числе менее 1 Гб памяти устройства).

пользователи Android Go могут получить доступ ко всему Google Play магазина, но Google фокусируется на приложениях для оптимизации Android Go, приложение занимает менее 40Мб включены на устройстве пользователя.

Следуя рекомендации, приведенные в этой статье, вы должны быть в состоянии использовать APKКаждыйЗначительно уменьшил размер APK человека. Тем не менее, если вы хотите, специально для Android Перейти вниз других пользователей, вы можете использоватьМногофункциональный Android APKОпубликовано платформа, оптимизированная для Android Go APK.

Чтобы создать специальное приложение для Android Go, вам нужно создать APK, АПК имеет то же «нормальное» имя пакета приложений и подписание сертификата, но имеет уникальную версию кода.

При создании Android Go APK вам также нужно добавить следующее в список:

<uses-feature android:name="android.hardware.ram.low" android:required="true">

в заключение

В этой статье я представил все основные способы уменьшить размер APK создать изящнее, стройнее приложения, эти приложения могут быстро загружать и занимают меньше места на устройстве пользователя.

Перевод с:https://code.tutsplus.com/articles/8-ways-to-reduce-your-android-app-apk-size—cms-32508

Перед началом

Вес приложения — очень важная характеристика, от него напрямую зависит количество установок — чем меньше вес, там больше установок. Поэтому важно стараться минимизировать его всеми возможными средствами.  В этой статье я хочу поделиться известными мне способами уменьшения размера приложения. Я возьму одно из своих приложений и на его примере покажу, насколько можно уменьшить его вес. Вы можете взять любое из своих приложений и проделать над ним всё описанное или только некоторые шаги.

Рекомендую сначала прочитать статью Playing APK Golf (или её перевод). Это крайне интересно, как исследовательская работа, но абсолютно неприменимо в реальной разработке.

Proguard

При сборке apk в его dex файл (или файлы) попадает весь код приложения и весь код всех подключенных библиотек, даже неиспользуемый. Хорошо бы от этого лишнего кода избавиться. Для этих целей есть специальный инструмент под названием proguard. Он уже включён в Android SDK и любой Android проект из коробки настроен для работы с ним. Данный инструмент делает следующее:

  • Удаляет неиспользуемые классы, методы и поля;
  • Оптимизирует Java байткод;
  • Слегка обфусцирует код переименованием классов, методов и полей.

Всё это происходит на уровне Java байткода (не dex байткода), то есть файлов .class. На вход подаются jar(aar) файлы, а на выходе получаются они же, но в оптимизированном виде. В результате вес байткода значительно уменьшается.

В простейшем случае для включения proguard нужно открыть build.gradle конфиг уровня приложения и в блоке android/buildType/release выставить свойству minifyEnabled значение true:

Но этого не всегда достаточно и приложение может сломаться. В том же блоке есть свойство proguardFiles с путями к файлу конфигурации proguard (proguard-rules.pro) и к файлу с правилами оптимизации(proguard-android-optimize.txt) — его в большинстве случаев трогать не нужно. А вот файл proguard-rules.pro нам понадобится. Его можно найти в структуре проекта.

Если в проекте есть классы, которые участвуют в рефлексии, нужно запретить их переименование, так как при попытке обращения к классам(и их свойствам и методам), которые были переименованы, приложение упадёт с исключением. Это также касается pojo(data) классов, которые маппятся, например, через Gson, Firebase Database или какой-нибудь ORM. Для того, чтобы оставить такие классы без изменений, нужно в файле proguard-rules.pro применить к ним правило -keep:

-keep class com.example.myapp.model.ModelItem1
-keep class com.example.myapp.model.ModelItem2
-keep class com.example.myapp.model.ModelItem3

Или для всего пакета:

-keep class com.example.myapp.model.** { *; }

Со всеми правилами можно ознакомиться по ссылке.

Кроме этого нужно внимательно прочитать документацию ко всем библиотекам, используемым в проекте. Если для библиотеки нужны правила proguard, это всегда указано — просто скопируйте эти правила в файл proguard-rules.pro.

Теперь при сборке apk будут произведены оптимизации и размер приложения значительно уменьшится. Для сравнения — приложение, собранное без оптимизаций и оно же, собранное с proguard:

Размер приложения уменьшился с семи мегабайт до трёх с половиной и это только за счёт оптимизации байткода. Посмотрим, что внутри через APK Analyzer:

Было два dex файла, а остался один, даже с запасом — multidex больше не нужен. Минус 3.2 мегабайта лишнего кода. Считаю, что это отличный результат. Именно поэтому proguard — один из важнейших инструментов для уменьшения веса приложения и c ним стоит научиться работать.

После сборки релизного apk будет сгенерировано ещё несколько вспомогательных файлов, которые можно найти по пути «project/app_module/build/outputs/mapping/release»:

  • mapping.txt — список соответствия оптимизированных и не оптимизированных имён классов, методов и полей;
  • seeds.txt — список классов, методов и полей, которые не были оптимизированы;
  • usage.txt — список удалённых классов, методов и полей.

Файл mapping.txt — очень полезная вещь. После сборки релизного apk и загрузки его в Google Play Console стоит также загружать файл mapping.txt в раздел Android Vitals/Deobfuscation Files для соответствующей версии приложения:

Вот зачем это нужно. После обработки proguard код становится трудночитаемым и выглядит примерно так. Если произойдёт эксепшен, понять его стектрейс будет очень сложно. mapping.txt помогает расшифровывать эти стектрейсы так, будто код и не был обфусцирован.

Также стоит упомянуть о существовании инструмента под названием DexGuard, который оптимизирует dex байткод, но он платный и простым смертным недоступен.

shrinkResources

Вырезание ресурсов — возможность android плагина для gradle. Удаляет из apk неиспользуемые ресурсы, в том числе из библиотек. Работает только при включенном proguard(или R8), так как после удаления неиспользуемого кода появляются ресурсы, на которые нет ссылок. Включается в блоке android/buildType/release в файле build.gradle уровня приложения:

Теперь при сборке apk можно увидеть следующую строку:

В итоге apk уменьшился на 32 килобайта:

Не очень много, но тоже хорошо. Тут всё зависит от проекта, иногда вырезается более ощутимый объём.

Данная опция не будет работать, если в приложении есть модули Dynamic Features иили Instant App.

Удаление ненужных языковых ресурсов

Некоторые библиотеки, особенно гугловские support lib(androidx) и firebase, содержат ресурсы для множества языков. Чтобы их удалить нужно явно указать, какие языки используются в приложении. Это делается в build.gradle уровня приложения в блоке android/defaultConfig (или в конкретном конфиге):

В моём случае это русский и английский. При сборке в apk будут включены только ресурсы для указанных языков. Посмотрим, что получилось:

Вес apk уменьшился ещё на 265 килобайт. Неплохо. Посмотрим, что внутри:

В apk остались языковые ресурсы только для русского и английского. Было 86 языков, а осталось только два.

R8

Ещё одно средство для оптимизации байткода, но уже от гугла. Думаю, есть ненулевая вероятность того, что R8 когда-нибудь полностью заменит proguard. Этот инструмент встроен прямо в компилятор D8, который превращает Java байтод в dex байткод. В отличии от proguard, R8 работает в момент компиляции java байткода в dex байткод, что немного уменьшает общее время сборки apk.

Proguard:

R8:

R8 можно включить в Android Studio, начиная с версии 3.3, а с версии 3.4 он включен по-умолчанию. Для включения R8 нужно открыть файл gradle.properties и добавить строку:

android.enableR8=true

Кроме этого, можно включить агрессивный режим оптимизации строкой:

android.enableR8.fullMode=true

Но эта функция, пока что, нестабильна и не рекомендуется к использованию.

R8 поддерживает правила для proguard (упоминавшийся ранее файл proguard-rules.pro) и точно так же генерирует файлы mapping.txt, seeds.txt и usage.txt. Кроме вырезания ненужного кода и обфускации, R8 также оптимизирует dex байткод (помним, что proguard оптимизирует только java байткод). После сборки видим, что удалось сэкономить ещё 28 килобайт за счёт уменьшения dex файла:

В целом, после четырёх шагов удалось уменьшить вес приложения более, чем в два раза. Считаю, что результат достойный, особенно, если учесть, что это ещё не всё.

App Bundle

Это очень простой способ уменьшения веса приложения, не требующий никаких дополнительных знаний и умений. Достаточно собрать не apk, а бандл (файл с расширением .aab — android app bundle). Возможность сборки бандлов появилась в Android Studio с версии 3.2. Как и с apk, есть два способа сборки — через меню Build/Generate Signed Bundle(Apk) или через gradle таски bundleRelease/bundleDebug.

После сборки получается файл:

Его вес больше, чем вес apk, но это не имеет значения. По сути, это сырой файл приложения из которого могут быть сгенерированы apk файлы, которые можно устанавливать на android устройства. Этот файл загружается в Google Play Console, вместо apk, и там происходит магия. Приложение разбивается на основной apk и на набор apk конфигурации. При установке на устройство приложение собирается по частям:

Эта возможность называется Dynamic Delivery, она позволяет загружать на устройство только те ресурсы, которые соответствуют его конфигурации. А если конфигурация меняется, например пользователь меняет язык операционной системы, недостающие языковые ресурсы будут загружены автоматически в фоне. Работает это начиная с версии Android 5.0. Для более ранних версий заранее генерируются отдельные APK с различными конфигурациями, думаю это связано с виртуальной машиной Dalvik — она на такие фокусы неспособна. Всё это происходит автоматически и не требует ничего ни от разработчика, ни от пользователей.

При загрузке бандла в Google Play Store можно увидеть, сколько будет весить приложение:

Получается, что примерный размер приложения — 2.6 мегабайта, при том, что изначальный был почти 7 мегабайт. Разница очень ощутима — и она будет только расти с ростом размера приложения и количества его ресурсов.

На IO 2018 показывали такую картинку:

Для проверки и тестирования есть утилита bundletool. Она позволяет генерировать apk из бандла и манипулировать ими.

Dynamic Features

Ещё один способ уменьшения веса, который вытекает из предыдущего. Если возможно генерировать отдельные apk для различных конфигураций, то естественным образом возникает вопрос: «Можно ли насильно вынести отдельные куски приложения в отдельные apk?» Такая возможность есть и это Dynamic Features. Динамические модули — это отдельные модули приложения, которые специальным образом сконфигурированы. Создаётся такой модуль так же, как и другие модули Меню File -> New Module -> Dynamic Feature Module. Настройка несложная, подробней можно прочесть в документации. Также рекомендую посмотреть пример приложения от гугла.

В итоге получается, что есть основное приложение и дополнительные модули, которые могут быть загружены по требованию. Например в приложении с рецептами большинство пользователей только просматривает рецепты и лишь небольшой процент добавляет свои — возможность добавления рецептов можно вынести в dynamic module. Это уменьшит вес основного приложение на размер дополнительных модулей.

На февраль 2019 данная функциональность находится в стадии бэта версии. Если загрузить в Play Store бандл с динамическими модулями, появится предупреждение об этом и предложение заполнить анкету на участие в тестировании. После заполнения анкеты появится обещание рассмотреть заявку в течении пары недель. После некоторого ожидания в консоли появится сообщение о том, что можно загружать бандлы с динамическими модулями.

Удаление метаданных kotlin из сборки

Ещё один простой способ, подсмотренный в этой статье. В META-INF записываются дополнительные данные для рефлексии. Если в приложении не используется полноценная kotlin рефлексия(пакет kotlin-reflect), то эти файлы можно не включать в приложение. Для этого в gradle конфиге уровня приложения в блоке android нужно прописать следующее:

packagingOptions {
    exclude("META-INF/*.kotlin_module")
    exclude("**.kotlin_builtins")
    exclude("**.kotlin_metadata")
}

В моём случае вес приложения уменьшился ещё на 412 килобайт. Здесь показатель уменьшения веса напрямую зависит от количества кода в приложении. После сборки приложения стоит убедиться, что ничего не поломалось, так как рефлексия может использоваться в подключенных библиотеках. Также можно исключать отдельные файлы, чтобы оставить нужные для рефлексии.

И это ещё не всё

Размер приложения также можно уменьшить за счёт оптимизации различных ресурсов — графики, видео, звуков. Но это отдельная большая тема, достойная отельной статьи.

  • Как управлять домофоном с телефона
  • Как управлять проектором через телефон
  • Как уменьшить пинг на телефоне андроиде
  • Как управлять дистанционно другим телефоном
  • Как управлять приставкой ростелеком с телефона