“api”或“compileOnly”依赖语句的gradle if else子句

时间:2018-02-03 17:38:18

标签: android gradle dependencies

我有一个可安装的应用和即时应用版本。 为了减少即时应用版本的APK大小,我减少了一些功能。这也意味着在运行时不再使用某些库。在编译期间仍然需要它们。 在gradle中有一个很好的依赖语句叫做“compileOnly”。 工作得很好。我的应用程序大小完全按照我希望的那样减少。 但每当我想编译即时应用程序或可安装时,我必须手动更改所有gradle文件并将“Api”替换为“CompileOnly”,反之亦然。

有没有办法在gradle文件中设置条件。所以我有类似的东西:

//normal dependencies here.

if isInstantApp{
    compileOnly "org.twitter4j:twitter4j-core:$rootProject.ASNETwitter"
}
else if (isInstallable){
    compile "org.twitter4j:twitter4j-core:$rootProject.ASNETwitter"
}

这将节省我的大部分时间。

PS。我不是在寻找构建口味,因为这不是这里的用例。

1 个答案:

答案 0 :(得分:1)

您只需创建一个新配置,让apicompileOnly从中扩展:

configurations {
    shared
    (isInstallable ? api : compileOnly).extendsFrom shared
}

dependencies {
    shared 'my:dependency:1'
    // ....
}