| Ключевые понятия | Настройте среду разработки | Создайте RE SDK | Используйте RE SDK | Тестирование и сборка для распространения |
| Ключевые понятия | Настройте среду разработки | Создайте RE SDK | Используйте RE SDK | Тестирование и сборка для распространения |
Ключевые понятия
В этом разделе описывается архитектура среды выполнения SDK, порядок установки SDK с поддержкой среды выполнения, обратная совместимость и способы миграции существующих SDK на среду выполнения SDK.
Глоссарий
- SDK с поддержкой среды выполнения (RE SDK) : SDK, предназначенный для работы в среде выполнения SDK и взаимодействия с приложением посредством межпроцессного взаимодействия (IPC).
- SDK, поддерживающий среду выполнения (RA SDK) : SDK, не поддерживающий среду выполнения, статически связанный с приложением, который может содержать как существующий код вашего SDK, так и новый код для вызова функций SDK, поддерживающего среду выполнения.
- Иногда это также называют статически связанным или статическим SDK .
- Shim : Библиотека Jetpack, которая помогает абстрагировать взаимодействие между процессами или межпроцессное взаимодействие (IPC) и поддерживать единый интерфейс между приложением и SDK.
Архитектура среды выполнения SDK
В среде выполнения SDK используется клиент-серверная модель.
Основное отличие заключается в том, что «клиент» (приложение) и «сервер» (SDK с поддержкой среды выполнения) работают на одном устройстве, и взаимодействие происходит между процессами.
Для решения этих задач мы разработали следующие библиотеки и инструменты Jetpack , упрощающие интеграцию приложений с SDK в среду выполнения SDK:
- Библиотека- оболочка (или shim- библиотека) помогает абстрагировать взаимодействие между процессами или межпроцессное взаимодействие (IPC). Она также помогает поддерживать единый интерфейс между приложением и SDK.
- Библиотека обратной совместимости: Эта библиотека обеспечивает обратную совместимость, гарантируя совместимость вашего SDK независимо от того, доступна ли среда выполнения SDK или нет.
- Библиотека пользовательского интерфейса: Мы также предоставляем библиотеки для обработки удаленного отображения, например, для получения пользовательского интерфейса из SDK с поддержкой среды выполнения или для изменения размера и перестановки представлений.

Изменения в процессе установки
При сборке SDK с поддержкой среды выполнения в Android Studio или других инструментах вы создаете Android SDK Bundle (ASB) — формат публикации для SDK с поддержкой среды выполнения.
bundletool обрабатывает ASB для создания APK-файла для вашего SDK с поддержкой среды выполнения: этот отдельный APK-файл содержит код вашего SDK, но не код приложения.
В файле манифеста приложения указывается зависимость от имени и версии вашего SDK с поддержкой среды выполнения, и эта зависимость разрешается приложением-установщиком.
После того, как установщик получит APK-файл SDK, начнётся установка с установки APK-файла SDK. В случае успеха будет установлена APK-версия приложения.
Процесс установки отличается, если приложение установлено на Android 13 и более ранних версиях, а также на устройствах, не поддерживающих среду выполнения SDK. В этом случае магазин устанавливает один APK-файл, содержащий как ваш SDK с поддержкой среды выполнения, так и код приложения. Подробнее см. в разделе «Распространение» .
Всякий раз, когда приложение в рабочей среде зависит от этого SDK, магазин приложений создает соответствующий APK-файл SDK из этого ASB и устанавливает его.
Обратная совместимость
Поскольку среда выполнения SDK была представлена в Android 14, нам необходимо было обеспечить поддержку более ранних версий без создания дополнительных затрат для разработчиков SDK или приложений.
Для обеспечения обратной совместимости с Android 13 и более ранними версиями мы внедрили библиотеку Jetpack, которая позволяет беспрепятственно запускать ваш SDK с поддержкой среды выполнения независимо от того, поддерживает ли устройство среду выполнения SDK.
Следуя этому руководству, вы обеспечите обратную совместимость вашего SDK с поддержкой среды выполнения по умолчанию, и вам не потребуется предпринимать никаких дополнительных действий.
Мы подробно описываем действия, связанные с обратной совместимостью, на соответствующих этапах, но в целом следует убедиться, что вы правильно указали зависимости и используете классы *Compat везде, где это применимо.
Перенести существующие SDK
Если у вас есть существующий SDK, который вы хотели бы перенести в среду выполнения, вам не нужно переписывать весь код сразу. Вместо этого вы можете постепенно переносить существующую логику SDK в новый SDK с поддержкой среды выполнения.
Для миграции существующего SDK в среду выполнения SDK мы рекомендуем следующие три этапа:
- Создание SDK с поддержкой среды выполнения на переходный период , а также соответствующего SDK с поддержкой среды выполнения на более позднем этапе. Это позволит вам постепенно переносить бизнес-логику из существующего SDK и предоставит платформу для A/B-тестирования.
- Перенос всей существующей бизнес-логики SDK в стабильное состояние вместе с соответствующим упрощенным SDK, учитывающим среду выполнения, для упрощения миграции приложений.
- Поддержка заинтересованных приложений с полной миграцией для прямого использования вашего SDK с поддержкой среды выполнения без использования упрощенного SDK, учитывающего среду выполнения.
Этап 1 — Переходный период: SDK с расширенными возможностями обработки данных во время выполнения.
Для начала можно оставить часть бизнес-логики в SDK, поддерживающем работу во время выполнения. Мы называем это «толстым SDK, поддерживающим работу во время выполнения» или «внутриприкладной оболочкой».
Такой подход позволяет сохранить все или часть возможностей вашего SDK в статической библиотеке приложения, наряду с новым SDK, поддерживающим среду выполнения.
Это позволяет постепенно переносить ваши сценарии использования в SDK с поддержкой среды выполнения, а также тестировать ваш SDK с поддержкой среды выполнения в сравнении с существующим SDK.
На этом этапе разработчику приложения не нужно ничего менять в способе использования вашего SDK, поскольку необходимую работу по использованию вашего SDK выполняет статическая библиотека приложения (SDK, поддерживающий среду выполнения).

Этап 2 — Стационарное состояние: Тонкий SDK, учитывающий особенности среды выполнения.
В отличие от «толстого» SDK, учитывающего особенности среды выполнения, «тонкая оболочка», или «тонкий SDK, учитывающий особенности среды выполнения» (thin RA_SDK), содержит только код трансляции API и код вызова SDK, поддерживающий особенности среды выполнения, в вашей статически связанной библиотеке SDK.
На этом этапе вы должны были перенести весь код SDK из статической библиотеки приложений в SDK с поддержкой среды выполнения.
Разработчикам приложений не нужно вносить никаких изменений по сравнению с первым этапом, поскольку ваш встроенный в приложение тонкий SDK, поддерживающий среду выполнения, обрабатывает вызовы к вашему SDK с поддержкой среды выполнения внутри среды выполнения SDK.

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

Шаг 2 : Настройка среды разработки