Как уменьшить размер приложения (.apk) - PullRequest
43 голосов
/ 28 сентября 2010

Помощь!

Когда я устанавливаю свое приложение на телефон для тестирования, показывает, что оно ОГРОМНО, 11,35 МБ . Это очень простое приложение, которое позволяет пользователю просматривать забавные факты. Единственная причина, по которой я могу думать, состоит в том, что в чертежах есть 14 файлов JPEG, которые служат фоновыми изображениями забавных фактов. Средний размер этих файлов составляет около 500 КБ.

Я бы хотел урезать размер моего приложения, чтобы не использовать драгоценные ресурсы на устройстве пользователя. Кроме как избавиться от картинок, есть ли способы оптимизировать размер файла apk?

РЕДАКТИРОВАТЬ: Фотографии представляют собой фотографии, сделанные мной с помощью самого телефона Android.

Ответы [ 22 ]

33 голосов
/ 28 сентября 2010

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

23 голосов
/ 28 сентября 2010

Я бы порекомендовал вам максимально сжать файлы .jpg, это должно значительно уменьшить размер файла .apk.Такой бесплатный инструмент, как Paint.NET , должен помочь вам в этом.Имеет отличные возможности изменения размера.

13 голосов
/ 28 сентября 2010

Убедитесь, что ваши JPG не хранятся в более высоком разрешении, чем необходимо.Хороший телефон Android имеет разрешение экрана 1920x1200 или 2560x1440 (около 2015 года) 800 x 480 , поэтому фоновые изображения не должны содержать больше пикселей, чем это (если ваше приложение не поддерживает масштабирование).Кроме того, фоновые фотографии?Если нет, вы можете обнаружить, что использование векторного формата изображения, такого как svg, или формата с динамической палитрой, например gif, еще больше уменьшит размер файла.

11 голосов
/ 14 апреля 2015

ОБНОВЛЕНИЕ

С введением библиотеки поддержки 23.2 теперь вы можете заменить многие ваши ресурсы Image на SVG (без анимаций), чтобы еще больше уменьшить размер apk.

ORIGINAL

Это может быть поздний ответ, но может быть полезно для будущих пользователей.

Ссылка ссылка .Чтобы подвести итог страницы, он упоминает ниже ключевые моменты, которые помогут уменьшить размер apk в совокупности:

  • Использование ProGaurd
  • Удалить любую информацию отладки у вас есть в приложении (такие операторы, как Log.i ()).Они могут быть заключены в условие, которое включается только при тестировании приложения.
  • Использование рекомендуемых форматов мультимедиа
    • Изображение: PNG илиJPG
    • Аудио: AAC
    • Видео: H264 AVC
  • Сжатие изображений с использованием OptiPNG или PNGCrush
  • Используйте 9patch до масштабировать изображения
  • Найти неиспользуемые ресурсы , используя инструмент и удалитьих .
  • Избегайте использования нескольких ресурсов для достижения той же функциональности.Ресурсы не только ограничивают изображения, но и распространяются на API.Иногда отдельный API может предоставлять несколько результатов вместо использования двух или трех различных API.Дублированные строки и активы также являются пустой тратой пространства.
6 голосов
/ 20 августа 2014

Помимо оптимизации изображений, я также счел полезным проверить используемые вами библиотеки поддержки. У меня есть относительно простое приложение для таргетинга на платформы с API> = 10, но все равно мой APK составил 2,2 млн, или после использования ProGuard - 1,4 млн. Когда я посмотрел в APK, код был 1,5M, и было много дополнительных ресурсов (abc_ *), о которых я ничего не знал.

Тогда я нашел это: https://developer.android.com/tools/support-library/features.html

Оказывается, мне не нужен appcompat-v7, только support-v4, и внесение этого изменения в мои зависимости уменьшило размер APK до 1,7M (0,9M ​​с ProGuard). Понятно, что библиотеки поддержки несут много дополнительного (кода и ресурсов), поэтому может помочь только то, что вы используете только те, которые вам нужны.

(Несмотря на то, что -0,5M не имеет значения для приложения 11M, я публикую это здесь, потому что я продолжал попадать на эту страницу во время поиска решения ...)

4 голосов
/ 15 июля 2018

Преобразовать в WebP, что значительно уменьшит размер приложения

Это уменьшило размер приложения моего приложения, которое было 40 mb до 25 mb

Шаги:

  • Щелкните правой кнопкой мыши res
  • , чтобы преобразовать в WebP

Что делает : Уменьшает размер до png до WebP.Качество также не уничтожено


enter image description here

4 голосов
/ 04 апреля 2015
  • Использование tinypng сжатие файлов изображений в формате png или jpg вашего проекта. Это может значительно уменьшить размер изображения без потери качества изображения ;
  • Некоторые изображения используют сжатие tinypngвозможно искажение, вы можете конвертировать
    эти изображения в формат webP, использовать 智 图 или iSparta можете конвертировать другой формат в webP;
  • Использовать проверку Lint не использоватьресурсы и удалите его;
3 голосов
/ 18 апреля 2018

Четыре способа, и размер вашего приложения увеличится с 11,35 МБ до почти 5 МБ. Во-первых, проверьте компоненты приложения с помощью App Analyzer (встроенная функция Android Studio), просто нажмите на Build вверху и нажмите Analyze APK. Он покажет вам все, что компоненты apk использует.

  1. Включить Proguard
  2. Включить ShrinkResource
  3. resConfigs (Назовите его, например, если ваше приложение только на одном языке, например на английском, тогда просто укажите resConfigs "en")
  4. Преобразование всех изображений из .png или.jpg в webp (наиболее важные).

Шаги для достижения этих шагов.

1 & 2. Для Proguard и ShrinkResource

В Gradle просто добавьте

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

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

    }

  2. Чтобы преобразовать все изображения из .png или.jpg в webp

Очень простой процесс: просто щелкните правой кнопкой мыши по папке drawable (drawable, drawable-hdpi, drawable-xhdpi и т. Д.) И выберите convertToWebP (последний вариант).

Минимальная версия SDK должна быть 18.

Вот и мы: теперь проанализируем размер вашего приложения.

Бинго !!!!!!

3 голосов
/ 18 сентября 2011

Еще одна вещь, которую нужно добавить к размеру файла изображения - различные алгоритмы могут оказать существенное влияние на конечный размер.Я обнаружил, что www.smushit.com от Yahoo намного более эффективен (по крайней мере, для .png), чем компрессоры и кодеки, которые у меня есть на моем компьютере прямо сейчас.

2 голосов
/ 27 июня 2017

Формат изображения WebP: обеспечивает сжатие с потерями (например, JPEG), а также прозрачность (например, PNG), но может обеспечить лучшее сжатие, чем JPEG или PNG

.

Преобразование изображений в WebP

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...