Androidで「java.lang.AssertionError java.lang.NoSuchFieldException」が出たときの対処法をご紹介します。
環境
Android Studio 4.1.3
kotlin 1.4.32
java 1.8.0_241
現象
Androidアプリの評価のため社内リリース版を公開して使用していると、ある箇所でアプリが強制終了しました。
そこでデバッグを有効にしてログを確認してみると以下のエラーが出力されていました。
java.lang.AssertionError java.lang.NoSuchFieldException: Open
「Open」は自分で定義したenumクラスの定数の一つです。
デバッグ版ではこのようなエラーが出ていなかっため、気づかずに社内リリースしていたようです。
解決法
こちらの質問の回答通りにproguard-rules.proに以下のコードを追加すると問題なく動作するようになりました。
-keepclassmembers enum * { *; }
参考
・https://developer.android.com/studio/build/shrink-code?hl=ja
・https://qiita.com/boohbah/items/7372b29637d28e6d671c
・https://stackoverflow.com/questions/57790047/getting-java-lang-assertionerror-java-lang-nosuchfieldexception-http-1-0