ライブラリ モジュールの開発に関する考慮事項 の ライブラリ モジュールには独自の ProGuard 構成ファイルを含めることができる に記載がある通り、ライブラリ側がProGuardルールファイルを内包している場合があります。( consumerProguardFiles
)
そういうライブラリを使っている場合、最終的に生成されるProGuardルールファイルは、それぞれのProGuardルールファイルがマージされたものになります。
今回は、そのマージされたProGuardルールファイルを確認する方法を記載します。
printconfiguration
を使う
方法は簡単で、アプリ側で使っている proguard-rules.pro
に
-printconfiguration proguard-rules-full.pro
と記述し、 minifyEnabled true
な状態でビルドすると proguard-rules-full.pro
というファイル名で出力することができます。
参考:https://developer.android.com/studio/build/shrink-code?hl=ja#configuration-files
(おまけ)メンテナンスがしやすい
出力されたProGuardルールファイルは、単純に各ProGuardルールファイルを結合しただけのようでした。
そのため、例えばあるライブラリを使っていて、そのライブラリのルールをアプリ側に記述していたが、実はライブラリが内包しているProGuardルールファイルにそもそも記述されているので不要、といったこともわかるため、ProGuardルールファイルのメンテナンスがしやすいです。
(ProGuardルールファイルは一度書くと、なかなか変更などしないですよね。)
例えば「Glide」の場合
画像ライブラリで有名なGlideですが、GitHubのREADMEに ProGuard の記述があるため、特に調べることなく、アプリ側のProGuardルールファイルにルールをコピペしがちです。
しかしながら、 build.gradleを見てみるとconsumerProguardFiles の記述があり、 proguard-rules.txt を覗いていると、READMEに書かれているルールとほぼ同じもの 1 が書かれているため、アプリ側のProGuardルールファイルにルールを書く必要がないことがわかったりしました。
-
正確には
for DexGuard only
のところがコメントアウトされていました。 ↩