如何使用Gradle插件3.2设置库版本?

时间:2018-07-26 13:50:11

标签: android gradle android-gradle

在我的android库项目中,我曾经这样做:

android.libraryVariants.all { variant ->
    def flavourName = variant.productFlavors.get(0).name
    def buildTypeName = variant.buildType.name

    def buildVersion = calculateVersion( flavourName, buildTypeName )
    variant.mergedFlavor.versionName = buildVersion
}

这一直很好,直到gradle插件3.1.3为止。现在,我正在尝试3.2.0-beta04(因为使用香草cmake时速度要快得多),并且出现此错误:

versionName cannot be set on a mergedFlavor directly.
versionNameOverride can instead be set for variant outputs using the following syntax:
android {
    applicationVariants.all { variant ->
        variant.outputs.each { output ->
            output.versionNameOverride = "6.12.0"
        }
    }
}

好的,我采用了建议:

android.libraryVariants.all { variant ->
    def flavourName = variant.productFlavors.get(0).name
    def buildTypeName = variant.buildType.name

    def buildVersion = calculateVersion( flavourName, buildTypeName )
    variant.outputs.each { output ->
        output.versionNameOverride = buildVersion
    }
}

现在我收到此错误:

 Could not set unknown property 'versionNameOverride' for object of type com.android.build.gradle.internal.api.LibraryVariantOutputImpl.

似乎versionNameOverride属性仅适用于应用程序变体,而不适用于库变体。这是否意味着现在已不支持设置Android AAR版本?还是有另一种方法可以实现?

编辑:请注意,在versionName部分中设置defaultConfig字段适用于我的图书馆项目-使用上述方法无法通过编程方式进行设置。

1 个答案:

答案 0 :(得分:0)

尝试将__init__更改为tk.Canvas,而不是像这样设置风味的名称和版本代码

variant.productFlavors.get(0).name