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

React Native EAS构建Android APK失败:依赖变体匹配错误

解决EAS Build Android时Gradle依赖变体匹配失败问题

问题场景

使用eas build -p android --profile preview构建React Native Android APK时,Gradle报错无法解析react-native-async-storage_async-storage、react-native-gesture-handler等多个依赖的变体,提示找不到匹配的编译时库变体。但本地用npx expo run:android生成的开发包可正常运行。

核心原因

  1. Gradle插件(AGP)版本动态获取导致云构建与本地环境版本不一致,依赖变体的属性(如AgpVersionAttr、BuildTypeAttr)不匹配
  2. 第三方React Native依赖的Release构建变体未正确配置,Gradle无法识别
  3. 预构建的Expo模块与纯React Native模块的配置冲突

解决方案

1. 固定Gradle插件(AGP)版本

修改android/build.gradle的buildscript依赖块,明确指定AGP版本(与EAS构建使用的8.6.0匹配):

buildscript {
    // ... 其他ext配置
    dependencies {
        // 替换原动态获取的AGP版本为固定值
        classpath('com.android.tools.build:gradle:8.6.0')
        classpath('com.facebook.react:react-native-gradle-plugin')
        classpath('org.jetbrains.kotlin:kotlin-gradle-plugin')
    }
}

同时确认android/gradle/wrapper/gradle-wrapper.properties中的Gradle版本为8.10.2(与日志中的版本一致):

distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-all.zip

2. 添加依赖变体兼容规则

在android/app/build.gradle的android块中添加配置,强制Gradle识别依赖的Release变体:

android {
    // ... 原有配置
    // 过滤无效变体,确保只保留Release相关变体
    variantFilter { variant ->
        if (variant.buildType.name == 'release' && variant.flavors.any { it.name == 'debug' }) {
            setIgnore(true)
        }
    }

    // 统一依赖解析策略,强制匹配项目使用的版本
    configurations.all {
        resolutionStrategy {
            // 替换为你的React Native版本
            force 'com.facebook.react:react-native:0.74.3'
            // 针对每个报错的依赖添加强制匹配,示例:
            force '@react-native-async-storage/async-storage:1.23.1'
            force 'com.swmansion.gesturehandler:react-native-gesture-handler:2.16.1'
        }
    }
}

3. 重新生成预构建文件

清理并重新生成Expo预构建的Android原生文件,避免配置冲突:

npx expo prebuild --clean

4. 清理缓存后构建

  • 本地清理缓存:
cd android && ./gradlew clean
rm -rf node_modules && npm install
  • EAS构建时强制清理云端缓存:
eas build -p android --profile preview --clear-cache

验证步骤

先在本地尝试构建Release包,确认配置生效:

cd android && ./gradlew assembleRelease

如果本地构建成功,再执行EAS云构建即可解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 15:53:08