Robert
Robert

Reputation: 29

Gradle 7 on Android: add BuildConfigField with new variant api from AGP 7

I used to add some attributes to BuildConfig on my Android project depending on the build variant and other logic.

Using Gradle 7 with AGP 7.0.1 I cannot figure out how to add a BuildConfig field in the onVariants closure in my groovy gradle file:

androidComponents {
    onVariants(selector().withBuildType("release"), {
      ...here...
    })
}

I tried several things like:

it.buildConfigFields.put("MY_KEY", BuildConfigField("String", "\"$someSecretValue\"", null))

or

it.addBuildConfigField("MY_KEY", "\"$someSecretValue\"", "key description")

which is only available for build files in kotlin.

How can I do this using AGP 7's Variant Api?

This is my original code I want to migrate:

android.applicationVariants
   .matching { v -> ['release'].contains(v.name) }
   .all { variant ->
     variant.buildConfigField('String', 'MY_KEY', '"$someSecretValue"')
   }

Any suggestion is appreciated!

Upvotes: 2

Views: 793

Answers (2)

Rick
Rick

Reputation: 421

def buildConfigTask = project.tasks.register("buildConfigTask")
androidComponents {
   onVariants(selector().withBuildType("release"), { variant ->
     variant.buildConfigFields.put("MY_KEY", buildConfigTask.map {
              new BuildConfigField("String", "\"MY_KEY_VALUE\"")
            })
   })
}

Upvotes: 2

Rick
Rick

Reputation: 421

it.buildConfigFields.put("MY_KEY", BuildConfigField("String", "\"$someSecretValue\"", null))

==> new BuildConfigField

it.buildConfigFields.put("MY_KEY", new BuildConfigField("String", "\"$someSecretValue\"", null))

Upvotes: 2

Related Questions