Android Studio中JFrog Artifactory插件同步失败求助
Cannot run Project.afterEvaluate(Action) when project is already evaluated 问题背景
自2023年8月31日起,多台设备的Android Studio均出现Gradle同步失败问题,核心配置如下:
插件配置
apply plugin: 'com.jfrog.artifactory' apply plugin: 'maven-publish'
仓库配置
repositories { maven { url "http://xx.xxx.xx.xxx:xxxx/artifactory/libs-release-local" allowInsecureProtocol = true credentials { username = "${artifactory_username}" password = "${artifactory_password}" } } maven { url 'https://maven.fabric.io/public' } mavenCentral() }
报错信息
A problem occurred evaluating project ':camera_library2'.
Failed to apply plugin class 'org.jfrog.gradle.plugin.artifactory.ArtifactoryPlugin'.
Cannot run Project.afterEvaluate(Action) when the project is already evaluated.
已尝试升级/降级Gradle及Kotlin版本,问题未解决,怀疑是否为谷歌限制Artifactory相关库导致。
问题分析
该错误并非谷歌限制Artifactory导致,核心原因是Artifactory插件的应用时机与Gradle项目生命周期冲突:插件在项目已完成评估阶段后才被尝试应用,触发了afterEvaluate的执行限制。此外,旧版Artifactory插件与高版本Gradle的兼容性问题也可能引发该报错。
解决方案
调整插件应用时机
确保Artifactory插件在项目评估阶段前应用,直接在模块build.gradle文件顶部声明插件,不要嵌套在afterEvaluate或其他延迟执行的闭包中。升级Artifactory插件至兼容版本
在项目根目录的build.gradle中指定与当前Gradle版本匹配的Artifactory插件版本,示例:buildscript { repositories { mavenCentral() } dependencies { // 根据Gradle版本选择对应插件版本,Gradle 7.x+建议用5.20+,Gradle 8.x用5.30+ classpath "org.jfrog.buildinfo:build-info-extractor-gradle:5.32.0" } }排查重复应用插件情况
检查项目中是否在根build.gradle和模块build.gradle中重复应用了com.jfrog.artifactory或maven-publish插件,确保每个插件仅在合适层级应用一次。移除过时Fabric仓库(可选)
Fabric服务已停止维护,可移除https://maven.fabric.io/public仓库,避免不必要的仓库解析干扰。
内容的提问来源于stack exchange,提问作者Balu Suresh Naidu

