アプリ開発備忘録

PlayStationMobile、Android、UWPの開発備忘録

【Android】Kotlin1.6でのR8(Proguard)の難読化の動作変更への対応

問題

Composeの1.1.0を使用するために、Kotlin1.5.21から1.6.10に変更した所、Jacksonのパースでエラーが発生するようになりました。

どうやら、Kotlin1.6ではkotlinx-metadataが0.2ではなく、0.3が必要なようです。
https://issuetracker.google.com/issues/207397158

build toolの対応

以下のbuild toolを使用しています。

classpath("com.android.tools.build:gradle:7.1.2")

記述時点での最新のr8を指定が必要でした。

classpath("com.android.tools:r8:3.1.51")

Jacksonの設定

最新のr8コンパイラを使用するだけではだめで、更に難読化の設定を変更する必要がありました。
今までのKotlin1.5.21ではkeeppackagenamesの記述は必要では無かったのですが、これを追加しました。

consumer-rules.pro (モジュールに分けているのでこのファイル名)
proguard-rules.pro モジュールとか分けていないならこっち。

# jsonパースに利用してるクラス
-keep class com.example.element.** { *; }

# パースを行っている部分
-keeppackagenames com.example.api.**

-keepclassmembers class * {
     @com.fasterxml.jackson.annotation.* *;
}
-keep class com.fasterxml.** { *; }
-keepnames class com.fasterxml.jackson.** { *; }

おわりに

とりあえず今はこれで動いています。