proguard-rules.proは分割すると便利


Android開発では便利なライブラリにお世話になることが多いんじゃないかと思います。 そうすると必然的にproguard-rules.proが肥大化します。proguardの設定はただでさえややこしいのに肥大化すると手に負えません。

そんな時はproguard-rules.proを分割しましょう。 Gradle(と言うかGroovy)に不慣れなのでもっとうまい書き方があるかもしれませんが、自分のやり方を紹介します。

まず、proguardの設定ファイル用ディレクトリを作り、その中にライブラリ毎の設定ファイルを作ります。

- app
  - build
  - libs
  - proguard
    - proguard-crashlytics.pro
    - proguard_greenrobot_eventbus.pro
    - proguard-okio.pro
  - src

で、build.gradleはこんな感じで書きます。proguard-rules.proはあえて残していますがなくてもOK。

buildTypes {
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

        FileCollection proGuardFileCollection = files { file('./proguard').listFiles() }
        proGuardFileCollection.each { proguardFiles it }
    }
    debug {
        ...
    }
}

こうするとライブラリ毎に設定を管理できます。

最近はライブラリ側でProguardの設定を内包してくれるものも増えてきました。例えばbutterknifeは2016-04-25リリースの8.0.0で

ProGuard rules now ship inside of the library and are included automatically.

と設定を内包してくれるようになりました。全部こうなってくれると楽なんですけどね。内包するのが主流になることを願いつつ、当面は分割管理でうまく乗り越えましょう。




関連(するかもしれない)記事


おススメ