proguardを使って難読化

ちょっとハマったのでメモ代わりに。

ファイルの指定

project.propertiesに以下の一行を付け加えましょう。検索で引っかかるのproguard.cfgが多いけど、最新だとproguard-project.txtって名前になっているのでこっちを指定してあげないといけない。

proguard.config=proguard-project.txt

除外ファイルの設定

ライブラリとかほかから持ってきたものに関しては基本難読化しないほうがいいので、難読化から外す。以下の様な記載方法

-keep class com.google.gson.** { *; }

GSONを使っている場合

ここが一番ハマったんだけど、GSONを使っている場合は解析用のClassも難読化から外さないとうまく動かない。難読化は中身ごと外さないといけないんで、以下の様な記述が必要。一つづつ指定するのが面倒なのでpackageで一括でやったほうが楽。

# 解析が必要なモデルが含まれているpackageを指定 -keep class jp.exsamples.model.** { *; }

まとめ

modelを難読化したらダメってのはなんとなくわかったんだけど、「-keep class jp.exsamples.model.**」だとファイル名だけしか難読化しなようにならないってのがすごいハマった。動くようにはなったけど記載方法が間違っているような気もする。。。