处理 Android SDK 错误

SDK 返回的所有错误均为 AdaptyError 类型。

Tip

在调试前开启详细日志。 大多数 AdaptyError 都封装了底层的 Play Billing、网络或后端错误。开启详细日志(Adapty.logLevel = AdaptyLogLevel.VERBOSE — 参见日志记录)后,封装的错误会打印到控制台,通常能直接告诉你真正的原因。

Important

如果以上方案未能解决你的问题,请查看其他问题,了解联系支持前需要做哪些准备,以便我们更高效地为你提供帮助。

错误解决方案
UNKNOWN此错误表示发生了未知或意外的错误。
ITEM_UNAVAILABLE此错误多发生在测试阶段。可能原因是产品未上架到正式环境,或该用户不在 Google Play 的测试人员组中。
ADAPTY_NOT_INITIALIZEDAdapty SDK 尚未激活。
最常见的情况是:启动页或早期 UI 钩子在 Adapty.activate 返回之前就调用了 Adapty 的方法。该问题偶发,在模拟器上可能无法复现,因为真机的时序不同。请等待 Adapty.activate 完成后再发起其他 SDK 调用。完整调用顺序请参阅 Android SDK 调用顺序。同时,你还需要使用 Adapty.activate 方法正确配置 Adapty SDK
PROFILE_WAS_CHANGED操作过程中用户画像发生了变更。
这通常发生在 Adapty.identify 仍在执行时调用了其他方法——该调用落在了即将被替换的用户画像上,SDK 将其拒绝。请等待 Adapty.identify 完成后再发起其他 SDK 调用。请参阅 Android SDK 调用顺序
PRODUCT_NOT_FOUND此错误表示请求购买的产品在商店中不可用。

CURRENT_SUBSCRIPTION_TO_UPDATE

_NOT_FOUND_IN_HISTORY

在活跃订阅中未找到需要替换的原始订阅。
BILLING_SERVICE_TIMEOUT此错误表示请求在 Google Play 响应之前已达到最大超时时间。例如,Play 结算库调用所请求的操作执行延迟就可能导致此错误。
FEATURE_NOT_SUPPORTED当前设备上的 Play 商店不支持所请求的功能。
BILLING_SERVICE_DISCONNECTED此错误表示客户端应用通过 BillingClient 与 Google Play 商店服务之间的连接已断开。
BILLING_SERVICE_UNAVAILABLE此错误表示 Google Play 结算服务当前不可用。大多数情况下,这意味着客户端设备与 Google Play 结算服务之间存在网络连接问题。
BILLING_UNAVAILABLE

此错误表示购买过程中发生了结算问题。可能原因包括:

1. 用户设备上的 Play 商店应用缺失或版本过旧。

2. 用户所在国家/地区不受支持。

3. 用户属于企业账号,且管理员已禁用购买功能。

4. Google Play 无法向用户的付款方式扣款(例如信用卡已过期)。

5. 用户未登录 Play 商店应用。

DEVELOPER_ERROR此错误表示你使用 API 的方式不正确。
BILLING_ERROR此错误表示 Google Play 内部出现了问题。
ITEM_ALREADY_OWNED该产品已购买。
ITEM_NOT_OWNED此错误表示对该商品请求的操作失败,因为用户并未拥有该商品。
BILLING_NETWORK_ERROR此错误表示设备与 Play 系统之间的网络连接出现了问题。
NO_PRODUCT_IDS_FOUND

此错误表示付费墙中的所有产品在商店中均不可用。

如果遇到此错误,请按以下步骤排查:

  1. 检查所有产品是否已添加到 Adapty 看板。
  2. 确认应用的 Package name 与 Google Play Console 中的一致。
  3. 核实应用商店中的产品标识符与看板中添加的标识符是否匹配。请注意,标识符不应包含 Bundle ID,除非商店本身已将其包含在内。
  4. 在 Google 税务设置中确认应用付款状态为 Active,并确保税务信息是最新的且证书有效。
  5. 检查应用是否已绑定银行账户,以便具备变现资格。
  6. 检查产品是否在你所在的地区可用。
  7. 确保你的应用处于某个测试轨道中。Internal testing 轨道是最简便的选项,无需审核且对用户不可见。
NO_PURCHASES_TO_RESTORE在 Adapty Android SDK 3.17.3 和 4.0.2 中已弃用:restorePurchases() 不再返回此错误。当没有可恢复的内容时,该方法会以当前用户画像成功完成,请检查其中的访问等级状态。在早期 SDK 版本中,此错误表示 Google Play 未找到可恢复的购买记录。
AUTHENTICATION_ERROR你需要使用 Adapty.activate 方法正确配置 Adapty SDK
BAD_REQUEST错误请求。
请确保你已完成与 Google Play 集成所需的所有步骤。
SERVER_ERROR服务器错误。
REQUEST_FAILED此错误表示发生了无法明确定义的网络问题。
DECODING_FAILED无法解码响应内容。
请检查代码,确保发送的参数有效。例如,此错误可能表示你使用了无效的 API 密钥。
ANALYTICS_DISABLED由于你已关闭分析功能,我们无法处理分析事件。
WRONG_PARAMETER

此错误表示某些参数不正确:不能为空时为空,或类型错误等。

当 SDK 无法读取本地备用付费墙文件时也会返回此错误——最常见的原因是文件版本与 SDK 版本不匹配,请在看板中重新下载文件。

LOGGING_OUT_UNIDENTIFIED_USER对从未经过身份验证的用户调用了 Adapty.logout()。请仅在调用 Adapty.identify 之后才调用此方法。

流程渲染错误

Adapty SDK 4.0 及更高版本通过 AdaptyFlowEventListener 中的 onError 回调报告这些错误,而不是从方法调用中直接返回。详情请参阅在 Android SDK 中处理事件

错误解决方案
WRONG_ASSET_TYPE流程中某个图片元素指向的资产实际上是颜色或渐变填充,SDK 会在该位置渲染占位图。请在 Flow & Paywall Builder 中为该元素指定图片资产。
JS_EXCEPTION流程的 JavaScript 抛出了异常。请查看错误消息中的异常详情。
NAVIGATOR_NOT_FOUND某个打开屏幕的操作指定了一个在流程视图配置中不存在的导航器,且流程中也没有 default 导航器可作为回退。请在 Flow & Paywall Builder 中检查该操作的目标设置。
INVALID_ACTION_URL某个打开 URL 的操作引用了一个无法解析为 URL 的字符串 ID。请在 Flow & Paywall Builder 中为该操作设置有效的 URL。

其他问题

如果您尚未找到解决方案,可以采取以下后续步骤:

  • 将 SDK 升级到最新版本:我们始终建议升级到最新的 SDK 版本,因为它们更稳定并包含已知问题的修复。
  • 联系支持团队或在支持论坛中获得其他开发者的帮助
  • 通过 support@adapty.io 或在线聊天联系支持团队:如果您还不打算升级 SDK 或升级后问题仍未解决,请联系我们的支持团队。请注意,如果您启用详细日志记录并与团队共享日志,您的问题将得到更快解决。您也可以附上相关代码片段。