根据产品风味尺寸创建gradle任务

asc*_*sco 5 android gradle jacoco android-gradle-plugin

我的build.gradle中有以下productFlavors:

productFlavors {

    free {

    }
    paid {

    }       
}
Run Code Online (Sandbox Code Playgroud)

现在,我添加了一个flavorDimension(http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Multi-flavor-variants),如下所示:

flavorDimensions "payment", "releasetype"

productFlavors {

    paid {
        dimension "payment"
    }
    free {
        dimension "payment"
    }
    beta {
        dimension "releasetype"
    }

    major {
        dimension "releasetype"
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用此脚本为jacoco覆盖率报告生成gradle任务。该脚本将构建类型(调试,发布)与产品风格(付费,免费,...)结合在一起,并相应地生成任务。

当然,这是由于风味尺寸而造成的,因为脚本未将它们考虑在内。

该脚本生成任务:

testDebugPaidUnitTestCoverage
testDebugFreeUnitTestCoverage
testDebugBetaUnitTestCoverage
testDebugMajorUnitTestCoverage
Run Code Online (Sandbox Code Playgroud)

它应该做的是:

testDebugPaidBetaUnitTestCoverage
testDebugPaidMajorUnitTestCoverage
...
Run Code Online (Sandbox Code Playgroud)

我试图通过gradle任务访问flavorDimensions

android.flavorDimensions
Run Code Online (Sandbox Code Playgroud)

但无法识别该属性:

Error:Could not get unknown property 'flavorDimensions' for object of type com.android.build.gradle.LibraryExtension.
Run Code Online (Sandbox Code Playgroud)

关于如何扩展此脚本以使其与风味尺寸一起使用或如何从外部jacoco.gradle脚本访问它们的任何建议?

我可以从那里访问构建类型和产品口味,所以应该可以吗?

小智 0

我不太擅长使用 gradle。

但也许你可以尝试以下方法

如果你的模块是库;

variants = android.libraryVariants.collect { var ->
    var.name
}
Run Code Online (Sandbox Code Playgroud)

如果您的模块是应用程序;

variants = android.applicationVariants.collect { var ->
    var.name
}
Run Code Online (Sandbox Code Playgroud)