2016-05-03 35 views
12

我看到了Android插件搖籃有一個minifyEnabled屬性以及一個useProguard屬性,如下所示:Android插件for Gradle中的「minifyEnabled」和「useProguard」有什麼區別?

android { 
    buildTypes { 
     debug { 
      minifyEnabled true 
      useProguard false 
     } 
     release { 
      minifyEnabled true 
      useProguard true 
     } 
    } 
} 

什麼是這兩個屬性之間的區別?或者,相反,每個的含義是什麼?

+1

你可以在這裏讀到它http://tools.android.com/tech-docs/new-build-system/resource-shrinking –

+0

該文件(在寫這篇評論的時候),包含了什麼'useProguard'屬性@ cricket_007。除非'useProguard'是最近版本的Android插件for Gradle中'shrinkResources'屬性的重命名? –

+0

「資源縮小隻能與縮小代碼一起使用(如ProGuard)」 –

回答

23

tools.android.com引用:2.0的Android插件的用於搖籃船舶

內置收縮器

版用實驗 內置代碼收縮器,其可被用來代替ProGuard的。 內置收縮器支持快速增量運行,旨在加速迭代週期的 。它可以使用下面的代碼片段 啓用:

android { 
    buildTypes { 
     debug { 
      minifyEnabled true 
      useProguard false 
      proguardFiles getDefaultProguardFile('proguard-android.txt') 
     } 
    } 
} 

內置收縮機只能清除死代碼,它不會混淆或優化。可以使用與ProGuard 相同的文件進行配置,但會忽略與混淆或 優化有關的所有標誌。

與ProGuard的,我們一起支持使用內置的收縮機與 即時運行:根據不同的項目,它可能顯著降低 初步構建和安裝時間。代碼更改後變爲可達到 的任何方法都會顯示爲新添加到程序中,並且 會阻止Instant Run熱切換。

+0

非常感謝@Mattia。這解釋了它。因此'minifyEnabled'可以刪除死代碼,但不會混淆或優化。 –

+1

似乎直接抵觸這個答案,這是說minify混淆了一下https://stackoverflow.com/questions/17290023/obfuscation-in-android-studio – pete

+0

已更新鏈接到文檔:https://developer.android。 com/studio/build/shrink-code.html#gradle-shrinker – mxttie

相關問題