gpt4 book ai didi

gradle - 即使属于不同的构建变体,函数也会执行吗?

转载 作者:行者123 更新时间:2023-12-03 05:12:08 26 4
gpt4 key购买 nike

我的设置:

  • buildToolsVersion“25.0.3”
  • com.android.tools.build:gradle:2.3.0

  • 码:
    apply plugin: 'com.android.application'
    android {

    // ...

    signingConfigs {
    release {
    storeFile getReleaseKeyStoreFile()
    // ...

    File getReleaseKeyStoreFile() {
    String keyStoreFile = System.getenv("KEYSTORE_FILE")
    if (keyStoreFile == null || keyStoreFile == "") {
    println 'ERROR: Failed getting release keyStoreFile'
    return null
    }
    return file(keyStoreFile)
    }

    当我运行gradle任务 assembleDebug时,我在Gradle构建消息中得到了这个:
    Failed getting releaseKeyStoreFile
  • 为什么即使构建变体是debug而不是release,也要评估此函数?
  • 是否有一种简单的解决方法来避免这种不良行为?
  • 最佳答案

    您需要区分配置阶段和执行阶段。

    在配置阶段,将评估并执行整个构建脚本。
    在执行阶段仅执行任务 Action (由任务类型定义),doFirstdoLast闭包。

    任务是执行(显式还是依赖)仅会影响执行阶段,但始终会对其进行配置。

    您可以调用每个任务,在android闭包中的配置代码将始终在上执行

    回答第二个问题:您的方法必须是故障安全的(现在是正确的)。将null返回到storeFile属性没有问题,因为只有任务(未执行)会失败。

    另一个提示:您可以简化您的方法。无需检查null 是否为空字符串,您只需检查Groovy真相即可。您也可以使用三元表达式。

    return keyStoreFile ? file(keyStoreFile) : null

    关于gradle - 即使属于不同的构建变体,函数也会执行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43736159/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com