【问题标题】:Gradle 7 on Android: add BuildConfigField with new variant api from AGP 7Android 上的 Gradle 7:使用 AGP 7 中的新变体 api 添加 BuildConfigField
【发布时间】:2021-08-31 15:31:39
【问题描述】:

我曾经根据构建变体和其他逻辑在我的 Android 项目上向 BuildConfig 添加一些属性。

在 AGP 7.0.1 中使用 Gradle 7 我无法弄清楚如何在我的 groovy gradle 文件的 onVariants 闭包中添加 BuildConfig 字段:

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

我尝试了几种方法,例如:

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

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

这仅适用于 kotlin 中的构建文件。

如何使用 AGP 7 的 Variant Api 做到这一点?

这是我要迁移的原始代码:

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

欢迎提出任何建议!

【问题讨论】:

    标签: android gradle android-gradle-plugin


    【解决方案1】:
    it.buildConfigFields.put("MY_KEY", BuildConfigField("String", "\"$someSecretValue\"", null))
    

    ==> 新的 BuildConfigField

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

    【讨论】:

      【解决方案2】:

      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\"")
                  })
         })
      }

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-25
        • 1970-01-01
        • 2017-09-22
        • 1970-01-01
        • 2017-04-13
        • 1970-01-01
        相关资源
        最近更新 更多