Функциональные модули позволяют отделить определенные функции и ресурсы от базового модуля вашего приложения и включить их в пакет приложения. Затем вы можете настроить параметры доставки, чтобы контролировать, когда и как устройства под управлением Android 5.0 (уровень API 21) или более поздней версии загружают функции вашего приложения.
Имейте в виду, что этот тип модульности требует больше усилий и, возможно, рефакторинга существующего кода вашего приложения, поэтому тщательно подумайте, какие из функций вашего приложения выиграют больше всего, если будут доступны пользователям по требованию.
Если вы хотите постепенно модулировать функции приложения, не меняя его поведение и не настраивая расширенные параметры доставки, вы можете сделать это, создав функциональные модули, настроенные для доставки во время установки. То есть вы можете модульно оформить функцию в виде функционального модуля, но не включать дополнительные параметры, чтобы функция была доступна, когда пользователь устанавливает ваше приложение.
Кроме того, функциональные модули, настроенные для доставки во время установки, могут быть удалены позже, если они больше не нужны. Для этого их необходимо настроить как съемные .
В этом разделе описывается, как создать функциональный модуль для доставки во время установки. Прежде чем начать, убедитесь, что вы используете Android Studio 3.5 или более позднюю версию и подключаемый модуль Android Gradle 3.5.0 или более позднюю версию.
Настройте новый модуль для доставки во время установки.
Самый простой способ создать новый функциональный модуль — использовать Android Studio 3.5 или более поздней версии. Поскольку функциональные модули имеют внутреннюю зависимость от базового модуля приложения, их можно добавлять только в существующие проекты приложений.
Чтобы добавить функциональный модуль в проект приложения с помощью Android Studio, выполните следующие действия:
- Если вы еще этого не сделали, откройте проект приложения в IDE.
- Выберите «Файл» > «Создать» > «Новый модуль» в строке меню.
- В диалоговом окне «Создать новый модуль» выберите «Модуль динамических функций» и нажмите «Далее» .
- В разделе «Настройка нового модуля» выполните следующие действия:
- Выберите базовый модуль приложения для вашего проекта приложения в раскрывающемся меню.
- Укажите имя модуля . IDE использует это имя для идентификации модуля как подпроекта Gradle в вашем файле настроек Gradle . Когда вы создаете пакет приложения, Gradle использует последний элемент имени подпроекта для внедрения атрибута
<manifest split>
в манифест функционального модуля . - Укажите имя пакета модуля. По умолчанию Android Studio предлагает имя пакета, которое сочетает в себе имя корневого пакета базового модуля и имя модуля, указанное на предыдущем шаге.
- Выберите минимальный уровень API , который должен поддерживать модуль. Это значение должно соответствовать значению базового модуля.
- Нажмите Далее .
В разделе «Параметры загрузки модуля» выполните следующие действия:
Укажите название модуля , используя до 50 символов. Базовый модуль вашего приложения должен включать заголовок модуля в виде строкового ресурса , который вы можете перевести. При создании модуля с помощью Android Studio среда IDE добавляет строковый ресурс в базовый модуль и вставляет следующую запись в манифест функционального модуля:
<dist:module ... dist:title="@string/feature_title"> </dist:module>
В раскрывающемся меню в разделе «Включение во время установки» выберите «Включить модуль во время установки» . Android Studio вставляет в манифест модуля следующее, чтобы отразить ваш выбор:
<dist:module ... > <dist:delivery> <dist:install-time /> </dist:delivery> </dist:module>
Если вы хотите узнать, как создать функциональный модуль, который можно будет загрузить после установки приложения, прочтите статью «Настройка доставки по требованию» .
Установите флажок рядом с Fusing , если вы хотите, чтобы этот модуль был доступен для устройств под управлением Android 4.4 (уровень API 20) и ниже и был включен в несколько APK-файлов. Это означает, что вы можете исключить его из устройств, которые не поддерживают загрузку и установку разделенных APK. Android Studio вставляет в манифест модуля следующее, чтобы отразить ваш выбор:
<dist:module ...> <dist:fusing dist:include="true | false" /> </dist:module>
Нажмите «Готово» .
После того, как Android Studio завершит создание вашего модуля, проверьте его содержимое самостоятельно на панели «Проект» (выберите «Вид» > «Окна инструментов» > «Проект» в строке меню). Код, ресурсы и организация по умолчанию должны быть аналогичны стандартному модулю приложения.
Сделать модуль времени установки съемным
Может быть полезно создать функциональные модули для доставки во время установки, которые можно будет удалить позже, если они больше не нужны. Например, чтобы уменьшить установленный размер вашего приложения, вы можете модулировать контент, необходимый для обучения или адаптации, а затем удалить функциональный модуль с помощью API Play Core после того, как пользователь будет настроен для использования вашего приложения.
Модули времени установки по умолчанию не являются съемными. Чтобы пометить модуль как съемный и разрешить его удаление, добавьте тег removable
и установите для него значение true
:
<dist:module ... >
<dist:delivery>
<dist:install-time>
<dist:removable dist:value="true"/>
</dist:install-time>
</dist:delivery>
</dist:module>