Androidのlibraryを作成していて発生するInnerClass annotations are missingの対処
問題
AndroidのLibraryを作っていると必ずといっていいほど、proguardをかけると思います。 ただライブラリを作ったときにinner classを作っているファイルをproguardのkeep対象にいれてjarを作成すると、 そのライブラリ使用時に下記のようなWarn文言が発生してしまっていました。 ググっても全然出てこなかったのでハマりました。
InnerClass annotations are missing corresponding EnclosingMember annotations. Such InnerClass annotations are ignored.
対処法
その際の対処法はproguardの設定ファイル、proguard-rules.proに以下を記載したら治りました。
-keepattributes EnclosingMethod, RuntimeVisibleAnnotations, RuntimeVisibleParameterAnnotations
おまけ
上記エラーに関しては上のattributesだけで対処できますが、そもそもinnerclassを使っている場合は、以下を追加するのがベターですね。 特にAndroidはinner classを多用すると思うので、気をつけたいです。
-keepattributes Exceptions, InnerClasses, MethodParameters, Signature, EnclosingMethod, RuntimeVisibleAnnotations, RuntimeVisibleParameterAnnotations