需求一
在gradle文件中創建N個公共變量,在app和library中可以調用
- 在項目下創建一個文件config.gradle
ext {
// 自定義變量
test_envi = "http://192.168.0.1"
online_envi = "http://www.shuzhuchengfu.com"
// 定義字典
test_map = [
name:"zhangsan",
age:19
]
url = [
debug: "http://192.168.0.1",
release: "http://www.shuzhuchengfu.com"
]
}
- 在項目的主gradle 文件中引入該文件
apply from: "config.gradle"
- 在app的gradle中調用配置的變量如下(library同理)
println("hello gradle")
println "hello gradle"
println "test_envi : ${test_envi}"
println "online_envi : ${online_envi}"
println "rootProject.ext.test_envi : ${rootProject.ext.test_envi}"
println "name : ${test_map.name} , age : ${test_map.age}"
println " ========= "
test_map.each {
k,v -> println("${k} : ${v}")
}
需求二
在BuildConfig類中增加變量
- app下的build.gradle
def url = rootProject.ext.url
android{
buildTypes{
debug{
buildConfigField("String","HTTP_URL","\"${url.debug}\"")
}
release{
buildConfigField("String","HTTP_URL","\"${url.release}\"")
}
}
}
- BuildConfig.java
public final class BuildConfig {
...
// Fields from build type: debug
public static final String HTTP_URL = "http://192.168.0.1";
}
需求三
在清單文件中替代佔位變量
- app下的build.gradle
def url = rootProject.ext.url
android{
buildTypes{
debug{
manifestPlaceholders.put("UMENG_CHANNEL","channel_debug")
}
release{
manifestPlaceholders.put("UMENG_CHANNEL","channel_release")
}
}
}
- 清單文件中替代UMENG_CHANNEL
<application>
<meta-data android:name="UMENG_CHANNEL" android:value="${UMENG_CHANNEL}" />
</application>