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

React Native中Project#afterEvaluate执行失败问题求助

解决React Native中Project#afterEvaluate(Closure)执行上下文错误

我帮你捋捋这个报错的核心原因——你的android/build.gradle里的subprojects配置结构违反了Gradle 5.x的阶段执行规则,这也是你升级Gradle到5.1.1后触发报错的关键。

问题根源

Gradle 5+对构建流程的配置阶段和评估阶段的边界约束更严格:

  • configurations.all是在配置阶段执行的代码,此时项目还未完成初始化评估
  • afterEvaluate是要在项目评估完成后执行的方法,不能嵌套在配置阶段的闭包(比如configurations.all)里调用,否则就会抛出你遇到的上下文错误。

看你的配置,正好犯了这个错误:把afterEvaluate嵌套在了subprojects -> configurations.all里面。

针对性解决方案

1. 修复subprojects的配置结构

把afterEvaluate从configurations.all中移出来,调整后的代码如下:

subprojects {
    // 先处理afterEvaluate逻辑(评估阶段执行)
    afterEvaluate { project ->
        if (project.hasProperty("android")) {
            android {
                compileSdkVersion rootProject.ext.compileSdkVersion
                buildToolsVersion rootProject.ext.buildToolsVersion
            }
        }
    }

    // 再单独处理configurations的全局配置(配置阶段执行)
    configurations.all {
        // 这里可以保留你原本需要的配置规则,比如依赖版本强制等
    }
}

2. 清理重复的全局变量

你的build文件顶部有重复的googlePlayServicesVersion定义:

// 顶部多余的定义,建议删除
ext {
    googlePlayServicesVersion = "+"
}

已经在buildscript -> ext里定义了具体版本,重复定义可能导致依赖冲突,删掉顶部的这个ext块即可。

3. 清理构建缓存

修改配置后,务必清理旧缓存避免干扰,执行以下命令:

# 进入android目录
cd android
# 清理gradle构建缓存
./gradlew clean cleanBuildCache
# 清理React Native的npm缓存
rm -rf ../node_modules/.cache

4. 确认版本兼容性

你当前使用的Gradle 5.1.1和Android Gradle插件3.4.1是兼容的,这个组合没问题,不需要调整版本。

额外提示

如果执行以上步骤后仍有问题,可以检查:

  • 所有React Native第三方依赖的gradle配置是否适配Gradle 5.x,部分老依赖可能需要升级版本
  • 确保android/app/build.gradle里的配置没有类似的阶段嵌套错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 09:09:48