2016-07-04 14 views
0

テストの目的で、私のアプリにいくつかの開発者設定があります。私は時にはビューライブラリを組み込み、最も効果的/最速のものを試します。私。ピカソ/グライド/イオンのような画像ローダーライブラリ...Proguard - ライブラリを除外

私はどの画像ローダーを使用するかという変数があります。ユーザーはそれを変更することはできませんので、私は次のようになります。

  • 私はいくつかの新しいものを持って多分明日、私のプロジェクトからライブラリを削除(またはアウト含まれており、すべてのクラスコメント)にしたくありませんテストするために、私は私が私のリリースビルドは完全にインポートされたライブラリを除外したい再びライブラリが含まれており、再び
  • そのための余分なコードを記述する必要はありません、

を使用されていないことを、私はこれが可能だと思います私が投稿した3つの画像ライブラリに基づいて、これがどのように機能するのかをproguardを介して誰かに教えてもらえますか?それとも、プロガードではこれはできないのですか?

編集

私はC++ #ifdefかそこら(私はこれはしかしJavaでは不可能だと思います)のような例を何かのためだけでなく他のソリューションに開いています。または、いくつかのプリプロセッサソリューション、おそらくプラグイン経由ですか?

は、あなたが選択的に関連するライブラリーを保つルールを追加することができますbuildType構成で

project.ext { 
    picassoEnabled = true 
    glideEnabled = false 
    ... 
} 

次に、各画像の読み込みlibのためにあなたのbuild.gradleでプロパティを定義します:

答えて

1

は、次の操作を行うことができ

buildTypes { 
    release { 
    proguardFile getDefaultProguardFile('proguard-android.txt') 
    proguardFile 'proguard-project.txt' 
    if (project.picassoEnabled) { 
     proguardFile 'proguard-picasso.txt' 
    } 
    if (project.glideEnabled) { 
     proguardFile 'proguard-glide.txt' 
    } 
    } 
} 

ライブラリーのproguard構成ファイルには、ライブラリーを保管するための規則があります。

-keep class com.squareup.picasso.** { *; } 

今、重要な部分は、ProGuardのは、デフォルトでは(明示的に保たれている1を除く)すべてのライブラリを削除なるように、アプリケーションから明示的に各ライブラリを参照するのではなく、リフレクションを使用しないことであろう。

+0

私は反射部分を見て初めて、これはかなり良かった...それは私のための選択肢ではありません...しかし、それでも解決策です。私は本当に、変数を介してコードのパッセージを完全にコメントアウトするために、C++スタイルの '#ifdef'のようなものが好きです... – prom85

関連する問題