首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据当前版本/风格设置设置值

根据当前版本/风格设置设置值
EN

Stack Overflow用户
提问于 2016-01-25 04:45:08
回答 1查看 367关注 0票数 0

我需要在我的构建脚本中设置一个基于我正在构建的风格的值。下面是我当前build.gradle的相关部分

代码语言:javascript
复制
android {
    // ...
    productFlavors {
        lite {
            applicationId "bbct.android"
            versionCode 15
            versionName "0.6.2"
        }
        premium {
            applicationId "bbct.android.premium"
            versionCode 14
            versionName "0.6.2"
        }
    }
}

testdroid {
    mode 'FULL_RUN'
    projectName 'BBCT Lite'

    fullRunConfig {
        instrumentationRunner = 'android.support.test.runner.AndroidJUnitRunner'
    }
}

现在,我想根据构建的是lite还是premium来将testdroid.projectName设置为不同的值。我尝试了以下几种方法:

代码语言:javascript
复制
android {
    // ...
    productFlavors {
        lite {
            applicationId "bbct.android"
            versionCode 15
            versionName "0.6.2"
            testdroid.projectName = "BBCT Lite" // here
        }
        premium {
            applicationId "bbct.android.premium"
            versionCode 14
            versionName "0.6.2"
            testdroid.projectName = "BBCT Premium" // and here
        }
    }
}

但是,这会将testdroid.projectName无条件地分配给"BBCT Premium"。(我假设是因为最后执行的行将其设置为此值。)如何根据我的构建风格将testdroid.projectName设置为正确的值?

EN

回答 1

Stack Overflow用户

发布于 2016-01-25 05:00:38

正如在注释中所解释的,在构建buildscript时,这两个术语都会被计算,而后一个术语会设置该值。

为此,您可以使用每个任务/项都具有的ext对象。如果您为其赋值,则可以稍后在实际构建中执行正确的步骤。

下面是一种方法,当然还有一种更好的方法,使用afterEvaluate或其他方法,但这在我类似的用例中也适用。

代码语言:javascript
复制
android {
    productFlavors {
        lite {
            applicationId "bbct.android"
            versionCode 15
            versionName "0.6.2"
            ext.projectName = "BBCT Lite" // here
        }
        premium {
            applicationId "bbct.android.premium"
            versionCode 14
            versionName "0.6.2"
            ext.projectName = "BBCT Premium" // and here
        }
    }
}
preBuild << {
    android.applicationVariants.all { variant ->
        variant.productFlavors.each { flavor ->
            resValue "string", "projectName", flavor.ext.projectName
            testdroid.projectName = flavor.ext.projectName
        }
    }
} 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34981241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档