直感的に分かりかねる(分からない)のが「com.android.support.*」の内部的な依存関係.
今や, 下位互換の compat が本流となり, support やら v7 やら v4 やら複雑すぎて.
ふと, RecyclerView のバグらしく.
it is fixed internally, so in the next release it should be fine.
なので, やむなくバージョンを 25.1.0 から 25.0.1 に下げる.
すると, AndroidStudio が build.gradle の該当行を色変化で「新バージョンがあるよ」と教えてくるが無視.
ところが, 入れ替わってないようで, 同様の Exception.
java.lang.IllegalArgumentException: Pixel distance must be non-negative
プロジェクト自体 clean しても rebuild しても変化なしで
「バージョンがコンフリクト」
と言われまくる.
解決法
ResolutionStrategy で強制.
ResolutionStrategy - Gradle DSL Version 3.3
configurations.all {
resolutionStrategy {
force "com.android.support:support-v4:$rootProject.supportLibraryVersion"
force "com.android.support:recyclerview-v7:$rootProject.supportLibraryVersion"
force "com.android.support:appcompat-v7:$rootProject.supportLibraryVersion"
force "com.android.support:support-compat:$rootProject.supportLibraryVersion"
force "com.android.support:support-annotations:$rootProject.supportLibraryVersion"
force "com.android.support:design:$rootProject.supportLibraryVersion"
force "com.android.support:cardview-v7:$rootProject.supportLibraryVersion"
force "com.android.support:percent:$rootProject.supportLibraryVersion"
}
}
外部ライブラリからの依存があるようで, androidDependencies に頼りながらシコシコ強制.
25.1.0 が remove されたのはビルド時ログで確認できたが.
グループとかツリーの根本からの指定とかあるのではないかと思いつつ朝.