settings.gradle.kts里读取properties配置文件或者解析json文件

settings.gradle.kts里进行配置读取可进行动态控制 include 再结合 plugin+includeBuild方式可实现远程依赖和本地module的动态切换

读取配置test.properties

  • 创建一个test.properties

  • 编写配置内容

    EVN_TYPE = Debug
    APP_VERSION_NAME = 12
    APP_VERSION_CODE = 1
    
  • settings.gradle.kts里实现如下代码

    val config = groovy.util.ConfigSlurper().parse(File("${rootProject.projectDir.path}/test.properties").toURL())
    config.entries.joinToString(separator = ";") { "${it.toString()}" }.let {
        println("config path:${rootProject.projectDir.path}")
        println("config:$it")
    }
    config.forEach {entry->
        (entry.value as? Boolean)?.let {
            if (it){
                (entry.key as? String)?.let {
                    include(it.replace("__",":").also {
                        println("config include-> $it")
                    })
                }
            }
        }
    }
    
    

解析json文件

  • 创建配置文件test.json

    [{
    "name":"木木"
    },
    {
    "name":"木夕"
    }
    ]
    
  • settings.gradle.kts里实现如下代码

    
    val configPath = "${rootProject.projectDir.path}/moduleInfo.json"
    println("读取module配置:${configPath}")
    val configString = File(configPath).readText()
    
    val jsonArray = JsonSlurper().parseText(configString) as ArrayList<Map<String,Any>>
    jsonArray.forEach { element ->
        if(element["enableLocal"] == true){
            include(element["localName"].toString().also {
                println("config include-> $it")
            })
        }
    }
    
    
  • json解析会将对象转为map,取值时使用map的操作进行

你可能感兴趣的:(Android,开发,json,android,kotlin,gradle,properties)