В этом руководстве описывается, как уменьшить размер игры. После установки игра меньшего размера требует меньше времени для загрузки и меньше данных. И то, и другое приводит к более высокой конверсии в установках. Исследование Google показывает, что увеличение размера обслуживаемого APK-файла на 6 МБ приводит к снижению количества установок на 1%. Многие разработчики перемещают активы из APK в сеть доставки контента (CDN), но затем несут затраты как на хостинг CDN, так и на разработку и обслуживание системы управления активами.
Чтобы уменьшить размер игры, выполните следующие действия:
- Используйте оптимизированные методы доставки, такие как App Bundle и Play Asset Delivery .
- Определите базовый размер игры и поймите ее структуру .
- Найдите ресурсы и другие файлы, размер которых можно уменьшить .
- Осмотрите графические текстуры и выявите возможности для оптимизации .
- Следуйте общим рекомендациям по активам .
Используйте оптимизированные методы доставки, такие как наборы приложений Android и доставка ресурсов Play.
Рассмотрим следующие способы доставки:
- Хотя устаревшие проекты обычно выдают для публикации APK-файлы, для публикации игр в Google Play следует использовать пакет Android App Bundle . Пакеты приложений предоставляют оптимизированные APK-файлы, адаптированные к конфигурации устройства каждого пользователя. В среднем пакеты приложений уменьшают размер приложения на 20 %. 
- Чтобы предоставлять игровые ресурсы через Google Play и превысить ограничение размера загрузки в 200 МБ для пакетов приложений размером до нескольких ГБ, используйте Play Asset Delivery (PAD) . Никакого внешнего CDN не требуется. PAD поддерживает три различных метода доставки, каждый из которых можно использовать в одной игре: - Время установки: загрузка ресурсов после установки. Ресурсы упаковываются в пакеты ресурсов, которые заменяют файлы Opaque Binary Blob (OBB).
- Быстрое выполнение: загрузка ресурсов после установки.
- По требованию: игра инициирует загрузку ресурсов по мере необходимости.
 - PAD требует, чтобы игры были упакованы в формате App Bundle. PAD также может уменьшить объем данных, используемых CDN разработчика (если он все еще необходим). 
- Google Play использует пакеты приложений Android для создания и предоставления оптимизированных APK-файлов для конфигурации устройства каждого пользователя. Эти оптимизированные APK-файлы включают в себя единый набор текстур, отформатированных с использованием оптимального формата сжатия для устройства. Настройте свой пакет приложений для поддержки различных форматов сжатия текстур для поддержки самого широкого спектра устройств. 
Определите базовый размер игры и поймите ее структуру.
Чтобы ознакомиться с игрой, определить объем работы, необходимой для той или иной оптимизации, а также определить, загружает ли игра дополнительные ресурсы, выполните следующие действия:
- Используйте производственную (неотладочную) сборку от разработчика или опубликованный APK.
- Запишите размер двоичного файла, предоставленный разработчиком, или, если игра была опубликована, на странице игры в Play Store. Для размера APK наиболее важным фактором является объем данных, который пользователь должен загрузить для запуска реальной игры.
- Установите игру на устройство и запустите ее в начальное меню игры. На этом этапе проверьте установочный размер игры, указанный Android (в разделе «Настройки» > «Память» ). Некоторые игры имеют небольшой начальный размер установки, так как это ключевой номер для оптимизации, но после установки загружаются дополнительные данные. Некоторые игры после установки загружают несколько гигабайт данных.
- Некоторые игры загружают данные только после того, как вы начнете в них играть. Вам следует немного поиграть в игру, чтобы определить, сколько дополнительных данных загружает игра для типичного пользователя, впервые играющего в игру.
Поиск ресурсов и других файлов, размер которых можно уменьшить.
В этом разделе описывается, как уменьшить размер файлов в APK. Вы можете использовать App Bundle Explorer для загрузки APK-файлов для конкретного устройства.
Чтобы уменьшить размер файлов, упакованных непосредственно в APK, выполните следующие действия:
- Используйте APK-анализатор Android Studio. В Android Studio выберите «Файл» > «Профиль» или «Отладка APK» и выберите свой APK.
- Выберите папку «Ресурсы» . Для каждого файла указан необработанный размер файла и процент от общего размера загрузки.
- Просмотрите папку «Ресурсы» и определите, где находится основная часть данных игры. Определите, есть ли какие-либо активы, которые занимают слишком много места (то есть больше 1% от общего объема). В частности, обратите внимание на следующее: - Большие изображения и видеофайлы (например, файлы PNG, JPEG и mp4). Эти файлы обычно используются в заставках, фонах и логотипах. Эти файлы редко используются в большинстве игр и могут быть дополнительно сжаты, не влияя на удобство работы пользователя. Файлы PNG без потерь имеют особенно большой размер и являются отличными кандидатами на сжатие.
- Большие файлы шрифтов (например, файлы TTF). Если вы добавите поддержку эмодзи, это может значительно увеличить размер файла шрифта. Если размер файла шрифта превышает несколько сотен килобайт, подумайте о том, как уменьшить его размер.
- Дублирующиеся форматы или версии аудиофайлов, которые можно комбинировать.
 
- Если в APK включено несколько двоичных интерфейсов приложений (ABI), перейдите к пакетам приложений или создайте несколько APK. 
- Определите размер файлов двоичных общих объектов (.so). Чтобы проверить двоичные файлы на наличие элементов, которые не нужно включать, например файлов журналов, вы можете использовать инструмент Bloaty McBloatface . Дополнительную информацию о том, как оптимизировать двоичные файлы, см. в разделе Флаги и параметры компиляции . 
- Просмотрите файл манифеста Android на наличие поддерживаемых графических форматов. Определите, есть ли в APK несколько тегов - <supports-gl-texture>. Если игра поддерживает форматы для нескольких графических процессоров в одном APK, рассмотрите возможность использования Basis Universal от Binomial . Эта система сжатия текстур графического процессора создает файлы текстур в промежуточном формате, которые можно быстро перекодировать в графический процессор.
Осмотрите графические текстуры и выявите возможности для оптимизации.
В этом разделе описаны инструменты и методы, необходимые для определения возможности оптимизации графических текстур, используемых в игре.
Чтобы проверить текстуры в игре, используйте Android GPU Inspector (AGI), RenderDoc или, только для графических процессоров Qualcomm Snapdragon, Snapdragon Profiler .
Ищите следующее:
- Текстуры, размер которых можно изменить до меньшего разрешения, например, большая текстура для чего-то, что в игре отображается только в небольшом размере. Понижение разрешения текстур требует больших вычислительных затрат.
- Использование нескольких небольших текстур, которые можно объединить в одну текстурную карту.
- Текстуры, которые могут использовать меньше битов в цветовых каналах. Хорошими кандидатами являются текстуры с несколькими сплошными текстурами. Градиенты и оттенки цвета требуют большего разрешения и поэтому не являются хорошими кандидатами.
- Изучите лучшие алгоритмы сжатия текстур: от ETC1 до ETC2 и ASTC.
- Откажитесь от верхнего уровня MIP-карты при загрузке текстур на устройствах более низкого уровня для экономии памяти. Система текстурной потоковой передачи Unity может это сделать. 
- Если вы еще этого не сделали, просмотрите файл манифеста Android на наличие поддерживаемых графических форматов. Определите, есть ли в APK несколько тегов - <supports-gl-texture>. Если игра поддерживает форматы для нескольких графических процессоров в одном APK, рассмотрите возможность использования Basis Universal от Binomial . Эта система сжатия текстур графического процессора создает файлы текстур в промежуточном формате, которые можно быстро перекодировать в графический процессор.
Общие рекомендации по активам
Следуйте этим рекомендациям для ресурсов APK:
- Ресурсы изображений, аудио и видео (не текстуры графического процессора). Определите, можно ли изменить размер ресурсов или еще больше сжать их. Для игр обычно допустима более высокая степень сжатия. PNG-файлы без потерь имеют особенно большой размер и поэтому являются отличными кандидатами на сжатие.
- Ресурсы изображений (не текстуры графического процессора). Рассмотрите возможность использования WEBP , формата сжатия изображений как с потерями, так и без потерь. WEBP с потерями сжимает изображения на 25–34 % сильнее, чем JPG.
- Уменьшите разрешение текстуры. Текстура, намного превышающая количество пикселей, которые в конечном итоге отображаются на экране, представляет собой неэффективное использование пространства и ресурсов графического процессора. Чтобы изменить текстуру и посмотреть, как она выглядит в кадре без необходимости пересборки игры, используйте AGI .
- Измените форматы графических текстур. Используйте форматы текстур, которые используют меньше битов на канал. Например, используйте 16-битный формат текстур, такой как RGB565, вместо 32-битного формата текстур, такого как ARGB. Для получения дополнительной информации см. следующее:
Дополнительные ресурсы
- Последние улучшения Android App Bundle и график появления новых приложений в Google Play
- Уменьшите размер APK в мгновенных играх для Android
- Суперсжатые текстуры, декодируемые графическим процессором (исследовательская статья)
В этом руководстве описывается, как уменьшить размер игры. После установки игра меньшего размера требует меньше времени для загрузки и меньше данных. И то, и другое приводит к более высокой конверсии в установках. Исследование Google показывает, что увеличение размера обслуживаемого APK-файла на 6 МБ приводит к снижению количества установок на 1%. Многие разработчики перемещают активы из APK в сеть доставки контента (CDN), но затем несут затраты как на хостинг CDN, так и на разработку и обслуживание системы управления активами.
Чтобы уменьшить размер игры, выполните следующие действия:
- Используйте оптимизированные методы доставки, такие как App Bundle и Play Asset Delivery .
- Определите базовый размер игры и поймите ее структуру .
- Найдите ресурсы и другие файлы, размер которых можно уменьшить .
- Осмотрите графические текстуры и выявите возможности для оптимизации .
- Следуйте общим рекомендациям по активам .
Используйте оптимизированные методы доставки, такие как наборы приложений Android и доставка ресурсов Play.
Рассмотрим следующие способы доставки:
- Хотя устаревшие проекты обычно выдают для публикации APK-файлы, для публикации игр в Google Play следует использовать пакет Android App Bundle . Пакеты приложений предоставляют оптимизированные APK-файлы, адаптированные к конфигурации устройства каждого пользователя. В среднем пакеты приложений уменьшают размер приложения на 20 %. 
- Чтобы предоставлять игровые ресурсы через Google Play и превысить ограничение размера загрузки в 200 МБ для пакетов приложений размером до нескольких ГБ, используйте Play Asset Delivery (PAD) . Никакого внешнего CDN не требуется. PAD поддерживает три различных метода доставки, каждый из которых можно использовать в одной игре: - Время установки: загрузка ресурсов после установки. Ресурсы упаковываются в пакеты ресурсов, которые заменяют файлы Opaque Binary Blob (OBB).
- Быстрое выполнение: загрузка ресурсов после установки.
- По требованию: игра инициирует загрузку ресурсов по мере необходимости.
 - PAD требует, чтобы игры были упакованы в формате App Bundle. PAD также может уменьшить объем данных, используемых CDN разработчика (если он все еще необходим). 
- Google Play использует пакеты приложений Android для создания и предоставления оптимизированных APK-файлов для конфигурации устройства каждого пользователя. Эти оптимизированные APK-файлы включают в себя единый набор текстур, отформатированных с использованием оптимального формата сжатия для устройства. Настройте свой пакет приложений для поддержки различных форматов сжатия текстур для поддержки самого широкого спектра устройств. 
Определите базовый размер игры и поймите ее структуру.
Чтобы ознакомиться с игрой, определить объем работы, необходимой для той или иной оптимизации, а также определить, загружает ли игра дополнительные ресурсы, выполните следующие действия:
- Используйте производственную (неотладочную) сборку от разработчика или опубликованный APK.
- Запишите размер двоичного файла, предоставленный разработчиком, или, если игра была опубликована, на странице игры в Play Store. Для размера APK наиболее важным фактором является объем данных, который пользователь должен загрузить для запуска реальной игры.
- Установите игру на устройство и запустите ее в начальное меню игры. На этом этапе проверьте установочный размер игры, указанный Android (в разделе «Настройки» > «Память» ). Некоторые игры имеют небольшой начальный размер установки, так как это ключевой номер для оптимизации, но после установки загружаются дополнительные данные. Некоторые игры после установки загружают несколько гигабайт данных.
- Некоторые игры загружают данные только после того, как вы начнете в них играть. Вам следует немного поиграть в игру, чтобы определить, сколько дополнительных данных загружает игра для типичного пользователя, впервые играющего в игру.
Поиск ресурсов и других файлов, размер которых можно уменьшить.
В этом разделе описывается, как уменьшить размер файлов в APK. Вы можете использовать App Bundle Explorer для загрузки APK-файлов для конкретного устройства.
Чтобы уменьшить размер файлов, упакованных непосредственно в APK, выполните следующие действия:
- Используйте APK-анализатор Android Studio. В Android Studio выберите «Файл» > «Профиль» или «Отладка APK» и выберите свой APK.
- Выберите папку «Ресурсы» . Для каждого файла указан необработанный размер файла и процент от общего размера загрузки.
- Просмотрите папку «Ресурсы» и определите, где находится основная часть данных игры. Определите, есть ли какие-либо активы, которые занимают слишком много места (то есть больше 1% от общего объема). В частности, обратите внимание на следующее: - Большие изображения и видеофайлы (например, файлы PNG, JPEG и mp4). Эти файлы обычно используются в заставках, фонах и логотипах. Эти файлы редко используются в большинстве игр и могут быть дополнительно сжаты, не влияя на удобство работы пользователя. Файлы PNG без потерь имеют особенно большой размер и являются отличными кандидатами на сжатие.
- Большие файлы шрифтов (например, файлы TTF). Если вы добавите поддержку эмодзи, это может значительно увеличить размер файла шрифта. Если размер файла шрифта превышает несколько сотен килобайт, подумайте о том, как уменьшить его размер.
- Дублирующиеся форматы или версии аудиофайлов, которые можно комбинировать.
 
- Если в APK включено несколько двоичных интерфейсов приложений (ABI), перейдите к пакетам приложений или создайте несколько APK. 
- Определите размер файлов двоичных общих объектов (.so). Чтобы проверить двоичные файлы на наличие элементов, которые не нужно включать, например файлов журналов, вы можете использовать инструмент Bloaty McBloatface . Дополнительную информацию о том, как оптимизировать двоичные файлы, см. в разделе Флаги и параметры компиляции . 
- Просмотрите файл манифеста Android на наличие поддерживаемых графических форматов. Определите, есть ли в APK несколько тегов - <supports-gl-texture>. Если игра поддерживает форматы для нескольких графических процессоров в одном APK, рассмотрите возможность использования Basis Universal от Binomial . Эта система сжатия текстур графического процессора создает файлы текстур в промежуточном формате, которые можно быстро перекодировать в графический процессор.
Осмотрите графические текстуры и выявите возможности для оптимизации.
В этом разделе описаны инструменты и методы, необходимые для определения возможности оптимизации графических текстур, используемых в игре.
Чтобы проверить текстуры в игре, используйте Android GPU Inspector (AGI), RenderDoc или, только для графических процессоров Qualcomm Snapdragon, Snapdragon Profiler .
Ищите следующее:
- Текстуры, размер которых можно изменить до меньшего разрешения, например, большая текстура для чего-то, что в игре отображается только в небольшом размере. Понижение разрешения текстур требует больших вычислительных затрат.
- Использование нескольких небольших текстур, которые можно объединить в одну текстурную карту.
- Текстуры, которые могут использовать меньше битов в цветовых каналах. Хорошими кандидатами являются текстуры с несколькими сплошными текстурами. Градиенты и оттенки цвета требуют большего разрешения и поэтому не являются хорошими кандидатами.
- Изучите лучшие алгоритмы сжатия текстур: от ETC1 до ETC2 и ASTC.
- Откажитесь от верхнего уровня MIP-карты при загрузке текстур на устройствах более низкого уровня для экономии памяти. Система текстурной потоковой передачи Unity может это сделать. 
- Если вы еще этого не сделали, просмотрите файл манифеста Android на наличие поддерживаемых графических форматов. Определите, есть ли в APK несколько тегов - <supports-gl-texture>. Если игра поддерживает форматы для нескольких графических процессоров в одном APK, рассмотрите возможность использования Basis Universal от Binomial . Эта система сжатия текстур графического процессора создает файлы текстур в промежуточном формате, которые можно быстро перекодировать в графический процессор.
Общие рекомендации по активам
Следуйте этим рекомендациям для ресурсов APK:
- Ресурсы изображений, аудио и видео (не текстуры графического процессора). Определите, можно ли изменить размер ресурсов или еще больше сжать их. Для игр обычно допустима более высокая степень сжатия. PNG-файлы без потерь имеют особенно большой размер и поэтому являются отличными кандидатами на сжатие.
- Ресурсы изображений (не текстуры графического процессора). Рассмотрите возможность использования WEBP , формата сжатия изображений как с потерями, так и без потерь. WEBP с потерями сжимает изображения на 25–34 % сильнее, чем JPG.
- Уменьшите разрешение текстуры. Текстура, намного превышающая количество пикселей, которые в конечном итоге отображаются на экране, представляет собой неэффективное использование пространства и ресурсов графического процессора. Чтобы изменить текстуру и посмотреть, как она выглядит в кадре без необходимости пересборки игры, используйте AGI .
- Измените форматы графических текстур. Используйте форматы текстур, которые используют меньше битов на канал. Например, используйте 16-битный формат текстур, такой как RGB565, вместо 32-битного формата текстур, такого как ARGB. Для получения дополнительной информации см. следующее:
Дополнительные ресурсы
- Последние улучшения Android App Bundle и график появления новых приложений в Google Play
- Уменьшите размер APK в мгновенных играх для Android
- Суперсжатые текстуры, декодируемые графическим процессором (исследовательская статья)
В этом руководстве описывается, как уменьшить размер игры. После установки игра меньшего размера требует меньше времени для загрузки и меньше данных. И то, и другое приводит к более высокой конверсии в установках. Исследование Google показывает, что увеличение размера обслуживаемого APK-файла на 6 МБ приводит к снижению количества установок на 1%. Многие разработчики перемещают активы из APK в сеть доставки контента (CDN), но затем несут затраты как на хостинг CDN, так и на разработку и обслуживание системы управления активами.
Чтобы уменьшить размер игры, выполните следующие действия:
- Используйте оптимизированные методы доставки, такие как App Bundle и Play Asset Delivery .
- Определите базовый размер игры и поймите ее структуру .
- Найдите ресурсы и другие файлы, размер которых можно уменьшить .
- Осмотрите графические текстуры и выявите возможности для оптимизации .
- Следуйте общим рекомендациям по активам .
Используйте оптимизированные методы доставки, такие как наборы приложений Android и доставка ресурсов Play.
Рассмотрим следующие способы доставки:
- Хотя устаревшие проекты обычно выдают для публикации APK-файлы, для публикации игр в Google Play следует использовать пакет Android App Bundle . Пакеты приложений предоставляют оптимизированные APK-файлы, адаптированные к конфигурации устройства каждого пользователя. В среднем пакеты приложений уменьшают размер приложения на 20 %. 
- Чтобы предоставлять игровые ресурсы через Google Play и превысить ограничение размера загрузки в 200 МБ для пакетов приложений размером до нескольких ГБ, используйте Play Asset Delivery (PAD) . Никакого внешнего CDN не требуется. PAD поддерживает три различных метода доставки, каждый из которых можно использовать в одной игре: - Время установки: загрузка ресурсов после установки. Ресурсы упаковываются в пакеты ресурсов, которые заменяют файлы Opaque Binary Blob (OBB).
- Быстрое выполнение: загрузка ресурсов после установки.
- По требованию: игра инициирует загрузку ресурсов по мере необходимости.
 - PAD требует, чтобы игры были упакованы в формате App Bundle. PAD также может уменьшить объем данных, используемых CDN разработчика (если он все еще необходим). 
- Google Play использует пакеты приложений Android для создания и предоставления оптимизированных APK-файлов для конфигурации устройства каждого пользователя. Эти оптимизированные APK-файлы включают в себя единый набор текстур, отформатированных с использованием оптимального формата сжатия для устройства. Настройте свой пакет приложений для поддержки различных форматов сжатия текстур для поддержки самого широкого спектра устройств. 
Определите базовый размер игры и поймите ее структуру.
Чтобы ознакомиться с игрой, определить объем работы, необходимой для той или иной оптимизации, а также определить, загружает ли игра дополнительные ресурсы, выполните следующие действия:
- Используйте производственную (неотладочную) сборку от разработчика или опубликованный APK.
- Запишите размер двоичного файла, предоставленный разработчиком, или, если игра была опубликована, на странице игры в Play Store. Для размера APK наиболее важным фактором является объем данных, который пользователь должен загрузить для запуска реальной игры.
- Установите игру на устройство и запустите ее в начальное меню игры. На этом этапе проверьте установочный размер игры, указанный Android (в разделе «Настройки» > «Память» ). Некоторые игры имеют небольшой начальный размер установки, так как это ключевой номер для оптимизации, но после установки загружаются дополнительные данные. Некоторые игры после установки загружают несколько гигабайт данных.
- Некоторые игры загружают данные только после того, как вы начнете в них играть. Вам следует немного поиграть в игру, чтобы определить, сколько дополнительных данных загружает игра для типичного пользователя, впервые играющего в игру.
Поиск ресурсов и других файлов, размер которых можно уменьшить.
В этом разделе описывается, как уменьшить размер файлов в APK. Вы можете использовать App Bundle Explorer для загрузки APK-файлов для конкретного устройства.
Чтобы уменьшить размер файлов, упакованных непосредственно в APK, выполните следующие действия:
- Используйте APK-анализатор Android Studio. В Android Studio выберите «Файл» > «Профиль» или «Отладка APK» и выберите свой APK.
- Выберите папку «Ресурсы» . Для каждого файла указан необработанный размер файла и процент от общего размера загрузки.
- Просмотрите папку «Ресурсы» и определите, где находится основная часть данных игры. Определите, есть ли какие-либо активы, которые занимают слишком много места (то есть больше 1% от общего объема). В частности, обратите внимание на следующее: - Большие изображения и видеофайлы (например, файлы PNG, JPEG и mp4). Эти файлы обычно используются в заставках, фонах и логотипах. Эти файлы редко используются в большинстве игр и могут быть дополнительно сжаты, не влияя на удобство работы пользователя. Файлы PNG без потерь имеют особенно большой размер и являются отличными кандидатами на сжатие.
- Большие файлы шрифтов (например, файлы TTF). Если вы добавите поддержку эмодзи, это может значительно увеличить размер файла шрифта. Если размер файла шрифта превышает несколько сотен килобайт, подумайте о том, как уменьшить его размер.
- Дублирующиеся форматы или версии аудиофайлов, которые можно комбинировать.
 
- Если в APK включено несколько двоичных интерфейсов приложений (ABI), перейдите к пакетам приложений или создайте несколько APK. 
- Определите размер файлов двоичных общих объектов (.so). Чтобы проверить двоичные файлы на наличие элементов, которые не нужно включать, например файлов журналов, вы можете использовать инструмент Bloaty McBloatface . Дополнительную информацию о том, как оптимизировать двоичные файлы, см. в разделе Флаги и параметры компиляции . 
- Просмотрите файл манифеста Android на наличие поддерживаемых графических форматов. Определите, есть ли в APK несколько тегов - <supports-gl-texture>. Если игра поддерживает форматы для нескольких графических процессоров в одном APK, рассмотрите возможность использования Basis Universal от Binomial . Эта система сжатия текстур графического процессора создает файлы текстур в промежуточном формате, которые можно быстро перекодировать в графический процессор.
Осмотрите графические текстуры и выявите возможности для оптимизации.
В этом разделе описаны инструменты и методы, необходимые для определения возможности оптимизации графических текстур, используемых в игре.
Чтобы проверить текстуры в игре, используйте Android GPU Inspector (AGI), RenderDoc или, только для графических процессоров Qualcomm Snapdragon, Snapdragon Profiler .
Ищите следующее:
- Текстуры, размер которых можно изменить до меньшего разрешения, например, большая текстура для чего-то, что в игре отображается только в небольшом размере. Понижение разрешения текстур требует больших вычислительных затрат.
- Использование нескольких небольших текстур, которые можно объединить в одну текстурную карту.
- Текстуры, которые могут использовать меньше битов в цветовых каналах. Хорошими кандидатами являются текстуры с несколькими сплошными текстурами. Градиенты и оттенки цвета требуют большего разрешения и поэтому не являются хорошими кандидатами.
- Изучите лучшие алгоритмы сжатия текстур: от ETC1 до ETC2 и ASTC.
- Откажитесь от верхнего уровня MIP-карты при загрузке текстур на устройствах более низкого уровня для экономии памяти. Система текстурной потоковой передачи Unity может это сделать. 
- Если вы еще этого не сделали, просмотрите файл манифеста Android на наличие поддерживаемых графических форматов. Определите, есть ли в APK несколько тегов - <supports-gl-texture>. Если игра поддерживает форматы для нескольких графических процессоров в одном APK, рассмотрите возможность использования Basis Universal от Binomial . Эта система сжатия текстур графического процессора создает файлы текстур в промежуточном формате, которые можно быстро перекодировать в графический процессор.
Общие рекомендации по активам
Следуйте этим рекомендациям для ресурсов APK:
- Ресурсы изображений, аудио и видео (не текстуры графического процессора). Определите, можно ли изменить размер ресурсов или еще больше сжать их. Для игр обычно допустима более высокая степень сжатия. PNG-файлы без потерь имеют особенно большой размер и поэтому являются отличными кандидатами на сжатие.
- Ресурсы изображений (не текстуры графического процессора). Рассмотрите возможность использования WEBP , формата сжатия изображений как с потерями, так и без потерь. WEBP с потерями сжимает изображения на 25–34 % сильнее, чем JPG.
- Уменьшите разрешение текстуры. Текстура, намного превышающая количество пикселей, которые в конечном итоге отображаются на экране, представляет собой неэффективное использование пространства и ресурсов графического процессора. Чтобы изменить текстуру и посмотреть, как она выглядит в кадре без необходимости пересборки игры, используйте AGI .
- Измените форматы графических текстур. Используйте форматы текстур, которые используют меньше битов на канал. Например, используйте 16-битный формат текстур, такой как RGB565, вместо 32-битного формата текстур, такого как ARGB. Для получения дополнительной информации см. следующее:
Дополнительные ресурсы
- Последние улучшения Android App Bundle и график появления новых приложений в Google Play
- Уменьшите размер APK в мгновенных играх для Android
- Суперсжатые текстуры, декодируемые графическим процессором (исследовательская статья)
В этом руководстве описывается, как уменьшить размер игры. После установки игра меньшего размера требует меньше времени для загрузки и меньше данных. И то, и другое приводит к более высокой конверсии в установках. Исследование Google показывает, что увеличение размера обслуживаемого APK-файла на 6 МБ приводит к снижению количества установок на 1%. Многие разработчики перемещают активы из APK в сеть доставки контента (CDN), но затем несут затраты как на хостинг CDN, так и на разработку и обслуживание системы управления активами.
Чтобы уменьшить размер игры, выполните следующие действия:
- Используйте оптимизированные методы доставки, такие как App Bundle и Play Asset Delivery .
- Определите базовый размер игры и поймите ее структуру .
- Найдите ресурсы и другие файлы, размер которых можно уменьшить .
- Осмотрите графические текстуры и выявите возможности для оптимизации .
- Следуйте общим рекомендациям по активам .
Используйте оптимизированные методы доставки, такие как наборы приложений Android и доставка ресурсов Play.
Рассмотрим следующие способы доставки:
- Хотя устаревшие проекты обычно выдают для публикации APK-файлы, для публикации игр в Google Play следует использовать пакет Android App Bundle . Пакеты приложений предоставляют оптимизированные APK-файлы, адаптированные к конфигурации устройства каждого пользователя. В среднем пакеты приложений уменьшают размер приложения на 20 %. 
- Чтобы предоставлять игровые ресурсы через Google Play и превысить ограничение размера загрузки в 200 МБ для пакетов приложений размером до нескольких ГБ, используйте Play Asset Delivery (PAD) . Никакого внешнего CDN не требуется. PAD поддерживает три различных метода доставки, каждый из которых можно использовать в одной игре: - Время установки: загрузка ресурсов после установки. Ресурсы упаковываются в пакеты ресурсов, которые заменяют файлы Opaque Binary Blob (OBB).
- Быстрое выполнение: загрузка ресурсов после установки.
- По требованию: игра инициирует загрузку ресурсов по мере необходимости.
 - PAD требует, чтобы игры были упакованы в формате App Bundle. PAD также может уменьшить объем данных, используемых CDN разработчика (если он все еще необходим). 
- Google Play использует пакеты приложений Android для создания и предоставления оптимизированных APK-файлов для конфигурации устройства каждого пользователя. Эти оптимизированные APK-файлы включают в себя единый набор текстур, отформатированных с использованием оптимального формата сжатия для устройства. Настройте свой пакет приложений для поддержки различных форматов сжатия текстур для поддержки самого широкого спектра устройств. 
Определите базовый размер игры и поймите ее структуру.
Чтобы ознакомиться с игрой, определить объем работы, необходимой для той или иной оптимизации, а также определить, загружает ли игра дополнительные ресурсы, выполните следующие действия:
- Используйте производственную (неотладочную) сборку от разработчика или опубликованный APK.
- Запишите размер двоичного файла, предоставленный разработчиком, или, если игра была опубликована, на странице игры в Play Store. Для размера APK наиболее важным фактором является объем данных, который пользователь должен загрузить для запуска реальной игры.
- Установите игру на устройство и запустите ее в начальное меню игры. На этом этапе проверьте установочный размер игры, указанный Android (в разделе «Настройки» > «Память» ). Некоторые игры имеют небольшой начальный размер установки, так как это ключевой номер для оптимизации, но после установки загружаются дополнительные данные. Некоторые игры после установки загружают несколько гигабайт данных.
- Некоторые игры загружают данные только после того, как вы начнете в них играть. Вам следует немного поиграть в игру, чтобы определить, сколько дополнительных данных загружает игра для типичного пользователя, впервые играющего в игру.
Поиск ресурсов и других файлов, размер которых можно уменьшить.
В этом разделе описывается, как уменьшить размер файлов в APK. Вы можете использовать App Bundle Explorer для загрузки APK-файлов для конкретного устройства.
Чтобы уменьшить размер файлов, упакованных непосредственно в APK, выполните следующие действия:
- Используйте APK-анализатор Android Studio. В Android Studio выберите «Файл» > «Профиль» или «Отладка APK» и выберите свой APK.
- Выберите папку «Ресурсы» . Для каждого файла указан необработанный размер файла и процент от общего размера загрузки.
- Просмотрите папку «Ресурсы» и определите, где находится основная часть данных игры. Определите, есть ли какие-либо активы, которые занимают слишком много места (то есть больше 1% от общего объема). В частности, обратите внимание на следующее: - Большие изображения и видеофайлы (например, файлы PNG, JPEG и mp4). Эти файлы обычно используются в заставках, фонах и логотипах. Эти файлы редко используются в большинстве игр и могут быть дополнительно сжаты, не влияя на удобство работы пользователя. Файлы PNG без потерь имеют особенно большой размер и являются отличными кандидатами на сжатие.
- Большие файлы шрифтов (например, файлы TTF). Если вы добавите поддержку эмодзи, это может значительно увеличить размер файла шрифта. Если размер файла шрифта превышает несколько сотен килобайт, подумайте о том, как уменьшить его размер.
- Дублирующиеся форматы или версии аудиофайлов, которые можно комбинировать.
 
- Если в APK включено несколько двоичных интерфейсов приложений (ABI), перейдите к пакетам приложений или создайте несколько APK. 
- Определите размер файлов двоичных общих объектов (.so). Чтобы проверить двоичные файлы на наличие элементов, которые не нужно включать, например файлов журналов, вы можете использовать инструмент Bloaty McBloatface . Дополнительную информацию о том, как оптимизировать двоичные файлы, см. в разделе Флаги и параметры компиляции . 
- Просмотрите файл манифеста Android на наличие поддерживаемых графических форматов. Определите, есть ли в APK несколько тегов - <supports-gl-texture>. Если игра поддерживает форматы для нескольких графических процессоров в одном APK, рассмотрите возможность использования Basis Universal от Binomial . Эта система сжатия текстур графического процессора создает файлы текстур в промежуточном формате, которые можно быстро перекодировать в графический процессор.
Осмотрите графические текстуры и выявите возможности для оптимизации.
В этом разделе описаны инструменты и методы, необходимые для определения возможности оптимизации графических текстур, используемых в игре.
Чтобы проверить текстуры в игре, используйте Android GPU Inspector (AGI), RenderDoc или, только для графических процессоров Qualcomm Snapdragon, Snapdragon Profiler .
Ищите следующее:
- Текстуры, размер которых можно изменить до меньшего разрешения, например, большая текстура для чего-то, что в игре отображается только в небольшом размере. Понижение разрешения текстур требует больших вычислительных затрат.
- Использование нескольких небольших текстур, которые можно объединить в одну текстурную карту.
- Текстуры, которые могут использовать меньше битов в цветовых каналах. Хорошими кандидатами являются текстуры с несколькими сплошными текстурами. Градиенты и оттенки цвета требуют большего разрешения и поэтому не являются хорошими кандидатами.
- Изучите лучшие алгоритмы сжатия текстур: от ETC1 до ETC2 и ASTC.
- Откажитесь от верхнего уровня MIP-карты при загрузке текстур на устройствах более низкого уровня для экономии памяти. Система текстурной потоковой передачи Unity может это сделать. 
- Если вы еще этого не сделали, просмотрите файл манифеста Android на наличие поддерживаемых графических форматов. Определите, есть ли в APK несколько тегов - <supports-gl-texture>. Если игра поддерживает форматы для нескольких графических процессоров в одном APK, рассмотрите возможность использования Basis Universal от Binomial . Эта система сжатия текстур графического процессора создает файлы текстур в промежуточном формате, которые можно быстро перекодировать в графический процессор.
Общие рекомендации по активам
Следуйте этим рекомендациям для ресурсов APK:
- Ресурсы изображений, аудио и видео (не текстуры графического процессора). Определите, можно ли изменить размер ресурсов или еще больше сжать их. Для игр обычно допустима более высокая степень сжатия. PNG-файлы без потерь имеют особенно большой размер и поэтому являются отличными кандидатами на сжатие.
- Ресурсы изображений (не текстуры графического процессора). Рассмотрите возможность использования WEBP , формата сжатия изображений как с потерями, так и без потерь. WEBP с потерями сжимает изображения на 25–34 % сильнее, чем JPG.
- Уменьшите разрешение текстуры. Текстура, намного превышающая количество пикселей, которые в конечном итоге отображаются на экране, представляет собой неэффективное использование пространства и ресурсов графического процессора. Чтобы изменить текстуру и посмотреть, как она выглядит в кадре без необходимости пересборки игры, используйте AGI .
- Измените форматы графических текстур. Используйте форматы текстур, которые используют меньше битов на канал. Например, используйте 16-битный формат текстур, такой как RGB565, вместо 32-битного формата текстур, такого как ARGB. Для получения дополнительной информации см. следующее:
Дополнительные ресурсы
- Последние улучшения Android App Bundle и график появления новых приложений в Google Play
- Уменьшите размер APK в мгновенных играх для Android
- Суперсжатые текстуры, декодируемые графическим процессором (исследовательская статья)
