将 android gradle 插件更新到 4.1.0 后 afterEvaluate 不起作用

Rad*_*nda 5 android gradle

您好,我们afterEvaluate在根目录中使用build.gradle来设置一些BuildConfig值并上传档案,但是在更新 gradle 插件之后

com.android.tools.build:gradle:4.0.1
Run Code Online (Sandbox Code Playgroud)

com.android.tools.build:gradle:4.1.0
Run Code Online (Sandbox Code Playgroud)

似乎afterEvaluate根本没有被触发。

知道如何解决这个问题吗?

build.gradle看起来像这样

subprojects{
...
 android{
 ...
    afterEvaluate { project ->
        buildTypes.each { buildType ->
            final String suffix = buildType.name == 'release' ? '' : ".${buildType.name}"

            project.libraryApplicationIds.each { String constant, String libAppId ->
                buildType.buildConfigField "String", constant, "\"$libAppId$suffix\""
                buildType.manifestPlaceholders[constant] = "$libAppId$suffix"
            }
        }
    }
 ...
 }
...
}
Run Code Online (Sandbox Code Playgroud)

SIL*_*NIK 3

看起来我也遇到了同样的问题,但在我们的 Gradle 插件中发现了它,该插件应该在应用程序变体中注入构建配置字段。

我设法使用这样简单的插件在干净的项目上重现这一点,该插件模拟了我们在插件中所做的事情。

class MyPlugin: Plugin<Project> {

    override fun apply(project: Project) {
        project.afterEvaluate {
            val androidExtension = project.extensions.getByType(AppExtension::class.java)
            androidExtension.applicationVariants.forEach {
                System.out.println("Adding build config for ${it.name}")
                it.buildConfigField("String", "TEST_CONFIG", "\"TEST\"")
            }
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

两种情况下的 Gradle 版本都是6.5

所以我只是将 AGP 版本从 更改4.0.24.1.0. 在前一种情况(版本 4.0.2)中,它工作正常,并且TEST_CONFIG字段被添加到BuildConfig,在后一种情况下,字段不会添加到BuildConfig

我注意到,当我运行时,两种情况下的构建日志都不同./gradlew :app:generateDebugBuildConfig

对于旧插件版本,当一切正常时输出为:

> Configure project :app

> Task :app:preBuild UP-TO-DATE
> Task :app:preDebugBuild UP-TO-DATE
> Task :app:generateDebugBuildConfig
Adding build config for debug
Adding build config for release
Run Code Online (Sandbox Code Playgroud)

对于新插件版本不起作用时:

> Configure project :app

> Task :app:preBuild UP-TO-DATE
> Task :app:preDebugBuild UP-TO-DATE
Adding build config for debug
Adding build config for release
> Task :app:generateDebugBuildConfig
Run Code Online (Sandbox Code Playgroud)

所以看起来插件中有一些内部更改导致了这种重新排序,但不幸的是我还没有找到修复程序

更新:我发现这在版本中被破坏了4.1.0-alpha08

更新:Github 上的示例项目

更新:已向 Google 报告,等待回复 - Google Issue Tracker