Установка и настройка Android SDK
SDK Adapty включает два ключевых модуля для бесшовной интеграции в ваше мобильное приложение:
- 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: добавьте зависимости в
build.gradleуровня модуля - Если в вашем проекте используются файлы
.gradle.kts, добавьте зависимости вbuild.gradle.ktsуровня модуля - Если вы используете каталоги версий, добавьте зависимости в файл
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 Android SDK 4.0 находится в статусе pre-release. Gradle не выбирает pre-release версии через динамические диапазоны версий (например, + или latest.release), поэтому необходимо указать точную версию. Укажите версию adapty-bom для pre-release 4.0 — например, io.adapty:adapty-bom:4.0.0-beta.1 или adaptyBom = "4.0.0-beta.1" в libs.versions.toml. BOM автоматически подберёт подходящие версии android-sdk и android-ui. См. Миграция Adapty Android SDK на v4.
Активация модуля Adapty SDK
Базовая настройка
Активируйте Adapty SDK в коде вашего приложения.
Adapty SDK достаточно активировать один раз в приложении.
Чтобы получить Public SDK Key:
- Откройте дашборд Adapty и перейдите в App settings → General.
- В разделе Api keys скопируйте Public SDK Key (НЕ Secret Key).
- Замените
"YOUR_PUBLIC_SDK_KEY"в коде.
Или получите его программно с помощью Adapty CLI:
npm install -g adapty
adapty auth login
adapty apps list
Или напрямую:
npx adapty auth login
adapty apps list
- Убедитесь, что для инициализации Adapty вы используете Public SDK key — Secret key предназначен только для серверного API.
- SDK-ключи уникальны для каждого приложения, поэтому если у вас несколько приложений, выберите нужный ключ.
Дождитесь завершения Adapty.activate перед вызовом любых других методов SDK. Полная последовательность описана в разделе Порядок вызовов в Android SDK.
Теперь настройте пейволы в своём приложении:
- Если вы используете Adapty Paywall Builder, следуйте быстрому старту с Paywall Builder.
- Если вы создаёте собственный интерфейс пейвола, см. быстрый старт для кастомных пейволов.
Активация модуля 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 | необязательный | Общий размер кэша на диске в байтах. По умолчанию — 100 МБ. |
| diskCacheValidityTime | необязательный | Как долго кэшированные файлы считаются актуальными. По умолчанию — 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)
Чтобы решить эту проблему, нужно:
-
Указать merger-манифеста использовать значения вашего приложения для атрибутов, связанных с резервным копированием.
-
Объединить правила резервного копирования из 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 и ниже (использует устаревший формат full backup content):
<?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, банковского приложения или браузера. Из-за этого результат покупки может быть потерян или расценён как отменённый.
Чтобы покупки работали корректно, используйте для Activity, запускающего флоу покупки, только режимы standard или singleTop и избегайте других режимов.
В файле AndroidManifest.xml убедитесь, что Activity, запускающая флоу покупки, имеет режим запуска standard или singleTop:
<activity
android:name=".MainActivity"
android:launchMode="standard" />