Android StudioのGradle設定で、dependencies・compileに設定している
外部プラグインのバージョンを最新にして、ビルド後にアプリを起動したら、以下のエラーが発生しました。
Caused by: java.lang.IncompatibleClassChangeError: The method 'java.io.File android.support.v4.content.ContextCompat.getNoBackupFilesDir(android.content.Context)' was expected to be of type virtual but instead was found to be of type direct (declaration of 'java.lang.reflect.ArtMethod' appears in /system/framework/core-libart.jar) at com.google.android.gms.iid.zzd.zzeb(Unknown Source) at com.google.android.gms.iid.zzd.(Unknown Source) at com.google.android.gms.iid.zzd. (Unknown Source) at com.google.android.gms.iid.InstanceID.zza(Unknown Source) at com.google.android.gms.iid.InstanceID.getInstance(Unknown Source)
「クラスの変換に互換性が無い」、「android.support.v4」というヒントがあります。
何より直前に行った「外部プラグインのバージョンを最新に」という作業が原因なのは間違いありません。
幸いにも、外部プラグインはソースも提供している物だったので、
早速、外部プラグイン側のGradleを見てみると・・・
dependencies { compile 'com.android.support:support-v4:24.0.0' compile 'com.android.support:appcompat-v7:24.0.0' compile 'com.android.support:recyclerview-v7:24.0.0' compile 'com.android.support:support-annotations:24.0.0' }
となっています。
一方、本体のプロジェクトの方のSupport Libraryのバージョンは・・・
dependencies { compile 'com.android.support:support-v4:23.1.1' compile 'com.android.support:appcompat-v7:23.1.1' compile 'com.android.support:recyclerview-v7:23.1.1' compile 'com.android.support:support-annotations:23.1.1' }
となっています。これが原因ですね。
プラグインの Support Library バージョンと、
本体のプロジェクトの Support Library バージョンが異なっていると、
今回のようなエラーが発生する可能性があります。
本体の方のバージョンを上げれば解決なのですが、
ちょっと影響範囲が不明なので、今回は、外部プラグインのバージョンを元に戻す、という事で対応しました。
一気にバージョン上げると、動かなくなる可能性があるので、
Support Library の更新は、定期的にやりましょう、という事ですね。
android
0 件のコメント:
コメントを投稿