我们为了在不同的环境使用不同的配置,所以会在gradle中添加buildtypes来区分环境,并且在下面进行不同的配置,比如:
buildTypes {
dev{
signingConfig signingConfigs.DevConfig
buildConfigField("String", "HOST", "\"http://120.0.0.1:8000/\"")
}
debug {
signingConfig signingConfigs.DebugConfig
buildConfigField("String", "HOST", "\"http://xxxx.xxx.com/\"")
}
release {
minifyEnabled false
signingConfig signingConfigs.ReleaseConfig
buildConfigField("String", "HOST", "\"http://xxxx.xxx.com/\"")
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
但是当我们新增一个buildtypes的时候,刷新gradle会发现出错:
Error:Unable to resolve dependency for ‘xxxx’, Could not resolve project :xxxx
这是因为主项目依赖来一个子项目implementation project(":xxx")
,而这个子项目中没有这个buildtypes。
解决方法有几种:
- gradle降级
- 子项目中添加该buildtypes,内容可以为空
- 添加matchingFallbacks
这里前两种都不完美,第三种是最推荐的方法,修改后如下:
buildTypes {
dev{
signingConfig signingConfigs.MyConfig
buildConfigField("String", "PROFILE_HOST", "\"http://114.215.83.151:10008/\"")
matchingFallbacks = ["debug"]
}
debug {
signingConfig signingConfigs.MyConfig
buildConfigField("String", "PROFILE_HOST", "\"http://xxxx.xxx.com/\"")
}
release {
minifyEnabled false
signingConfig signingConfigs.MyConfig
buildConfigField("String", "PROFILE_HOST", "\"http://xxxx.xxx.com/\"")
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}