安装和配置 Android SDK

Adapty SDK 包含两个关键模块,可无缝集成到您的移动应用中:

  • Core Adapty:这是 Adapty 正常运行所必需的核心 SDK。
  • AdaptyUI:此模块用于渲染流程,以及旧版编辑工具付费墙。AdaptyUI 会随核心模块自动激活。
Tip

想看看 Adapty SDK 如何集成到真实移动应用中?查看我们的示例应用,其中展示了完整的配置流程,包括展示付费墙、进行购买以及其他基本功能。

系统要求

最低 SDK 要求:minSdkVersion 21

Info

安装 SDK 是 Adapty 配置流程的第 5 步。在应用内购买正常运行之前,您还需要将应用连接到各应用商店,然后在 Adapty 看板中创建产品、付费墙和版位。快速入门指南涵盖了所有必要步骤。

依赖项

Adapty SDK 支持以下 Google Play Billing Library 版本:

Adapty SDK 版本Billing Library 版本
4.0.2 及更高版本v8
4.0.0–4.0.1默认使用 v7,若其他依赖项将其升级则使用 v8
3.x 版本线中的 3.17.3 及更高版本v8
3.15.0–3.17.2默认使用 v7,若其他依赖项将其升级则使用 v8
Note

兼容某个 Billing Library 版本并不意味着 Adapty 支持 Google 在该版本中引入的所有功能。在使用新的 Google Play 计费功能之前,请参阅 Play Store 中的产品

安装 Adapty SDK

选择依赖配置方式:

  • 标准 Gradle:在模块级 build.gradle 中添加依赖
  • 如果项目使用 .gradle.kts 文件,则在模块级 build.gradle.kts 中添加依赖
  • 如果使用版本目录,则在 libs.versions.toml 文件中添加依赖,然后在 build.gradle.kts 中引用

Release

我们始终建议安装最新版本的 SDK——它包含最新的稳定性修复和改进。

如果依赖无法解析,请确保你的 Gradle 脚本中包含 mavenCentral()

添加方法说明

如果你的项目 settings.gradle 中没有 dependencyResolutionManagement,请在顶层 build.gradle 的 repositories 末尾添加以下内容:

allprojects {
    repositories {
        ...
        mavenCentral()
    }
}

否则,请将以下内容添加到 settings.gradledependencyResolutionManagement 部分的 repositories 里:

dependencyResolutionManagement {
    ...
    repositories {
        ...
        mavenCentral()
    }
}

激活 Adapty SDK 的 Adapty 模块

基本设置

在你的应用代码中激活 Adapty SDK。

Note

Adapty SDK 在应用中只需激活一次。

获取您的 Public SDK Key

  1. 打开 Adapty 看板,导航至 App settings → General
  2. Api keys 部分,复制 Public SDK Key(不是 Secret Key)。
  3. 将代码中的 "YOUR_PUBLIC_SDK_KEY" 替换为实际值。

或者,使用 Adapty CLI 以编程方式获取:

npm install -g adapty
adapty auth login
adapty apps list

或者,直接运行:

npx adapty auth login
adapty apps list
  • 请确保使用 Public SDK key 初始化 Adapty,Secret key 仅用于服务端 API
  • SDK keys 对每个应用都是唯一的,如果您有多个应用,请确保选择正确的那个。
Important

在调用其他 Adapty SDK 方法之前,请等待 Adapty.activate 完成。完整调用顺序请参阅 Android SDK 中的调用顺序

接下来在你的应用中配置付费墙:

激活 Adapty SDK 的 AdaptyUI 模块

如果你计划使用 Flow & 付费墙编辑工具,则需要 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 的功能时减少不必要的数据采集。

禁用广告 ID(Ad ID)的收集与共享

激活 Adapty 模块时,将 adIdCollectionDisabled 设置为 true 可禁止收集用户的广告 ID。默认值为 false

使用此参数可遵守 Play Store 政策,避免触发广告 ID 权限提示,或在您的应用不需要基于广告 ID 进行广告归因或数据分析时使用。

启用 Adapty 归因

从 Adapty SDK 4.1 版本开始,Adapty 归因 默认处于禁用状态。在激活 Adapty 模块时,请将 adaptyAttributionEnabled 设置为 true,以允许 SDK 记录安装事件并将安装详情传递给您的应用。

在低于 4.1 的 SDK 版本中,Adapty Attribution 会自动启用,无需修改代码。

为 AdaptyUI 配置媒体缓存

默认情况下,AdaptyUI 会缓存媒体文件(如图片和视频)以提升性能、减少网络流量。你可以通过提供自定义配置来调整缓存设置。

使用 AdaptyUI.configureMediaCache 覆盖默认缓存大小和有效期。此步骤为可选项——如果不调用该方法,将使用默认值(磁盘大小 100MB,有效期 7 天)。

参数:

参数是否必填描述
diskStorageSizeLimit可选磁盘缓存总大小,单位为字节。默认为 100 MB。
diskCacheValidityTime可选缓存文件的有效期。默认为 7 天。
Tip

您可以在运行时使用 AdaptyUI.clearMediaCache(strategy) 清除媒体缓存,其中 strategy 可以是 CLEAR_ALLCLEAR_EXPIRED_ONLY

设置混淆账户 ID

Google Play 在某些场景下需要使用混淆账户 ID,以增强用户隐私与安全性。这些 ID 可帮助 Google Play 识别购买行为,同时保持用户信息匿名,对防欺诈和数据分析尤为重要。

如果您的应用处理敏感用户数据,或需要遵守特定的隐私法规,则可能需要设置这些 ID。混淆 ID 让 Google Play 能够追踪购买记录,而无需暴露真实的用户标识符。

在自定义进程中运行 Adapty

默认情况下,Adapty 只能在应用的主进程中运行。 如果你的应用使用多个进程,请只初始化 Adapty 一次,否则可能会出现意外行为。

如果需要在其他进程中运行 Adapty,请在配置中指定进程名称:

如果你尝试在另一个进程中激活 Adapty 但未设置此值,SDK 将记录警告并跳过激活。

启用本地访问等级

默认情况下,Android 上的本地访问等级是禁用的。要启用它,请将 withLocalAccessLevelAllowed 设置为 true

故障排查

Android 备份规则(自动备份配置)

部分 SDK(包括 Adapty)会附带自己的 Android 自动备份配置。如果你同时使用多个定义了备份规则的 SDK,Android 清单合并工具可能会报错,提示涉及 android:fullBackupContentandroid:dataExtractionRulesandroid: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)

要解决这个问题,你需要:

  • 告诉 manifest 合并工具使用你的应用中与备份相关属性的值。

  • 将 Adapty 和其他 SDK 的备份规则合并到单个 XML 文件中(Android 12+ 可使用一对文件)。

1. 将 tools 命名空间添加到你的 manifest

如果尚未添加,请将 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. 创建合并后的备份规则文件

app/src/main/res/xml/ 目录下创建 XML 文件,将 Adapty 的规则与其他 SDK 的规则合并在一起。由于 Android 在不同系统版本中使用不同的备份规则格式,同时创建两个文件可确保与你的应用所支持的所有 Android 版本兼容。

Note

以下示例以 AppsFlyer 作为第三方 SDK 的示例。请根据你在应用中使用的其他 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)同样生效。

  • Manifest 合并器将使用您应用的配置,不再因备份属性冲突而报错。

从其他应用返回后购买失败

如果启动购买流程的 Activity 使用了非默认的 launchMode,当用户从 Google Play、银行应用或浏览器返回时,Android 可能会错误地重建或复用该 Activity,导致购买结果丢失或被视为已取消。

为确保购买流程正常运行,请仅对启动购买流程的 Activity 使用 standardsingleTop 启动模式,避免使用其他模式。

AndroidManifest.xml 中,确保启动购买流程的 Activity 设置为 standardsingleTop

<activity
    android:name=".MainActivity"
    android:launchMode="standard" />