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

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

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

Рефакторинг в несколько функциональных модулей

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

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

Лучшие практики

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

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

Обновить ресурсы приложения

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

Уменьшить размер файла изображений

Вы можете значительно уменьшить общий размер изображений вашего приложения, используя формат файла WebP вместо PNG. Google Play Instant обеспечивает полную поддержку WebP, включая прозрачность и сжатие без потерь, поэтому качество изображения остается прежним.

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

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

Если ваше приложение поддерживает несколько языков, сократите как можно больше локализованных ресурсов. Этот шаг особенно полезно выполнить, если вы используете библиотеку совместимости приложений, например android.support.v7.appcompat . Эта библиотека включает сообщения на многих языках, некоторые из которых ваше приложение может не поддерживать.

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

Удалить лишние файлы

Ваше приложение может больше не использовать некоторые ресурсы, которые вы импортировали в свой проект. Чтобы помочь удалить эти ресурсы, в Android Studio есть проверка Lint для этой конкретной ситуации. Чтобы использовать инструмент, выполните следующие действия:

  1. Нажмите Control+Alt+Shift+I ( Command+Alt+Shift+I в Mac OS).
  2. В появившемся диалоговом окне введите "unused resources" .
  3. Выберите параметр «Неиспользуемые ресурсы» , чтобы начать процесс проверки использования ресурсов.

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

Удалить неиспользуемые библиотеки

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

  • Собственные библиотеки: библиотеки, содержащие собственный код, который ваше мгновенное приложение никогда не запускает.
  • Транзитивные зависимости: библиотеки, от которых зависят импортированные библиотеки вашего приложения.

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

Внешние библиотеки

Представление «Проект» Android Studio включает раздел «Внешние библиотеки» .

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

APK-анализатор

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

Определив, какие библиотеки не нужны вашему приложению, исключите их, добавив в файл сборки Gradle строки, подобные приведенным ниже:

<feature_module>/build.gradle

классный

dependencies {
    implementation('some-important-but-large-library') {
        exclude group: 'com.example.imgtools', module: 'native'
    }
}

Котлин

dependencies {
    implementation('some-important-but-large-library') {
        exclude(group = "com.example.imgtools", module = "native")
    }
}

Дополнительную информацию об уменьшении общего размера импорта зависимостей вашего приложения см. в руководстве Gradle по управлению зависимостями .

Внедрить облачную доставку активов

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