Android Gradleのプラグインには、次のようにminifyEnabled
プロパティとuseProguard
プロパティがあります。
Android {
buildTypes {
debug {
minifyEnabled true
useProguard false
}
release {
minifyEnabled true
useProguard true
}
}
}
これら2つのプロパティの違いは何ですか?または、むしろ、それぞれの意味は何ですか?
tools.Android.com からの引用:
内蔵シュリンク
Android Plugin for Gradleのバージョン2.0には、ProGuardの代わりに使用できる実験的な組み込みのコードシュリンクが付属しています。次のコードスニペットを使用して有効にできます。
Android { buildTypes { debug { minifyEnabled true useProguard false proguardFiles getDefaultProguardFile('proguard-Android.txt') } } }
組み込みのシュリンクはデッドコードのみを削除でき、難読化も最適化も行いません。 ProGuardと同じファイルを使用して構成できますが、難読化または最適化に関連するすべてのフラグを無視します。
ProGuardとは異なり、Instant Runと共に組み込みのシュリンクの使用をサポートしています。プロジェクトによっては、初期ビルドとインストール時間が大幅に短縮される場合があります。コードの変更後に到達可能になったメソッドは、プログラムに新たに追加されたように表示され、インスタントランホットスワップを防ぎます。
minifyEnabled
を有効にすると、コードが最適化され、難読化されます。それの訳は useProguard true
はデフォルトであるため、明示的に設定する必要はありません。
useProguard true
はもう必要ありません。
minifyEnabled
プロパティをtrueに設定すると、R8によるコードの縮小がデフォルトで有効になります。
Android Gradleプラグイン3.4.0以降)を使用してプロジェクトをビルドすると、プラグインはProGuardを使用して実行しなくなりますコンパイル時のコード最適化:代わりに、プラグインはR8コンパイラーと連携して、 公式ドキュメント に従ってタスクを処理します。
R8の代わりにProGuardを使用する場合。この行をgradle.propertiesファイルに追加します
Android.enableR8=false