Android xml中自定義View無法自動補全的一種解決方法
最近發現專案中出現一個問題:module(A)裡的自定義View在其他module(B)裡寫xml的時候,無法自動補全,但是在A裡則可以補全。

無法補全xml
經過多方嘗試,發現在另一個module(C)裡,也是可以自動補全的。

可以自動補全xml
因為A、B、C三個module都是很簡單的module,沒有什麼特別的地方。仔細對比發現:A和C的compileSdkVersion都是24,而B中是區分productFlavors的,local的compileSdkVersion是24,而intl的compileSdkVersion是26(國際化版本,Google+Play/">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的時候,只要改動一處就好了。