SDK
Первый взгляд на «песочницу конфиденциальности» Google и ее влияние на SDK
Я протестировал предварительную версию SDK Runtime — в этой статье я делюсь тем, что узнал, а также некоторыми мыслями о том, что нам следует ожидать.
Ранее в этом году Google анонсировал свою песочницу конфиденциальности для Android, целью которой является создание технологии, которая фундаментальным образом улучшает конфиденциальность пользователей, поддерживая при этом критически важные варианты использования экосистемы.
Это было сделано в рамках более широкой инициативы, которую Google начал несколько лет назад в отношении Chrome. Эта инициатива окажет глубокое влияние на индустрию мобильной рекламы в целом. Компания заявила, что API-интерфейсы Privacy Sandbox будут создаваться в течение нескольких лет. В течении них компания будет выпускать предварительные версии для разработчиков, чтобы участники экосистемы Android могли узнать, как это повлияет на их продукты, и предоставить Google отзывы.
Первая предварительная версия для разработчиков, выпущенная пару недель назад, дает представление о том, как будут работать два из четырех компонентов в конструкции песочницы конфиденциальности — SDK Runtime и Topics API.
Я протестировал предварительную версию SDK Runtime — в этой статье я делюсь тем, что узнал, а также некоторыми мыслями о том, что нам следует ожидать. Конечно, поскольку это первая предварительная версия для разработчиков, все может измениться по мере того, как Google будет развивать инициативу.
Немного предыстории SDK Runtime
Исторически Android создавался как открытая платформа, позволяющая разработчикам создавать приложения, которые делают на устройстве практически все, что они хотят. Хотя этот подход создал множество возможностей, он также вызвал множество проблем с безопасностью, конфиденциальностью и взаимодействием с пользователем. По мере взросления платформы Google ограничивал все больше и больше возможностей приложений с помощью устаревания API, защиты разрешений и различных политик. Однако SDK, размещенные в APK, по-прежнему имеют множество возможностей, которые не являются критически важными для поддержки их основных вариантов использования. Например, если приложению предоставлено пользователем разрешение на доступ к списку контактов, все SDK, размещенные в этом приложении, будут иметь такую же возможность.
Предложения по системному дизайну SDK Runtime, который изначально предназначался для использования рекламными платформами, направлены на сокращение скрытого доступа к пользовательским данным и позволяет SDK делать только то, что им нужно — ни больше, ни меньше. Такие SDK называются SDK с поддержкой среды выполнения (Runtime Enabled SDK, RE SDK).
Имея это в виду, я настроил рабочую тестовую среду, чтобы поиграть с этой новой технологией.
Запуск тестового проекта
Google предоставил отличные руководства по настройке среды разработки и загрузке образа устройства или эмулятора. Важно отметить, что эта предварительная версия Privacy Sandbox Developer Preview не является частью Android 13 Beta 1, выпущенной 26 апреля, поэтому я настроил свой эмулятор на использование уровня API «TiramisuPrivacySandbox» (а не «Tiramisu»).
Кроме того, Google предоставил примеры проектов, которые работают «из коробки». Я импортировал проект PrivacySandboxKotlin в Android Studio и воспользовался файлом README.md, в котором есть пошаговое руководство по правильному запуску проекта. Я внимательно следовал инструкциям, поскольку для успешной установки приложений необходимо выполнить определенные шаги.
Например, приложение RE SDK — это headless приложение (приложение, у которого нет иконки лаунчера), и для его успешной установки необходимо настроить установку без запуска Activity.
Итак, я выполнил шаги, и вуаля! У нас есть рабочее приложение, которое загружает RE SDK и представляет WebView, которым управляет этот RE SDK.
Затем я начал экспериментировать и узнал несколько интересных вещей.
Так как же работает RE SDK?
Общая идея песочницы среды выполнения SDK с технической точки зрения заключается в том, чтобы RE SDK и их хост-приложения выполнялись в отдельных процессах. Таким образом, эти RE SDK работают отдельно с ограниченными ресурсами, разрешениями и возможностями. То, как это делается, довольно интересно. Есть системное приложение с именем пакета «com.google.android.sdksandbox». Это приложение запускает процесс, когда приложение загружает RE SDK:
Если приложение использует два RE SDK, оба этих SDK загружаются в один и тот же процесс:
Если другое приложение использует тот же RE SDK, приложение com.google.android.sdksandbox загружает этот SDK в новом процессе:
Стоит упомянуть:
- Когда я внес изменение в RE SDK #1, оно вступило в силу как в приложении #1, так и в приложении #2 без необходимости перестраивать эти приложения. Представьте как это работает со многими приложениями, которые используют один и тот же SDK.
- Когда я внес изменения в RE SDK #1 во время работы приложения #1, приложение #1 было уничтожено, что логично, поскольку это приложение зависит от этого SDK. Я предполагаю, что магазины приложений Android будут нести ответственность за то, чтобы избежать ситуации, когда они обновляют SDK, который используется в настоящее время.
- Хотя RE SDK представляют собой APK-файлы, установленные также, как и любое другое приложение, их нельзя найти в разделе Настройки > Приложения на устройстве. Я нашел следующий путь в логах, где, как я предполагаю, установлены RE SDK:
/data/app/~~CvlPF2J8-S7qvAK2MIRJFQ==/com.example.privacysandbox.provider-PKSpCMsAFYF7Jsiv6nEIbw==/base.dm
Однако, поскольку эмулятор, предоставленный Google с этой предварительной версией, не имеет root-прав, я не могу перейти в эту папку и проверить ее.
Финальные мысли
Способ работы RE SDK действительно инновационный. Он решает многие проблемы, представляя совершенно новый способ работы с SDK на Android, поэтому при чтении предложений по дизайну и работе с первой предварительной версией на ум приходит много идей и вопросов.
Я упомяну некоторые, которые я нахожу интересными:
- В своем руководстве по настройке тестового устройства Google пишет: «Песочница конфиденциальности на образе системы Android требует определения устройства с помощью Play Store…». Однако «песочница конфиденциальности» — это функция AOSP, поэтому пока неясно, зачем потребуются Google Play или сервисы Google Play. Более того, я отключил на эмуляторе и Google Play, и Google Play Services, и проект SDK Runtime отлично работал. Это может быть просто то, как Google настроил все для работы developer preview версии, и будет интересно увидеть изменения в будущих релизах.
- Тот факт, что RE SDK разрабатываются и создаются как приложения, интересен с трех разных точек зрения:
- Разработчики RE SDK (на данный момент рекламные платформы) теперь имеют новый способ создания своих артефактов и управления ими. Возможно, можно будет отправлять небольшие обновления, не беспокоя разработчиков приложений.
- Разработчики приложений, использующие RE SDK, больше не используют зависимости Gradle. Вместо этого они объявляют SDK в файле AndroidManifest.xml своего приложения.
- Магазин приложений еще до скачивания приложения должен будет убедиться, что RE SDK, необходимые для продукта, установлены в целевой системе (в противном случае установка завершится ошибкой). Будет интересно посмотреть, какие инструменты Google предоставит, чтобы помочь всем сторонам адаптироваться к этому совершенно новому способу интеграции с SDK на платформе Android.
- Тот факт, что RE SDK может быть установлен один раз и повторно использоваться всеми интегрированными с ним приложениями, невероятно эффективен, поскольку количество SDK незначительно по сравнению с количеством приложений, которые их используют. Однако остается неясным, как это будет управляться магазинами приложений для Android. Например, сможет ли приложение, установленное через магазин Samsung Galaxy, использовать RE SDK, установленное через магазин Google Play? Будет ли у рекламных платформ централизованное место для управления своими RE SDK, или им нужно будет управлять своими SDK в разных магазинах приложений для Android?
Такие изменения, как RE SDK, важны и демонстрируют зрелость экосистемы Android. Их сложно реализовать, и будет очень интересно посмотреть, как Google будет развивать платформу вместе со всей экосистемой.