web-dev-qa-db-ja.com

Android Library Projectsを使用したProGuardのセットアップ

私のAndroidプロジェクトのプロガードをセットアップしようとしています。私のアプリケーションプロジェクトにはコードがほとんどありませんが、コードの大部分と他の外部jarを含むライブラリプロジェクトを参照しています。そうは言っても、これを考慮に入れるためのプロガードの設定方法はわかりません。現在のところ、私のプロガード構成ファイルはAndroid ProGuardサイト)の例 です。 。探し回っていましたが、ライブラリプロジェクトでのプロガードの使用に関するドキュメントは多くありませんでした。jarファイルのみです。私はプロガードの初心者なので、正しい方向へのプッシュはすばらしいと思います。ありがとうございます。

30
user1132897

編集

@BornToCodeが指摘するように、別の回答(最初に投稿された here )は、ライブラリプロジェクトがProguardによってどのように処理されるかをよりよく説明しています。さらに、この参照された質問は、私の元の回答にリンクされている質問よりも興味と全体的な評判が高くなっています。 引用:

ライブラリプロジェクト自体はProGuardを実行しないため、構成を使用しません。

アプリケーションプロジェクトは、参照されるライブラリを含むコードベース全体を難読化するため、アプリケーションコードとライブラリコードの適切な構成が必要です。


古い回答(間違っていない、おそらく最善のアプローチではない)

ライブラリプロジェクトは、Eclipseでプロジェクトをそのjarにリンクするためのより便利な方法です。プロジェクトをビルドするとき、コンパイラーから見えるライブラリープロジェクトの唯一のコンポーネントはjarファイルです。

そのjarを難読化する場合は、この投稿を確認してください。

EclipseでProguardを使用してAndroidライブラリ(.jarファイル)を難読化する方法

18
Phil

ライブラリのプロガード設定を指定することは理にかなっています(どのライブラリファイルを難読化しないでください)ライブラリプロジェクト内。ライブラリモジュールのプロガード構成をアプリケーションに含める必要があることもわかりました。これを行うために、ライブラリのbuild.gradledefaultConfigセクションに以下を追加しました

apply plugin: 'com.Android.library'

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

次に、重要なシリアル化されたクラスの名前を保持するように、ライブラリモジュールのproguard-rules.proファイルを構成しました。

参照 consumerProguardFiles gradle reference

12
Jon