背景
环境
Android Studio Electric Eel | 2022.1.1 Patch 2
Runtime version: 11.0.15+0-b2043.56-8887301 aarch64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
gradle 7.5
android gradle plugin 7.4.2
在Android 项目中,打印依赖信息,出现问题。
gradlew :app:dependencies
A problem occurred evaluating project ':lib_base'.
> Failed to apply plugin 'com.android.internal.library'.
> Accessing GradleBuildProject.Builder through AnalyticsConfiguratorService is not allowed after AnalyticsService is created.
当前这个Module是一个lib,也是配置的plugin是:com.android.library,看着是没有问题的,怎么都找不到问题,看意思就是这个任务创建失败了。
解决方案
方案1
在项目中的gradle.property看看有没有:org.gradle.configureondemand,如果是存在,可能是之前因为使用到gradle优化的,可以使用第二个方案,不修改这个值,在执行命令的时候传入。
org.gradle.configureondemand = false
方案2
// 直接在命令中添加参数
gradlew :app:dependencies -Dorg.gradle.configureondemand=false > dep.txt
解释
官方 gradle 文档说明:
org.gradle.configureondemand=(true,false)
启用按需孵化配置,其中 Gradle 将尝试仅配置必要的项目。
默认为false。
org.gradle.configureondemand
作用说明:
一次 Gradle 编译大概由这几部分组成:初始化、加载 setting.gradle(|| setting.gradle.kts)、加载各个模块的 build.gradle(|| build.gradle.kts)、执行一系列任务。从上图中可以看到,Configuring Projects 也是花了 5s 左右的时间,使用 org.gradle.configureondemand=true 可以加速这一过程。