最近发现项目中出现一个问题:module(A)里的自定义View在其他module(B)里写xml的时候,无法自动补全,但是在A里则可以补全。
经过多方尝试,发现在另一个module(C)里,也是可以自动补全的。
因为A、B、C三个module都是很简单的module,没有什么特别的地方。仔细对比发现:A和C的compileSdkVersion都是24,而B中是区分productFlavors的,local的compileSdkVersion是24,而intl的compileSdkVersion是26(国际化版本,Google Play要求targetSdkVersion改到26,所以compileSdkVersion也跟着改了)。
那是不是这个原因呢?试着把B的compileSdkVersion统一改成24以后,果然就可以自动补全了。或者把A、B、C的compileSdkVersion统一改成26,也能解决问题。
总结一下:
统一所有module中的compileSdkVersion还是比较重要的。这里提供一种可行方式供参考。
在根目录的build.gradle中添加:
ext {
compileSdkVersion: 26,
buildToolsVersion: "24.0.3",
supportLibVersion: "24.2.1",
minSdkVersion : 15,
targetSdkVersion : 22
}
在各个module的build.gradle中添加:
android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
defaultConfig {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
……
}
……
}
dependencies {
compile "com.android.support:support-v4:${supportLibVersion}"
}
这样就统一好所有版本了。要改动version的时候,只要改动一处就好了。