Subscribed unsubscribe Subscribe Subscribe

Islands in the byte stream

Technical notes by a software engineer

Android LibraryはconsumerProguardFilesでProGuardの設定をAARに同梱できる

まあタイトル通りなんですが、このことは意外と知られていないようです。

apply plugin: 'com.android.library'

android {
  defaultConfig {
     consumerProguardFiles 'proguard-rules.pro'
  }
}

というのも、Android Gradle Pluginのユーザーガイドには載っていなくて

更新履歴にのみ載っているという状態なのです。そりゃ知らんやろという感じです。

Glideなどは使っていたりします。

ところでOrmaはannotation processingのタイミング(つまりコンパイル時)でクラス名やフィールド名を抽出しているので、モデルまわりはProGuardの影響を受けません。これはActiveAndroidやGsonなどのようにリフレクションでクラス名やフィールド名を抽出するライブラリと大きく異なる特徴です。

しかし、OrmaはTypeAdapterの一部でリフレクションを使っており、それがProGuardの影響をうけることがわかりました。そこでv1.0.1でProGuard設定ファイルを同梱することにしました。コード自体はエラーメッセージの改善のみなので、v1.0.0でも同じ設定をすれば動作します。