DroidKaigi2016のyarakiさんの講演が目から鱗の内容だったのですが、未だに浸透していない感じがするので拡散の意味も込めて投稿します。
SupportLibraryのバージョンは合わせる必要がある
GradleでSupportLibraryを導入するサンプルを見ると、利用するバージョン番号がリテラルで記載されている例が多く見られます。
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.2.0'
compile 'com.android.support:design:23.2.0'
}
この記述でも問題なく動作するのですが、
実はSupportLibraryは異なるバージョンを組み合わせた利用を想定していないという仕様らしいです。
※ソースは上記講演でしたがスライドには記載されていないようです。。。
そのため、バージョンアップのタイミングなどで修正漏れなどでバージョン番号のズレが発生すると正しく動作しない場合があるようです。
SupportLibraryのバージョンを統一する
SupportLibraryのバージョンがズレないようにするためにはSupportLibraryのバージョン番号を変数で一元化することで解決できます。
ext {
SupportLibVersion = '23.2.0'
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:${SupportLibVersion}'
compile 'com.android.support:design:${SupportLibVersion}'
}
リテラルによる管理は無駄なコストとなるので皆さんもこの機会にSupportLibraryのバージョン番号を一元管理してみてはいかがでしょうか?
【参考】DroidKaigi 2016 DAY2 基調講演 第1部「Support Libraryノススメ」#12
http://yaraki.github.io/slides/droidkaigi2016/index.html#12