我如何知道android gradle插件的applicationVariants中的属性?

Posted

技术标签:

【中文标题】我如何知道android gradle插件的applicationVariants中的属性?【英文标题】:How do I know the properties in applicationVariants of android gradle plugin? 【发布时间】:2016-08-08 22:06:40 【问题描述】:

我正在使用带有 gradle 插件的 android Studio 来开发应用程序。我在DSL Reference 上学习了一些android gradle 插件的用法。但我发现的一件事是 doc 上的 applicationVariants 部分很难理解。它只给出了这样的描述:

DomainObjectSet applicationVariants

应用程序变体列表。由于集合是在评估之后构建的,因此它应该与 Gradle 的 all 迭代器一起使用来处理未来的项目。

但是 ApplicationVariant 中的属性是什么?我不知道。而且我没有找到描述 ApplicationVariant 的参考链接。

仅在页面最底部的Gradle Plugin User Guide 中。它记录了 applicationVariants、libraryVariants 和 testVariants 中的可用属性。但我发现其中相当一部分属性已被弃用很长时间,Android 也没有更新此页面。

那么我在哪里可以找到 ApplicationVariant 中最新的属性?

【问题讨论】:

【参考方案1】:

https://android.googlesource.com/platform/tools/build/+/8dca86a/gradle/src/main/groovy/com/android/build/gradle/internal/ApplicationVariant.groovy

我也很难找到它。这是它移动的界面: 它还将包含您在自己的风格中定义的任何道具,例如 versionName、applicationId 等

public interface ApplicationVariant 
    String getName()
    String getDescription()
    String getDirName()
    String getBaseName()
    VariantConfiguration getConfig()
    boolean getZipAlign()
    boolean isSigned()
    boolean getRunProguard()
    FileCollection getRuntimeClasspath()
    FileCollection getResourcePackage()
    Compile getCompileTask()
    List<String> getRunCommand()
    String getPackage()
    AndroidBuilder createBuilder(AndroidBasePlugin androidBasePlugin)

并打印任何对象的道具:

def filtered = ['class', 'active']

println theObject.properties
            .sortit.key
            .collectit
            .findAll!filtered.contains(it.key)
            .join('\n')

【讨论】:

非常感谢。它有助于。但我还有一个问题。似乎只在 ApplicationVariant 中显示属性。图书馆变体怎么样?我没有从你上面给我的链接中找到它。【参考方案2】:

@CaptRespect 答案中的链接指向特定的构建。以下是 master 分支中公共 API 的链接:

/gradle/api/ApplicationVariant.java (起源自) /gradle/api/ApkVariant.java (起源自) /gradle/api/BaseVariant.java

【讨论】:

【参考方案3】:

这里有一些关于这些的文档:

ApplicationVariant: BaseVariant ApkVariant

【讨论】:

以上是关于我如何知道android gradle插件的applicationVariants中的属性?的主要内容,如果未能解决你的问题,请参考以下文章

Android Gradle 插件版本所需的 Gradle 版本 和下载地址

Android项目中带有Gradle插件的模块

使用android productFlavors时,sonarqube gradle插件异常

Gradle Android Maven 插件不会自动创建 pom 文件

Android开发--Gradle--tasks(三)

android gradle插件——离线安装