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

Android平台Expo内购模块配置编译失败求助

解决expo-in-app-purchases在Android编译时找不到Bundle类的问题

问题场景

我的React Native项目iOS平台内购功能运行正常,但引入Expo的in-app-purchases模块后,Android版本构建失败。已配置Play Store内购产品,并在清单文件中添加了<uses-permission android:name="com.android.vending.BILLING"/>权限,但编译仍报错。

环境信息:

  • Android SDK版本:32
  • expo-in-app-purchases版本:^13.1.0

核心错误堆栈:

/Users/uname/workspace/myproj/mobile/myproj/node_modules/expo-in-app-purchases/android/src/main/java/expo/modules/inapppurchases/UpdateListener.java:46: error: cannot find symbol
    ArrayList<Bundle> results = new ArrayList<>();
              ^
  symbol:   class Bundle
  location: class UpdateListener

解决思路

1. 检查依赖版本匹配性

expo-in-app-purchases@13.1.0对应Expo SDK 46版本,先确认项目的Expo SDK版本是否与之匹配:

  • 如果版本不兼容,升级/降级Expo SDK到46版本,或者调整expo-in-app-purchases到对应项目SDK的适配版本
  • 执行yarn install/npm install重新安装依赖,同时清理缓存:yarn cache clean或npm cache clean --force

2. 修复模块导入缺失(临时方案)

错误提示找不到Bundle类,是因为模块Java文件缺少导入语句:

  • 打开node_modules/expo-in-app-purchases/android/src/main/java/expo/modules/inapppurchases/UpdateListener.java
  • 在文件顶部添加导入:import android.os.Bundle;
  • 重新构建项目

注意:该修改会在依赖重新安装后丢失,建议通过版本匹配彻底解决

3. 调整Gradle与构建工具配置

  • 打开android/build.gradle,确认compileSdkVersion设置为32,buildToolsVersion为32.0.0或兼容版本
  • 检查Gradle版本是否适配Expo SDK 46(推荐Gradle 7.3.3),版本过低则升级
  • 执行cd android && ./gradlew clean清理构建缓存后再重新编译

4. 强制指定Billing Library版本

检查expo-in-app-purchases依赖的Google Play Billing Library是否兼容Android SDK 32,必要时在android/build.gradle中强制指定兼容版本:

dependencies {
  implementation 'com.android.billingclient:billing:5.2.0'
}

内容的提问来源于stack exchange,提问作者Peter Lim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 04:37:01