Installer et configurer le SDK Android
Le SDK Adapty comprend deux modules clés pour une intégration fluide dans votre application mobile :
- Core Adapty : ce SDK essentiel est requis pour qu’Adapty fonctionne correctement dans votre application.
- AdaptyUI : ce module est nécessaire si vous utilisez le Adapty Paywall Builder, un outil no-code convivial pour créer facilement des paywalls multiplateformes. AdaptyUI est automatiquement activé en même temps que le module principal.
Vous voulez voir un exemple concret d’intégration du SDK Adapty dans une application mobile ? Consultez notre application exemple, qui illustre la configuration complète, notamment l’affichage des paywalls, les achats et d’autres fonctionnalités de base.
Prérequis
Version SDK minimale requise : minSdkVersion 21
Adapty est compatible avec Google Play Billing Library jusqu’à la version 8.x. Par défaut, Adapty fonctionne avec Google Play Billing Library v7.0.0, mais si vous souhaitez forcer une version ultérieure, vous pouvez ajouter la dépendance manuellement.
L’installation du SDK correspond à l’étape 5 de la configuration d’Adapty. Avant que les achats fonctionnent dans votre app, vous devez également connecter votre app aux stores, puis créer des produits, un paywall et un placement dans l’Adapty Dashboard. Le guide de démarrage rapide décrit toutes les étapes requises.
Installer le SDK Adapty
Choisissez votre méthode de gestion des dépendances :
- Gradle standard : ajoutez les dépendances dans votre
build.gradleau niveau du module - Si votre projet utilise des fichiers
.gradle.kts, ajoutez les dépendances dans votrebuild.gradle.ktsau niveau du module - Si vous utilisez des catalogues de versions, ajoutez les dépendances dans votre fichier
libs.versions.toml, puis référencez-les dansbuild.gradle.kts
Si la dépendance ne se résout pas, vérifiez que vous avez bien mavenCentral() dans vos scripts Gradle.
Les instructions pour l’ajouter
Si votre projet n’a pas de dependencyResolutionManagement dans votre settings.gradle, ajoutez ce qui suit dans votre build.gradle de niveau racine, à la fin de la section repositories :
allprojects {
repositories {
...
mavenCentral()
}
}Sinon, ajoutez ce qui suit dans votre settings.gradle, dans la section repositories de dependencyResolutionManagement :
dependencyResolutionManagement {
...
repositories {
...
mavenCentral()
}
}Activer le module Adapty du SDK Adapty
Configuration de base
Activez le SDK Adapty dans le code de votre application.
Le SDK Adapty ne doit être activé qu’une seule fois dans votre application.
Pour obtenir votre Public SDK Key :
- Accédez à l’Adapty Dashboard et naviguez vers App settings → General.
- Dans la section Api keys, copiez la Public SDK Key (et NON la Secret Key).
- Remplacez
"YOUR_PUBLIC_SDK_KEY"dans le code.
Ou obtenez-la de façon programmatique via l’Adapty CLI :
npm install -g adapty
adapty auth login
adapty apps list
Ou, directement :
npx adapty auth login
adapty apps list
- Assurez-vous d’utiliser la Public SDK key pour l’initialisation d’Adapty — la Secret key ne doit être utilisée que pour l’API côté serveur.
- Les SDK keys sont propres à chaque application, donc si vous avez plusieurs applications, veillez à choisir la bonne.
Attendez que Adapty.activate soit terminé avant d’appeler toute autre méthode du SDK Adapty. Consultez Ordre d’appel dans le SDK Android pour la séquence complète.
Configurez maintenant les paywalls dans votre application :
- Si vous utilisez Adapty Paywall Builder, suivez le démarrage rapide avec Paywall Builder.
- Si vous créez votre propre interface de paywall, consultez le démarrage rapide pour les paywalls personnalisés.
Activer le module AdaptyUI du SDK Adapty
Si vous prévoyez d’utiliser le Paywall Builder, vous avez besoin du module AdaptyUI. Il est activé automatiquement lorsque vous activez le module principal ; vous n’avez rien d’autre à faire.
Configurer Proguard
Avant de lancer votre application en production, ajoutez -keep class com.adapty.** { *; } à votre configuration Proguard.
Configuration optionnelle
Journalisation
Configurer le système de journalisation
Adapty enregistre les erreurs et d’autres informations importantes pour vous aider à comprendre ce qui se passe. Les niveaux suivants sont disponibles :
| Niveau | Description |
|---|---|
AdaptyLogLevel.NONE | Rien ne sera journalisé. Valeur par défaut |
AdaptyLogLevel.ERROR | Seules les erreurs seront journalisées |
AdaptyLogLevel.WARN | Les erreurs et les messages du SDK qui ne provoquent pas d’erreurs critiques, mais méritent attention, seront journalisés. |
AdaptyLogLevel.INFO | Les erreurs, avertissements et divers messages d’information seront journalisés. |
AdaptyLogLevel.VERBOSE | Toute information supplémentaire pouvant être utile lors du débogage, comme les appels de fonctions, les requêtes API, etc., sera journalisée. |
Vous pouvez définir le niveau de journalisation dans votre application avant de configurer Adapty.
Rediriger les messages du système de journalisation
Si vous avez besoin pour une raison quelconque d’envoyer les messages d’Adapty vers votre système ou de les sauvegarder dans un fichier, vous pouvez remplacer le comportement par défaut :
Politiques de données
Adapty ne stocke pas les données personnelles de vos utilisateurs, sauf si vous les envoyez explicitement, mais vous pouvez mettre en œuvre des politiques de sécurité des données supplémentaires pour vous conformer aux directives du store ou du pays.
Désactiver la collecte et le partage de l’adresse IP
Lors de l’activation du module Adapty, définissez ipAddressCollectionDisabled à true pour désactiver la collecte et le partage de l’adresse IP de l’utilisateur. La valeur par défaut est false.
Utilisez ce paramètre pour renforcer la confidentialité des utilisateurs, vous conformer aux réglementations régionales sur la protection des données (comme le RGPD ou le CCPA), ou réduire la collecte de données inutiles lorsque les fonctionnalités basées sur l’IP ne sont pas requises pour votre application.
Désactiver la collecte et le partage de l’identifiant publicitaire (Ad ID)
Lors de l’activation du module Adapty, définissez adIdCollectionDisabled à true pour désactiver la collecte de l’identifiant publicitaire de l’utilisateur. La valeur par défaut est false.
Utilisez ce paramètre pour vous conformer aux politiques du Play Store, éviter de déclencher l’invite de permission pour l’identifiant publicitaire, ou si votre application ne nécessite pas d’attribution publicitaire ni d’analyses basées sur l’Ad ID.
Configurer le cache média pour AdaptyUI
Par défaut, AdaptyUI met en cache les médias (images et vidéos) pour améliorer les performances et réduire l’utilisation du réseau. Vous pouvez personnaliser les paramètres du cache en fournissant une configuration personnalisée.
Utilisez AdaptyUI.configureMediaCache pour remplacer la taille du cache et la durée de validité par défaut. C’est optionnel — si vous n’appelez pas cette méthode, les valeurs par défaut seront utilisées (100 Mo sur disque, 7 jours de validité).
Paramètres :
| Paramètre | Présence | Description |
|---|---|---|
| diskStorageSizeLimit | optionnel | Taille totale du cache sur disque en octets. Par défaut : 100 Mo. |
| diskCacheValidityTime | optionnel | Durée pendant laquelle les fichiers en cache sont considérés comme valides. Par défaut : 7 jours. |
Vous pouvez vider le cache média à l’exécution avec AdaptyUI.clearMediaCache(strategy), où strategy peut être CLEAR_ALL ou CLEAR_EXPIRED_ONLY.
Définir des identifiants de compte obscurcis
Google Play exige des identifiants de compte obscurcis dans certains cas d’usage pour renforcer la confidentialité et la sécurité des utilisateurs. Ces identifiants permettent à Google Play d’identifier les achats tout en gardant les informations des utilisateurs anonymes, ce qui est particulièrement important pour la prévention des fraudes et les analyses.
Vous devrez peut-être définir ces identifiants si votre application traite des données utilisateur sensibles ou si vous devez vous conformer à des réglementations de confidentialité spécifiques. Les identifiants obscurcis permettent à Google Play de suivre les achats sans exposer les identifiants réels des utilisateurs.
Exécuter Adapty dans un processus personnalisé
Par défaut, Adapty ne peut s’exécuter que dans le processus principal de votre application. Si votre application utilise plusieurs processus, n’initialisez Adapty qu’une seule fois ; sinon, un comportement inattendu peut survenir.
Si vous devez exécuter Adapty dans un processus différent, spécifiez-le dans votre configuration :
Si vous tentez d’activer Adapty dans un autre processus sans définir cette valeur, le SDK enregistrera un avertissement et ignorera l’activation.
Activer les niveaux d’accès locaux
Par défaut, les niveaux d’accès locaux sont désactivés sur Android. Pour les activer, définissez withLocalAccessLevelAllowed à true :
Résolution des problèmes
Règles de sauvegarde Android (configuration Auto Backup)
Certains SDKs (dont Adapty) embarquent leur propre configuration Android Auto Backup. Si vous utilisez plusieurs SDKs qui définissent des règles de sauvegarde, la fusion du manifeste Android peut échouer avec une erreur mentionnant android:fullBackupContent, android:dataExtractionRules, ou android:allowBackup.
Symptômes d’erreur typiques : 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)
Pour résoudre ce problème, vous devez :
-
Indiquer au fusionneur de manifeste d’utiliser les valeurs de votre application pour les attributs liés à la sauvegarde.
-
Fusionner les règles de sauvegarde d’Adapty et des autres SDKs dans un seul fichier XML (ou une paire de fichiers pour Android 12+).
1. Ajoutez l’espace de noms tools à votre manifeste
Si ce n’est pas déjà fait, ajoutez l’espace de noms tools à la balise racine <manifest> :
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.app">
...
</manifest>
2. Remplacez les attributs de sauvegarde dans <application>
Dans le AndroidManifest.xml de votre application, mettez à jour la balise <application> pour que votre application fournisse les valeurs finales et indique au fusionneur de manifeste de remplacer les valeurs des bibliothèques :
<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 un SDK définit également android:allowBackup, incluez-le dans tools:replace :
tools:replace="android:allowBackup,android:fullBackupContent,android:dataExtractionRules"
3. Créez des fichiers de règles de sauvegarde fusionnées
Créez des fichiers XML dans app/src/main/res/xml/ qui combinent les règles d’Adapty avec celles des autres SDKs. Android utilise différents formats de règles de sauvegarde selon la version du système, donc créer les deux fichiers garantit la compatibilité avec toutes les versions Android que votre application prend en charge.
Les exemples ci-dessous utilisent AppsFlyer comme SDK tiers d’exemple. Remplacez ou ajoutez des règles pour tout autre SDK que vous utilisez dans votre application.
Pour Android 12 et supérieur (utilise le nouveau format de règles d’extraction de données) :
<?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>
Pour Android 11 et inférieur (utilise l’ancien format de contenu de sauvegarde complète) :
<?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>
Avec cette configuration :
-
Les exclusions de sauvegarde d’Adapty (
AdaptySDKPrefs.xml) sont préservées. -
Les exclusions des autres SDKs (par exemple,
appsflyer-data) sont également appliquées. -
Le fusionneur de manifeste utilise la configuration de votre application et n’échoue plus sur les attributs de sauvegarde conflictuels.
Les achats échouent après le retour depuis une autre application
Si l’Activity qui démarre le flux d’achat utilise un launchMode non standard, Android peut la recréer ou la réutiliser de manière incorrecte lorsque l’utilisateur revient depuis Google Play, une application bancaire ou un navigateur. Cela peut entraîner la perte du résultat de l’achat ou son traitement comme annulé.
Pour que les achats fonctionnent correctement, utilisez uniquement les modes de lancement standard ou singleTop pour l’Activity qui démarre le flux d’achat, et évitez tout autre mode.
Dans votre AndroidManifest.xml, vérifiez que l’Activity qui démarre le flux d’achat est définie sur standard ou singleTop :
<activity
android:name=".MainActivity"
android:launchMode="standard" />