ちょっと厄介だった。
FusedLocationProviderClientで位置情報を取ろうとしたら以下の理由で落ちた。
java.lang.IncompatibleClassChangeError: Found class com.google.android.gms.location.FusedLocationProviderClient, but interface was expected (declaration of ‘com.google.android.gms.location.FusedLocationProviderClient’ appears in /data/app/fugafuga/hogehoge/base.apk!classes21.dex)
interfaceだと思ってたんだけど!って感じ。なんのこっちゃと。
よくよく調べてみたら、FusedLocationProviderClientクラスが20.0.0→21.0.1でinterface化されたらしい。
自分のアプリ単体でcom.google.android.gms:play-services-locationのバージョンを上げるだけだったら実装も基本的に変更せずに使えて問題ない。
ただ今回は外部ライブラリも使っていて、20.0.0/21.0.1でバージョンが不一致だった。
解決方法はライブラリ側の更新を待つか、バージョンを合わせる方法しか無い気がしたため、ライブラリ側のバージョンに合わせて解決させた。
コメント