私のアプリを小さくしないと、最大メソッド数に達し、デックスファイルが作成されません。これは、build.gradle
のminify
を有効にすることで回避できます。しかし、欠点は、コードが難読化されることです。これはリリースビルドでは問題ありませんが、デバッグビルドでは問題ありません。アンドロイドアプリを縮小してもそれを難読化しない
デバッグビルドを小さくするようにgradleに指示する方法はありますが、それを難読化することはできませんか?
私のアプリを小さくしないと、最大メソッド数に達し、デックスファイルが作成されません。これは、build.gradle
のminify
を有効にすることで回避できます。しかし、欠点は、コードが難読化されることです。これはリリースビルドでは問題ありませんが、デバッグビルドでは問題ありません。アンドロイドアプリを縮小してもそれを難読化しない
デバッグビルドを小さくするようにgradleに指示する方法はありますが、それを難読化することはできませんか?
はい、ProGuardを使用してデバッグビルドを縮小できます。
キーは、デバッグビルドのためにProGuard構成で-dontobfuscate
オプションを使用することです。 build.gradle
で
この設定を使用:
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
debug {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro',
'proguard-rules-debug.pro'
}
}
がproguard-rules.pro
にあなたのリリースProGuardの設定を書き込みます。
リリースとデバッグで同じ設定を使用します。こうすることで、必要なコードが削除されないようにすることができます。そして、デバッグの細分化はビルドを壊すことはありません。
デバッグビルド用にProGuard設定ファイルproguard-rules-debug.pro
を追加します。デバッグにのみ使用されるルールが含まれている必要があります。この場合にのみ追加します。
-dontobfuscate
簡単な解決策は、ビルド構成の内側minifyEnabled true
とuseProgaurd false
を追加することです。しかし、コード縮小は推奨されていませんデバッグは公式ドキュメントからビルドしますコードを縮小するとビルド時間が遅くなるので、可能であればデバッグビルドで使用しないでください。 参考https://developer.android.com/studio/build/shrink-code.html
Tomikの答えは、技術的に正しいですが、それはあなたのビルドのInstant Runを使用してサポートしていません。 official guide on code-shrinkingで指摘したように:
インクリメンタルにアプリを構築しながら縮小コードがあなたに 重要な場合は即時実行で縮小コードを有効にし、GradleのためのAndroidのプラグインに組み込まれている実験的な コードシュリンカーを試してみてください。この シュリンクは、ProGuardとは異なり、Instant Runをサポートします。
ProGuardと同じ 設定ファイルを使用して、Androidプラグインシュリンクャを設定できます。しかし、Androidプラグインシュリンクャー はコードを難読化したり最適化したりせず、使用されていないコードだけを削除します。 デバッグビルド専用に使用し、リリースビルドにProGuard を有効にして、リリースAPKのコードが難読化され、 が最適化されるようにしてください。
だから、適切な解決策は、あなたのデバッグこのように構築設定に次のようになります。あなたのデバッグビルドでコードが最適化されたり、難読化されません
android {
buildTypes {
debug {
minifyEnabled true
useProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}
この方法ではなく、縮小してしまいます。これはInstant Runを使用している場合にも当てはまります。