是否可以在 build.gradle 文件中使用某些外部引用或变量?
我的应用程序源文件中有几个 build.gradle 文件,包括用于 module app , module base 和的文件。模块播放器等(取决于代码的结构和包的名称)。
每个文件的内部都有以下或类似的结构:
defaultConfig {
minSdkVersion 23
targetSdkVersion 28
versionCode 1
versionName "1.0.001"
}
有什么方法可以不必在每个文件中更改这些值的方式进行编码吗?是否可以使用一些外部引用或变量,这样我就可以在一个地方编辑 versionCode , versionName 等了。
答案 0 :(得分:3)
在您的项目gradle
中ext {
minSdkVersion = 14
targetSdkVersion = 26
compileSdkVersion = 26
buildToolsVersion = '26.0.2'
// App dependencies
supportLibraryVersion = '26.1.0'
mockitoVersion = '1.10.19'
roomVersion = "1.0.0"
}
在您的 App gradle
中 android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
defaultConfig {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
.
.
}
}
dependencies {
// App's dependencies, including test
compile "com.android.support:appcompat-v7:$rootProject.supportLibraryVersion"
}
答案 1 :(得分:1)
您可以在顶级build.gradle
文件中定义变量,然后在每个模块的build.gradle
中引用这些变量-这样,您将只在一个文件中更改一次。
举一个例子,这是顶级文件https://github.com/Ejstn/android-starter/blob/master/build.gradle 这是模块级文件:https://github.com/Ejstn/android-starter/blob/master/app/build.gradle
您还可以将整个依赖项声明为变量,例如在此Google应用程序中:https://github.com/google/santa-tracker-android/blob/master/build.gradle
答案 2 :(得分:1)
转到File / Project结构/ app / flavors,然后可以获取versionCode,versionName等,然后更改所需的内容并影响所有文件。
答案 3 :(得分:1)
是的。
在项目级别的Gradle配置中(项目根目录中的一个,位于任何模块文件夹之外),您可以在buildscript
块下定义变量:
ext.thisVersionCode = 1
ext.thisVersionName = "1.0.001"
然后,您应该能够从模块级配置中引用它们:
defaultConfig {
versionCode = rootProject.ext.thisVersionCode
versionName = rootProject.ext.thisVersionName
}