我们为了在不同的环境使用不同的配置,所以会在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' } }