Expo托管工作流Gradle报错:重复类androidx.lifecycle.ViewModelLazy
解决Expo 47移除Stripe依赖后Android Gradle重复类冲突问题
问题本质
移除@stripe/stripe-react-native:0.19.0后,项目剩余依赖里有包引入了androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1,和Expo 47自带的androidx.lifecycle:lifecycle-viewmodel:2.5.1撞了类,导致Gradle构建崩溃。
具体解决步骤
1. 揪出引发冲突的依赖
在项目根目录跑命令,定位到底是哪个依赖带了旧版lifecycle包:
# Mac/Linux ./gradlew app:dependencies --configuration releaseRuntimeClasspath | grep -A 5 -B 5 "lifecycle-viewmodel-ktx:2.3.1" # Windows gradlew app:dependencies --configuration releaseRuntimeClasspath | findstr /B /A /C:"lifecycle-viewmodel-ktx:2.3.1"
2. 用Expo插件强制统一依赖版本
先安装expo-build-properties插件:
npx expo install expo-build-properties
然后在app.json或app.config.js里加配置,强制所有依赖用指定的新版lifecycle:
{ "expo": { "plugins": [ [ "expo-build-properties", { "android": { "kotlinVersion": "1.6.10", // 匹配Expo 47的Kotlin版本 "gradleExtraProps": { "android": { "configurations": { "all": { "resolutionStrategy": { "force": [ "androidx.lifecycle:lifecycle-viewmodel:2.5.1", "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1" ] } } } } } } } ] ] } }
3. 清缓存后重新构建
跑这些命令清理缓存,避免旧配置干扰:
npx expo prebuild --clean ./gradlew clean npx eas build --platform android
备选方案
如果明确是某个第三方RN依赖搞的鬼,也可以直接在app.json里给这个依赖排除旧版lifecycle:
{ "expo": { "android": { "gradle": { "dependencies": { "exclude": { "module": "lifecycle-viewmodel-ktx", "group": "androidx.lifecycle", "from": "具体有问题的依赖包名" } } } } } }
内容的提问来源于stack exchange,提问作者olaurendeau
相关产品推荐
相关产品推荐

