【问题标题】:gradle if else clause for "api" or "compileOnly" dependency statement“api”或“compileOnly”依赖语句的 gradle if else 子句
【发布时间】:2018-02-03 17:38:17
【问题描述】:

我有一个可安装的应用程序和一个免安装应用程序版本。 为了减少免安装应用版本的 APK 大小,我减少了一些功能。这也意味着在运行时不再使用某些库。在编译期间仍然需要它们。 在 gradle 中有一个很好的依赖语句,叫做“compileOnly”。 工作得很好。我的应用程序大小完全按照我的意愿减小。 但是,每当我想编译 Instantapp 或可安装应用程序时,我都必须手动更改所有 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。我不是在寻找构建风格,因为这不是这里的用例。

【问题讨论】:

    标签: android gradle dependencies


    【解决方案1】:

    您可以简单地创建一个新配置并让 apicompileOnly 从中扩展:

    configurations {
        shared
        (isInstallable ? api : compileOnly).extendsFrom shared
    }
    
    dependencies {
        shared 'my:dependency:1'
        // ....
    }
    

    【讨论】:

    • 您的示例中的 var“可安装”是在 gradle 中定义的吗?我希望在可安装或即时应用模块的 gradle 文件中设置该变量。这可能吗?
    猜你喜欢
    • 2013-09-28
    • 2015-04-27
    • 2018-04-05
    • 2019-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-05
    • 2017-02-05
    相关资源
    最近更新 更多