Androidのreleaseビルドで、okhttp周りでNoClassDefFoundErrorが起きる
- 2019.06.17
- Android
久しぶりにAndroidコードをアップデートしてビルドしたところ、releaseビルドのみ、NoClassDefFoundエラーで落ちてしまいます。エラーログにはOkHttp3周りで発生しているようです。release(本番)ビルドのみということで、怪しいのは、if (BuildConfig.DEBUG) で分岐させた処理に問題があるか、Proguard/R8の難読化での変換です。
if (BuildConfig.DEBUG)の処理に差異はあったのですが、根本原因はやはりR8でした。ライブラリのバージョンを上げたことで問題であるのか、クラスを足したことで難読化の状態が変わったのかは不明です。
対応は2点です。
- OSS系のproguard-rules.proの設定を入れる
- andoroidxにリファクタしたため、その設定も念の為入れる
- API通信時に利用するモデルクラスを追加する ←おそらくこれが原因
-keep class com.your.package.model.** { *; }
原因はOSS側だと思っていましたが、自分のクラスだったとは。。公式ドキュメントに書いてあったかな?RxJava2も併用しているので、そのへんが問題かもしれません。
-
前の記事
iOS8でContacts.frameworkを参照してエラー 2019.06.02
-
次の記事
モバイルSuica(Apple Pay)でJR発着以外の定期券を買う方法 2019.06.30