LoginSignup
9
0

More than 3 years have passed since last update.

【R8/ProGuard】マージ後のProGuardルールファイルを確認する方法

Posted at

ライブラリ モジュールの開発に関する考慮事項ライブラリ モジュールには独自の ProGuard 構成ファイルを含めることができる に記載がある通り、ライブラリ側がProGuardルールファイルを内包している場合があります。( consumerProguardFiles

そういうライブラリを使っている場合、最終的に生成されるProGuardルールファイルは、それぞれのProGuardルールファイルがマージされたものになります。

今回は、そのマージされたProGuardルールファイルを確認する方法を記載します。

printconfiguration を使う:bulb:

方法は簡単で、アプリ側で使っている 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

(おまけ)メンテナンスがしやすい:wrench:

出力されたProGuardルールファイルは、単純に各ProGuardルールファイルを結合しただけのようでした。

そのため、例えばあるライブラリを使っていて、そのライブラリのルールをアプリ側に記述していたが、実はライブラリが内包しているProGuardルールファイルにそもそも記述されているので不要、といったこともわかるため、ProGuardルールファイルのメンテナンスがしやすいです。
(ProGuardルールファイルは一度書くと、なかなか変更などしないですよね。:innocent:

例えば「Glide」の場合

画像ライブラリで有名なGlideですが、GitHubのREADMEに ProGuard の記述があるため、特に調べることなく、アプリ側のProGuardルールファイルにルールをコピペしがちです。

しかしながら、 build.gradleを見てみるとconsumerProguardFiles の記述があり、 proguard-rules.txt を覗いていると、READMEに書かれているルールとほぼ同じもの 1 が書かれているため、アプリ側のProGuardルールファイルにルールを書く必要がないことがわかったりしました。


  1. 正確には for DexGuard only のところがコメントアウトされていました。 

9
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
0