Instalar y configurar el SDK de Android
El SDK de Adapty incluye dos módulos clave para una integración sin fricciones en tu aplicación móvil:
- Core Adapty: Este SDK esencial es necesario para que Adapty funcione correctamente en tu app.
- AdaptyUI: Este módulo es necesario si utilizas el Adapty Paywall Builder, una herramienta visual sin código para crear paywalls multiplataforma fácilmente. AdaptyUI se activa automáticamente junto con el módulo principal.
¿Quieres ver un ejemplo real de cómo se integra el SDK de Adapty en una app móvil? Echa un vistazo a nuestra app de ejemplo, que muestra la configuración completa, incluyendo la visualización de paywalls, la realización de compras y otras funcionalidades básicas.
Requisitos
Requisito mínimo del SDK: minSdkVersion 21
Adapty es compatible con Google Play Billing Library hasta la versión 8.x. Por defecto, Adapty trabaja con Google Play Billing Library v.7.0.0, pero si quieres forzar una versión posterior, puedes añadir la dependencia manualmente aquí.
Instalar el SDK es el paso 5 de la configuración de Adapty. Para que las compras funcionen en tu app, también necesitas conectar tu app a los stores, y luego crear productos, un paywall y un placement en el Adapty Dashboard. La guía de inicio rápido explica todos los pasos necesarios.
Instalar el SDK de Adapty
Elige el método de configuración de dependencias:
- Gradle estándar: añade las dependencias en tu
build.gradlea nivel de módulo - Si tu proyecto usa archivos
.gradle.kts, añade las dependencias en tubuild.gradle.ktsa nivel de módulo - Si usas catálogos de versiones, añade las dependencias en tu archivo
libs.versions.tomly luego referéncialas enbuild.gradle.kts
Si la dependencia no se resuelve, asegúrate de tener mavenCentral() en tus scripts de Gradle.
Instrucciones para añadirlo
Si tu proyecto no tiene dependencyResolutionManagement en el archivo settings.gradle, añade lo siguiente a tu build.gradle de nivel superior al final de los repositorios:
allprojects {
repositories {
...
mavenCentral()
}
}De lo contrario, añade lo siguiente en settings.gradle en repositories de la sección dependencyResolutionManagement:
dependencyResolutionManagement {
...
repositories {
...
mavenCentral()
}
}Activar el módulo de Adapty del SDK
Configuración básica
Activa el SDK de Adapty en el código de tu aplicación.
El SDK de Adapty solo necesita activarse una vez en tu aplicación.
Para obtener tu Public SDK Key:
- Ve al Adapty Dashboard y navega a App settings → General.
- En la sección Api keys, copia la Public SDK Key (NO la Secret Key).
- Reemplaza
"YOUR_PUBLIC_SDK_KEY"en el código.
- Asegúrate de usar la Public SDK key para inicializar Adapty; la Secret key solo debe usarse para la API del servidor.
- Las SDK keys son únicas para cada app, así que si tienes varias apps asegúrate de elegir la correcta.
Espera a que Adapty.activate finalice antes de llamar a cualquier otro método del SDK. Consulta Orden de llamadas en el SDK de Android para ver la secuencia completa.
Ahora configura los paywalls en tu aplicación:
- Si usas Adapty Paywall Builder, sigue la guía de inicio rápido de Paywall Builder.
- Si construyes tu propia interfaz de paywall, consulta la guía de inicio rápido para paywalls personalizados.
Activar el módulo AdaptyUI del SDK de Adapty
Si tienes pensado usar Paywall Builder, necesitas el módulo AdaptyUI. Se activa automáticamente al activar el módulo principal; no tienes que hacer nada más.
Configurar Proguard
Antes de lanzar tu app en producción, añade -keep class com.adapty.** { *; } a tu configuración de Proguard.
Configuración opcional
Registro
Configura el sistema de registro
Adapty registra errores y otra información importante para ayudarte a entender qué está ocurriendo. Están disponibles los siguientes niveles:
| Nivel | Descripción |
|---|---|
AdaptyLogLevel.NONE | No se registrará nada. Valor predeterminado |
AdaptyLogLevel.ERROR | Solo se registrarán errores |
AdaptyLogLevel.WARN | Se registrarán errores y mensajes del SDK que no causan errores críticos, pero que conviene tener en cuenta. |
AdaptyLogLevel.INFO | Se registrarán errores, advertencias y diversos mensajes informativos. |
AdaptyLogLevel.VERBOSE | Se registrará cualquier información adicional que pueda ser útil durante la depuración, como llamadas a funciones, consultas a la API, etc. |
| Puedes configurar el nivel de log en tu app antes de configurar Adapty. |
Redirigir los mensajes del sistema de logging
Si por alguna razón necesitas enviar los mensajes de Adapty a tu propio sistema o guardarlos en un archivo, puedes sobrescribir el comportamiento predeterminado:
Políticas de datos
Adapty no almacena datos personales de tus usuarios a menos que los envíes explícitamente, pero puedes aplicar políticas adicionales de seguridad de datos para cumplir con las directrices de la store o del país.
Desactivar la recopilación y el uso compartido de direcciones IP
Al activar el módulo de Adapty, establece ipAddressCollectionDisabled en true para desactivar la recopilación y el uso compartido de la dirección IP del usuario. El valor predeterminado es false.
Usa este parámetro para proteger la privacidad de los usuarios, cumplir con normativas regionales de protección de datos (como GDPR o CCPA) o reducir la recopilación de datos innecesaria cuando las funciones basadas en IP no son necesarias para tu aplicación.
Deshabilitar la recopilación y el uso compartido del ID de publicidad (Ad ID)
Al activar el módulo de Adapty, establece adIdCollectionDisabled en true para deshabilitar la recopilación del ID de publicidad del usuario. El valor predeterminado es false.
Utiliza este parámetro para cumplir con las políticas de Play Store, evitar que aparezca el aviso de permiso de ID publicitario, o si tu app no requiere atribución publicitaria ni análisis basados en Ad ID.
Configurar la caché de medios para AdaptyUI
Por defecto, AdaptyUI almacena en caché los medios (como imágenes y vídeos) para mejorar el rendimiento y reducir el uso de red. Puedes personalizar la configuración de caché proporcionando una configuración personalizada.
Utiliza AdaptyUI.configureMediaCache para modificar el tamaño de caché y el período de validez predeterminados. Es opcional: si no llamas a este método, se usarán los valores por defecto (100 MB de tamaño en disco, 7 días de validez).
Parámetros:
| Parámetro | Presencia | Descripción |
|---|---|---|
| diskStorageSizeLimit | opcional | Tamaño total de la caché en disco en bytes. El valor predeterminado es 100 MB. |
| diskCacheValidityTime | opcional | Tiempo durante el cual los archivos en caché se consideran válidos. El valor predeterminado es 7 días. |
Puedes limpiar la caché de medios en tiempo de ejecución usando AdaptyUI.clearMediaCache(strategy), donde strategy puede ser CLEAR_ALL o CLEAR_EXPIRED_ONLY.
Establecer IDs de cuenta ofuscados
Google Play requiere IDs de cuenta ofuscados en ciertos casos de uso para mejorar la privacidad y la seguridad del usuario. Estos IDs ayudan a Google Play a identificar las compras manteniendo el anonimato de la información del usuario, lo cual es especialmente importante para la prevención del fraude y el análisis.
Es posible que necesites establecer estos IDs si tu aplicación maneja datos sensibles de usuarios o si debes cumplir con normativas de privacidad específicas. Los IDs ofuscados permiten a Google Play rastrear las compras sin exponer los identificadores reales de los usuarios.
Ejecutar Adapty en un proceso personalizado
Por defecto, Adapty solo puede ejecutarse en el proceso principal de tu aplicación. Si tu app utiliza múltiples procesos, inicializa Adapty una sola vez; de lo contrario, pueden producirse comportamientos inesperados.
Si necesitas ejecutar Adapty en un proceso diferente, especifícalo en tu configuración:
Si intentas activar Adapty en otro proceso sin establecer este valor, el SDK registrará una advertencia y omitirá la activación.
Habilitar niveles de acceso locales
De forma predeterminada, los niveles de acceso locales están deshabilitados en Android. Para habilitarlos, establece withLocalAccessLevelAllowed en true:
Solución de problemas
Reglas de copia de seguridad en Android (configuración de Auto Backup)
Algunos SDKs (incluido Adapty) incluyen su propia configuración de Android Auto Backup. Si utilizas varios SDKs que definen reglas de copia de seguridad, el fusionador de manifiestos de Android puede fallar con un error relacionado con android:fullBackupContent, android:dataExtractionRules o android:allowBackup.
Síntomas habituales del error: 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)
Para resolver esto, necesitas:
-
Indicar al fusionador de manifiestos que use los valores de tu aplicación para los atributos relacionados con la copia de seguridad.
-
Fusionar las reglas de copia de seguridad de Adapty y otros SDKs en un único archivo XML (o un par de archivos para Android 12+).
1. Añade el espacio de nombres tools a tu manifiesto
Si aún no está presente, añade el espacio de nombres tools a la etiqueta raíz <manifest>:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.app">
...
</manifest>
2. Sobreescribe los atributos de copia de seguridad en <application>
En el archivo AndroidManifest.xml de tu app, actualiza la etiqueta <application> para que tu app proporcione los valores finales e indique al fusionador de manifiestos que reemplace los valores de la biblioteca:
<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>
Si algún SDK también establece android:allowBackup, inclúyelo en tools:replace:
tools:replace="android:allowBackup,android:fullBackupContent,android:dataExtractionRules"
3. Crear archivos de reglas de copia de seguridad combinados
Crea archivos XML en app/src/main/res/xml/ que combinen las reglas de Adapty con las reglas de otros SDKs. Android utiliza distintos formatos de reglas de copia de seguridad según la versión del SO, por lo que crear ambos archivos garantiza la compatibilidad con todas las versiones de Android que admite tu app.
Los ejemplos a continuación muestran AppsFlyer como SDK de terceros de muestra. Reemplaza o añade reglas para cualquier otro SDK que estés utilizando en tu app.
Para Android 12 y superior (usa el nuevo formato de reglas de extracción de datos):
<?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>
Para Android 11 y versiones anteriores (usa el formato heredado de copia de seguridad completa):
<?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>
Con esta configuración:
-
Las exclusiones de copia de seguridad de Adapty (
AdaptySDKPrefs.xml) se conservan. -
Las exclusiones de otros SDKs (por ejemplo,
appsflyer-data) también se aplican. -
El combinador de manifiestos usa la configuración de tu app y ya no falla con atributos de copia de seguridad en conflicto.
Las compras fallan al volver desde otra app
Si la Activity que inicia el flujo de compra usa un launchMode distinto al predeterminado, Android puede recrearla o reutilizarla incorrectamente cuando el usuario vuelve desde Google Play, una app bancaria o un navegador. Esto puede provocar que el resultado de la compra se pierda o se trate como cancelado.
Para que las compras funcionen correctamente, usa únicamente los modos de lanzamiento standard o singleTop en la Activity que inicia el flujo de compra, y evita cualquier otro modo.
En tu AndroidManifest.xml, asegúrate de que la Activity que inicia el flujo de compra esté configurada como standard o singleTop:
<activity
android:name=".MainActivity"
android:launchMode="standard" />