2016-03-07 13 views
6

私のアプリを小さくしないと、最大メソッド数に達し、デックスファイルが作成されません。これは、build.gradleminifyを有効にすることで回避できます。しかし、欠点は、コードが難読化されることです。これはリリースビルドでは問題ありませんが、デバッグビルドでは問題ありません。アンドロイドアプリを縮小してもそれを難読化しない

デバッグビルドを小さくするようにgradleに指示する方法はありますが、それを難読化することはできませんか?

答えて

19

はい、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 
2

簡単な解決策は、ビルド構成の内側minifyEnabled trueuseProgaurd falseを追加することです。しかし、コード縮小は推奨されていませんデバッグは公式ドキュメントからビルドしますコードを縮小するとビルド時間が遅くなるので、可能であればデバッグビルドで使用しないでください。 参考https://developer.android.com/studio/build/shrink-code.html

1

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を使用している場合にも当てはまります。

関連する問題