You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

react-native-billing上传Google Play提示Play Billing版本过旧及内购异常求助

问题根因

你使用的react-native-billing v3.0.0底层默认绑定的是Google Play Billing Library 2.x版本,不符合Google当前要求的最低3.x及以上版本规则,所以会触发上传报错:

"We've detected this app uses an unsupported version of Play billing. Please upgrade to Billing Library version 3 or newer to publish this app"

你手动在android/app/build.gradle添加implementation "com.android.billingclient:billing:3.0.0"的操作会产生依赖冲突,react-native-billing v3.0.0的原生代码是基于Billing 2.x接口开发的,和3.x接口不匹配,因此会出现InAppBilling.open()调用崩溃、无法拉取商品列表的问题。

解决方案

方案1:替换为兼容Billing 3+的内购库(无原生代码修改,推荐)

该方案不需要调整原生代码,稳定性更高:

  • 卸载原有react-native-billing库,执行命令:
    npm uninstall react-native-billing
    # 或使用yarn
    yarn remove react-native-billing
    
  • 替换为长期维护的适配版内购库,该类库默认已适配Billing 5+版本,完全符合Google上传要求,按接入文档调整后即可复用原有内购业务逻辑。

方案2:适配原有react-native-billing v3.0.0原生代码(适合不想修改上层业务代码的场景)

如果不想更换原有库,可以手动修改库的原生适配逻辑:

  • 首先删除你在android/app/build.gradle中手动添加的implementation "com.android.billingclient:billing:3.0.0"依赖,解决依赖冲突。
  • 进入项目node_modules/react-native-billing/android目录,修改该目录下的build.gradle文件:
    将原有依赖的低版本com.android.billingclient:billing替换为implementation "com.android.billingclient:billing:3.0.3"(3.x分支的最终稳定版,兼容性最好)。
  • 修改该目录下的原生Java文件,适配Billing 3.x的接口变更:
    • 调整BillingClient初始化参数,补充SkuType参数规范。
    • 修改querySkuDetailsAsync的调用参数结构,符合3.x版本的入参要求。
    • 原有支付调用方法补充obfuscatedAccountId、obfuscatedProfileId可选参数,无对应值可传空字符串。
  • 执行清理构建缓存命令后重新打包:
    cd android && ./gradlew clean
    
注意事项
  • 上传Google Play的安装包签名需要和后台配置一致,应用内商品需处于激活状态,测试账号需加入许可测试列表才能正常拉取商品。
  • Billing 3.0.0最低支持minSdkVersion=14,你当前配置的minSdkVersion=16不需要调整。
  • 打包前必须清理Gradle缓存,避免旧依赖残留导致的异常问题。

内容的提问来源于stack exchange,提问作者Manya Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 16:57:03