Skip to content Skip to sidebar Skip to footer

How Can Variant Outputs Be Manipulated Using The Android Gradle Plugin 3.0.0+?

The latest version (3.0.0) of the Android Plugin for Gradle has broken its API for manipulating Variant Outputs. This API was used for manipulating files creating during builds (su

Solution 1:

The changes to outputFiles has now been documented on the Android Developer site.

Essentially, instead of accessing the outputFile directly from the gradle API, the recommendation is to access the directory containing the file instead. The snippet below demonstrates this with a manifest file, but can be applied to other outputFiles as well.

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
        }
    }
}

Solution 2:

Looks like they've changed this interface again. (android gradle plugin 3.3+ or Gradle 5.4+)

I'm using the following to retrieve the manifestPath:

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

Figured it out from here

Was getting a java.io.FileNotFoundException with the following in the path

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

Post a Comment for "How Can Variant Outputs Be Manipulated Using The Android Gradle Plugin 3.0.0+?"