跳转至

Android Gradle 读取 local.properties

修改日期:2022-5-24
  • 2022-5-24: 创建文档

本文目标

将一些信息写在local.properties中,gradle读取后,编入BuildConfig

观察工程的local.properties

新建Android App工程的时候,我们发现工程的 .gitignore 里写有/local.properties。 也就是不让git追踪这个文件。

打开local.properties,里面一般写着ndk.dirsdk.dir,例如

local.properties
ndk.dir=/Users/rustfisher/Library/Android/sdk/ndk-bundle
sdk.dir=/Users/rustfisher/Library/Android/sdk
这些配置因开发环境而异,不放进git里也是正常

接下来我们在local.properties添加需要的配置,并将其读取出来

新增配置

现在模拟一些配置

local.properties 新增
vappid=rustfisher
vsid=123
vtoken=AnRFDev

读取

接下来在工程的 build.gradle 中增加读取方法parseLocalProperties

def parseLocalProperties() {
    File file = rootProject.file('local.properties')
    if (file.exists()) {
        InputStream inputStream = rootProject.file('local.properties').newDataInputStream();
        Properties properties = new Properties()
        properties.load(inputStream)

        if (properties.containsKey("vappid")) { // (1)
            ext.vappid = properties.getProperty("vappid") // (2)
        }
        if (properties.containsKey("vsid")) {
            ext.vsid = properties.getProperty("vsid")
        }
        if (properties.containsKey("vtoken")) {
            ext.vtoken = properties.getProperty("vtoken")
        }
    }
}

  1. 先检查是否有这个key,再去读取值
  2. 这里我们将参数存放在ext

在工程 build.gradle allprojects调用上面的方法

allprojects {
    repositories {
        jcenter()
        google()
    }
    parseLocalProperties() // 调用这个方法
}

编译

接下来在模块(例如app模块)的gradle配置进BuildConfig

模块的gradle
    buildTypes {
        debug {
            buildConfigField "String", "V_APPID", "\"" + project['vappid'] + "\""
            buildConfigField "String", "V_SID", "\"" + project['vsid'] + "\""
            buildConfigField "String", "V_TOKEN", "\"" + project['vtoken'] + "\""
        }
        release {
            buildConfigField "String", "V_APPID", "\"" + project['vappid'] + "\""
            buildConfigField "String", "V_SID", "\"" + project['vsid'] + "\""
            buildConfigField "String", "V_TOKEN", "\"" + project['vtoken'] + "\""
        }
    }
恰好buildType里有debug和release,我们这里都给它配置上。当然同一个字段debug和release可以有不同的值

gradle同步一下和编译后,在BuildConfig里能找到V_APPID这些值

做项目的时候,我们可以将一些配置信息写在local.properties里,上传代码的时候不把这些信息传上去。

参考

本站说明

一起在知识的海洋里呛水吧。广告内容与本站无关。如果喜欢本站内容,欢迎投喂作者,谢谢支持服务器。

AndroidTutorial AndroidTutorial 反馈问题 讨论区 最近更新 投喂作者

Ads