Expo 52升级后Android EAS构建失败:命名空间与清单合并错误
解决方案:Expo 52 Android构建清单合并冲突问题
问题核心
构建失败源于项目同时存在AndroidX与旧版com.android.support库的冲突,导致Manifest合并时出现android:appComponentFactory属性重复、androidx.versionedparcelable命名空间重复的问题。从依赖列表判断,react-native-iap@12.15.7是引入旧Support库的主要来源,该版本未完全适配AndroidX。
步骤1:临时修复Manifest合并错误
按错误提示添加tools:replace属性,先解决直接的合并冲突:
- 生成Android原生文件:
expo prebuild --platform android - 打开
android/app/src/main/AndroidManifest.xml,修改如下:<!-- 先给根manifest标签添加tools命名空间 --> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"> <!-- 在application标签中添加替换属性 --> <application ... tools:replace="android:appComponentFactory">
步骤2:强制所有依赖使用AndroidX
通过Gradle配置彻底替换旧Support库:
- 打开
android/build.gradle,在allprojects区块内添加:configurations.all { resolutionStrategy { // 强制使用AndroidX版本,排除所有com.android.support依赖 force 'androidx.core:core:1.13.1' force 'androidx.versionedparcelable:versionedparcelable:1.1.1' exclude group: 'com.android.support' } } - 确认
android/gradle.properties已开启AndroidX:android.useAndroidX=true android.enableJetifier=true
步骤3:替换冲突依赖
react-native-iap@12.15.7是冲突根源,推荐二选一处理:
- 方案A:升级到最新版react-native-iap:
v13+版本已全面适配AndroidX,移除了旧Support库依赖。npm install react-native-iap@latest - 方案B:改用Expo官方内购库:
若项目为Expo管理模式,优先使用官方库以适配生态:expo install expo-in-app-purchases
步骤4:清理缓存并重新构建
完成修改后清理缓存,避免残留问题:
# 清理npm缓存 npm cache clean --force # 清理Expo缓存 expo r -c # 清理Android构建缓存 cd android && ./gradlew clean && cd .. # 重新执行构建 eas build --platform android
内容的提问来源于stack exchange,提问作者שלו כהן
相关产品推荐
相关产品推荐

