使用EAS构建Android React Native项目时遇classifier属性错误
解决Expo Managed项目Android构建失败(expo-firebase-core classifier属性错误)
问题概述
执行eas build -p android --profile preview构建时失败,错误提示:
在
/home/expo/workingdir/build/node_modules/expo-firebase-core/android/build.gradle第40行,无法为类型为org.gradle.api.tasks.bundling.Jar的任务:expo-firebase-core:androidSourcesJar设置未知属性'classifier'。
本地模拟器运行正常,已通过Expo项目检查无问题。
核心原因
- Firebase依赖冲突:项目同时引入了
@react-native-firebase/app(纯React Native Firebase库)和expo-firebase-core(Expo封装的Firebase初始化库),两者的Gradle配置存在冲突。 - Gradle版本兼容性:Expo 49使用的Gradle版本(7.x+)已废弃Jar任务的
classifier属性,改用archiveClassifier,但expo-firebase-core@6.0.0的配置仍在使用旧属性。
解决方案
方案1:移除冲突的Firebase依赖(推荐)
Expo Managed项目建议统一使用Expo官方的Firebase工具链,避免混用纯RN Firebase库:
- 卸载冲突依赖:
npm uninstall @react-native-firebase/app firebase
- 确保仅保留Expo的Firebase相关依赖(如
expo-firebase-core、expo-firebase-recaptcha等)。 - 清理缓存并重新安装依赖:
npm install npx expo prebuild --clean
- 重新执行构建命令:
eas build -p android --profile preview
方案2:修复expo-firebase-core的Gradle配置(保留双Firebase库的场景)
如果必须同时使用两类Firebase库,通过patch-package修改expo-firebase-core的Gradle配置:
- 打开
node_modules/expo-firebase-core/android/build.gradle,找到第40行:
classifier = 'sources'
- 将其替换为:
archiveClassifier = 'sources'
- 生成补丁文件:
npx patch-package expo-firebase-core
- 将生成的
patches/expo-firebase-core+6.0.0.patch文件提交到版本控制,确保CI构建时能自动应用补丁。 - 重新执行构建命令。
方案3:升级依赖版本至兼容组合
检查Expo 49的依赖兼容性矩阵,升级expo-firebase-core到适配Gradle 7+的版本,或降级@react-native-firebase/app到与Expo 49兼容的版本(需参考官方文档确认版本匹配关系)。
内容的提问来源于stack exchange,提问作者Safri Jawad
相关产品推荐
相关产品推荐

