Установка и настройка Android SDK
Adapty SDK включает два ключевых модуля для интеграции в ваше мобильное приложение:
- Core Adapty: основной SDK, необходимый для работы Adapty в вашем приложении.
- AdaptyUI: этот модуль нужен, если вы используете Adapty Paywall Builder — удобный no-code инструмент для создания кросс-платформенных пейволов. AdaptyUI активируется автоматически вместе с основным модулем.
Хотите увидеть реальный пример интеграции Adapty SDK в мобильное приложение? Посмотрите наш пример приложения, который демонстрирует полную настройку, включая отображение пейволов, совершение покупок и другие базовые функции.
Требования
Минимальная версия SDK: minSdkVersion 21
Adapty совместим с Google Play Billing Library версий до 8.x включительно. По умолчанию Adapty работает с Google Play Billing Library v.7.0.0, но если вы хотите принудительно использовать более позднюю версию, добавьте зависимость вручную.
Установка SDK — это шаг 5 настройки Adapty. Прежде чем покупки заработают в вашем приложении, вам также нужно подключить приложение к сторам, а затем создать продукты, пейвол и плейсмент в дашборде Adapty. Гайд по быстрому старту описывает все необходимые шаги.
Установка Adapty SDK
Выберите способ подключения зависимостей:
- Стандартный Gradle: добавьте зависимости в module-level
build.gradle - Если в проекте используются файлы
.gradle.kts, добавьте зависимости в module-levelbuild.gradle.kts - Если вы используете version catalogs, добавьте зависимости в файл
libs.versions.toml, а затем сошлитесь на них вbuild.gradle.kts
Если зависимость не разрешается, убедитесь, что в ваших Gradle-скриптах есть mavenCentral().
Инструкция по добавлению
Если в вашем settings.gradle нет dependencyResolutionManagement, добавьте следующее в корневой build.gradle в конец блока repositories:
allprojects {
repositories {
...
mavenCentral()
}
}В противном случае добавьте следующее в settings.gradle в секцию repositories блока dependencyResolutionManagement:
dependencyResolutionManagement {
...
repositories {
...
mavenCentral()
}
}Активация модуля Adapty SDK
Базовая настройка
Активируйте Adapty SDK в коде вашего приложения.
Adapty SDK нужно активировать только один раз в приложении.
Чтобы получить Public SDK Key:
- Откройте дашборд Adapty и перейдите в App settings → General.
- В разделе Api keys скопируйте Public SDK Key (не Secret Key).
- Замените
"YOUR_PUBLIC_SDK_KEY"в коде на скопированный ключ.
- Используйте Public SDK key для инициализации Adapty. Secret key предназначен только для серверного API.
- SDK keys уникальны для каждого приложения, поэтому при наличии нескольких приложений убедитесь, что выбрали правильный ключ.
Дождитесь завершения Adapty.activate, прежде чем вызывать любые другие методы SDK. Полная последовательность описана в Порядок вызовов в Android SDK.
Теперь настройте пейволы в приложении:
- Если вы используете Adapty Paywall Builder, следуйте быстрому старту для Paywall Builder.
- Если вы строите собственный UI пейвола, смотрите быстрый старт для кастомных пейволов.
Активация модуля AdaptyUI Adapty SDK
Если вы планируете использовать Paywall Builder, вам нужен модуль AdaptyUI. Он активируется автоматически при активации основного модуля — никаких дополнительных действий не требуется.
Настройка Proguard
Перед выпуском приложения в продакшн добавьте -keep class com.adapty.** { *; } в вашу конфигурацию Proguard.
Дополнительная настройка
Логирование
Настройка системы логирования
Adapty записывает ошибки и другую важную информацию, чтобы вы понимали, что происходит. Доступны следующие уровни логирования:
| Уровень | Описание |
|---|---|
AdaptyLogLevel.NONE | Ничего не логируется. Значение по умолчанию |
AdaptyLogLevel.ERROR | Логируются только ошибки |
AdaptyLogLevel.WARN | Логируются ошибки и сообщения от SDK, которые не вызывают критических ошибок, но заслуживают внимания. |
AdaptyLogLevel.INFO | Логируются ошибки, предупреждения и различные информационные сообщения. |
AdaptyLogLevel.VERBOSE | Логируется любая дополнительная информация, которая может быть полезна при отладке: вызовы функций, запросы к API и т. д. |
| Вы можете задать уровень логирования в приложении до настройки Adapty. |
Перенаправление сообщений системы логирования
Если вам по какой-то причине нужно отправлять сообщения от Adapty в вашу систему или сохранять их в файл, вы можете переопределить поведение по умолчанию:
Политика обработки данных
Adapty не хранит персональные данные ваших пользователей, если только вы не передаёте их явно. Тем не менее вы можете настроить дополнительные политики безопасности данных для соответствия требованиям сторов или законодательства отдельных стран.
Отключение сбора и передачи IP-адресов
При активации модуля Adapty установите ipAddressCollectionDisabled в значение true, чтобы отключить сбор и передачу IP-адресов пользователей. Значение по умолчанию — false.
Используйте этот параметр для защиты конфиденциальности пользователей, соблюдения региональных требований по защите данных (например, GDPR или CCPA), а также для сокращения сбора лишних данных, если функции на основе IP-адреса не нужны вашему приложению.
Отключение сбора и передачи рекламного идентификатора (Ad ID)
При активации модуля Adapty установите adIdCollectionDisabled в значение true, чтобы отключить сбор рекламного идентификатора пользователя. Значение по умолчанию — false.
Используйте этот параметр, чтобы соответствовать требованиям Play Store, избежать запроса разрешения на доступ к рекламному идентификатору или если ваше приложение не требует атрибуции рекламы или аналитики на основе Ad ID.
Настройка конфигурации медиакеша для AdaptyUI
По умолчанию AdaptyUI кеширует медиафайлы (изображения и видео) для повышения производительности и снижения нагрузки на сеть. Вы можете настроить параметры кеша, передав собственную конфигурацию.
Используйте AdaptyUI.configureMediaCache, чтобы переопределить размер кэша и срок его хранения. Это необязательно — если не вызывать этот метод, будут применены значения по умолчанию (100 МБ на диске, срок хранения 7 дней).
Параметры:
| Параметр | Наличие | Описание |
|---|---|---|
| diskStorageSizeLimit | optional | Общий размер кэша на диске в байтах. По умолчанию — 100 МБ. |
| diskCacheValidityTime | optional | Как долго кэшированные файлы считаются актуальными. По умолчанию — 7 дней. |
Вы можете очистить медиакеш во время выполнения с помощью AdaptyUI.clearMediaCache(strategy), где strategy может быть CLEAR_ALL или CLEAR_EXPIRED_ONLY.
Установите скрытые идентификаторы аккаунтов
Google Play требует скрытые идентификаторы аккаунтов в ряде сценариев — для защиты конфиденциальности и безопасности пользователей. Эти идентификаторы помогают Google Play отслеживать покупки, не раскрывая личные данные пользователей, что особенно важно для предотвращения мошенничества и аналитики.
Устанавливать такие идентификаторы нужно, если приложение работает с чувствительными данными пользователей или должно соответствовать определённым требованиям по защите персональных данных. Скрытые идентификаторы позволяют Google Play отслеживать покупки, не раскрывая реальные идентификаторы пользователей.
Запуск Adapty в отдельном процессе
По умолчанию Adapty может работать только в главном процессе вашего приложения. Если приложение использует несколько процессов, инициализируйте Adapty только один раз — иначе возможно непредсказуемое поведение.
Если вам нужно запустить Adapty в другом процессе, укажите его в конфигурации:
Если вы попытаетесь активировать Adapty в другом процессе, не задав это значение, SDK выведет предупреждение и пропустит активацию.
Включение локальных уровней доступа
По умолчанию локальные уровни доступа на Android отключены. Чтобы включить их, установите withLocalAccessLevelAllowed в true:
Устранение неполадок
Правила резервного копирования Android (конфигурация Auto Backup)
Некоторые SDK (включая Adapty) поставляются со своей конфигурацией Android Auto Backup. Если вы используете несколько SDK, каждый из которых определяет правила резервного копирования, слияние Android-манифеста может завершиться ошибкой с упоминанием android:fullBackupContent, android:dataExtractionRules или android:allowBackup.
Типичные симптомы ошибки: Manifest merger failed: Attribute application@dataExtractionRules value=(@xml/sample_data_extraction_rules) is also present at [com.other.sdk:library:1.0.0] value=(@xml/other_sdk_data_extraction_rules)
Чтобы решить эту проблему, нужно:
-
Указать механизму слияния манифестов использовать значения вашего приложения для атрибутов, связанных с резервным копированием.
-
Объединить правила резервного копирования из Adapty и других SDK в один XML-файл (или пару файлов для Android 12+).
1. Добавьте пространство имён tools в манифест
Если его ещё нет, добавьте пространство имён tools в корневой тег <manifest>:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.app">
...
</manifest>
2. Переопределите атрибуты резервного копирования в <application>
В файле AndroidManifest.xml вашего приложения обновите тег <application>, чтобы приложение предоставляло финальные значения и указывало слияльщику манифеста заменять значения библиотеки:
<application
android:name=".App"
android:allowBackup="true"
android:fullBackupContent="@xml/sample_backup_rules"
android:dataExtractionRules="@xml/sample_data_extraction_rules"
tools:replace="android:fullBackupContent,android:dataExtractionRules">
...
</application>
Если какой-либо SDK также задаёт android:allowBackup, добавьте его в tools:replace:
tools:replace="android:allowBackup,android:fullBackupContent,android:dataExtractionRules"
3. Создайте объединённые файлы правил резервного копирования
Создайте XML-файлы в app/src/main/res/xml/, объединив правила Adapty с правилами других SDK. Android использует разные форматы правил резервного копирования в зависимости от версии ОС, поэтому создание обоих файлов обеспечивает совместимость со всеми версиями Android, которые поддерживает ваше приложение.
В примерах ниже в качестве стороннего SDK используется AppsFlyer. Замените или добавьте правила для других SDK, которые вы используете в своём приложении.
Для Android 12 и выше (использует новый формат правил извлечения данных):
<?xml version="1.0" encoding="utf-8"?>
<data-extraction-rules>
<cloud-backup>
<exclude domain="sharedpref" path="appsflyer-data"/>
<exclude domain="sharedpref" path="appsflyer-purchase-data"/>
<exclude domain="database" path="afpurchases.db"/>
<exclude domain="sharedpref" path="AdaptySDKPrefs.xml"/>
</cloud-backup>
<device-transfer>
<exclude domain="sharedpref" path="appsflyer-data"/>
<exclude domain="sharedpref" path="appsflyer-purchase-data"/>
<exclude domain="database" path="afpurchases.db"/>
<exclude domain="sharedpref" path="AdaptySDKPrefs.xml"/>
</device-transfer>
</data-extraction-rules>
Для Android 11 и ниже (используется устаревший формат резервного копирования):
<?xml version="1.0" encoding="utf-8"?>
<full-backup-content>
<exclude domain="sharedpref" path="appsflyer-data"/>
<exclude domain="sharedpref" path="AdaptySDKPrefs.xml"/>
</full-backup-content>
С такой настройкой:
-
Исключения Adapty из резервного копирования (
AdaptySDKPrefs.xml) сохраняются. -
Исключения других SDK (например,
appsflyer-data) также применяются. -
Манифест-мержер использует конфигурацию вашего приложения и больше не падает из-за конфликтующих атрибутов резервного копирования.
Покупки не проходят после возврата из другого приложения
Если Activity, из которой запускается процесс покупки, использует нестандартный launchMode, Android может некорректно пересоздать или переиспользовать её, когда пользователь возвращается из Google Play, банковского приложения или браузера. В результате результат покупки может быть потерян или воспринят как отмена.
Чтобы покупки работали корректно, используйте только режимы запуска standard или singleTop для Activity, из которой запускается процесс покупки, и избегайте любых других режимов.
В вашем AndroidManifest.xml убедитесь, что Activity, запускающая процесс покупки, имеет режим запуска standard или singleTop:
<activity
android:name=".MainActivity"
android:launchMode="standard" />