Gradle:从外部文件中读取属性

Héc*_*tor 3 android gradle android-gradle-plugin

version.properties在Android项目中创建了一个包含以下数据的文件:

version.code=1
version.name="1.0.0"
Run Code Online (Sandbox Code Playgroud)

现在我想以build.gradle这种方式在文件中使用这个属性:

android {

    ...
    defaultConfig {
        ...
        versionCode project.property('version.code')
        versionName project.property('version.name')
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

但是,显然,它没有找到属性.如何将此文件添加到classpath以便我可以使用其属性?

Gab*_*tti 13

要从通用属性文件中读取值,您可以使用以下内容:

def Properties props = new Properties()
def propFile = file('../version.properties')   //pay attention to the path
def versionCode;
if (propFile.canRead()){
    props.load(new FileInputStream(propFile))

    if (props!=null && props.containsKey('version.code') && props.containsKey('version.name')) {

        versionCode = props['version.code']
        ....

   }
}
Run Code Online (Sandbox Code Playgroud)

使用标准, gradle.properties您可以:

VERSION_NAME=1.2.1
Run Code Online (Sandbox Code Playgroud)

然后在你的build.gradle你可以使用:

versionName project.VERSION_NAME
Run Code Online (Sandbox Code Playgroud)

另一种方法是在.gradle文件中设置这些值(例如在顶级文件中)

ext {
  myVersionCode =  ...
  myVersionName =  ...
}
Run Code Online (Sandbox Code Playgroud)

然后在您的module/build.gradle文件中,您可以:

versioneCode   rootProject.ext.myVersionCode
Run Code Online (Sandbox Code Playgroud)