如何使用 Android Gradle 插件 3.0.0+ 来操作变量输出?

How can Variant Outputs be manipulated using the Android Gradle Plugin 3.0.0+?

用于 Gradle 的 Android 插件的最新版本 (3.0.0) 已破坏其 API 用于操作 Variant Outputs。此 API 用于处理构建期间创建的文件(例如 AndroidManifest.xml),已被删除以缩短配置时间。

有哪些新的 API 可用于操作变体输出,它们与 2.X API 有何不同?

outputFiles 的更改现已记录在 Android Developer site

本质上,建议不要直接从 gradle API 访问 outputFile,而是访问包含该文件的目录。下面的代码片段使用清单文件演示了这一点,但也可以应用于其他输出文件。

android.applicationVariants.all { variant ->
    variant.outputs.all { output ->
        output.processManifest.doLast {

            String manifestPath = "$manifestOutputDirectory/AndroidManifest.xml"
            def manifestContent = file(manifestPath).getText()

            // Manipulate the file as needed
        }
    }
}

看来他们又更改了这个界面。 (android gradle 插件 3.3+ 或 Gradle 5.4+)

我正在使用以下方法检索清单路径:

def manifestPath = "${manifestOutputDirectory.get().asFile}/AndroidManifest.xml"

here

中得出

正在获取 java.io.FileNotFoundException 路径中包含以下内容

property(interface org.gradle.api.file.Directory, fixed(class org.gradle.api.internal.file.DefaultFilePropertyFactory$FixedDirectory, /Users/me/app/build/intermediates/merged_manifests/debug))