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
相关产品推荐
相关产品推荐

