最近發(fā)現(xiàn)項(xiàng)目中出現(xiàn)一個(gè)問(wèn)題:module(A)里的自定義View在其他module(B)里寫(xiě)xml的時(shí)候,無(wú)法自動(dòng)補(bǔ)全,但是在A里則可以補(bǔ)全。

經(jīng)過(guò)多方嘗試,發(fā)現(xiàn)在另一個(gè)module(C)里,也是可以自動(dòng)補(bǔ)全的。

因?yàn)锳、B、C三個(gè)module都是很簡(jiǎn)單的module,沒(méi)有什么特別的地方。仔細(xì)對(duì)比發(fā)現(xiàn):A和C的compileSdkVersion都是24,而B(niǎo)中是區(qū)分productFlavors的,local的compileSdkVersion是24,而intl的compileSdkVersion是26(國(guó)際化版本,Google Play要求targetSdkVersion改到26,所以compileSdkVersion也跟著改了)。
那是不是這個(gè)原因呢?試著把B的compileSdkVersion統(tǒng)一改成24以后,果然就可以自動(dòng)補(bǔ)全了。或者把A、B、C的compileSdkVersion統(tǒng)一改成26,也能解決問(wèn)題。
總結(jié)一下:
統(tǒng)一所有module中的compileSdkVersion還是比較重要的。這里提供一種可行方式供參考。
在根目錄的build.gradle中添加:
ext {
compileSdkVersion: 26,
buildToolsVersion: "24.0.3",
supportLibVersion: "24.2.1",
minSdkVersion : 15,
targetSdkVersion : 22
}
在各個(gè)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}"
}
這樣就統(tǒng)一好所有版本了。要改動(dòng)version的時(shí)候,只要改動(dòng)一處就好了。