12

Я вижу, что Android плагин для Gradle имеет minifyEnabled собственности, а также useProguard собственности следующим образом:В чем разница между «minifyEnabled» и «useProguard» в Android Plugin for Gradle?

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' является переименованием свойства' shrinkResources' в последних выпусках Android Plugin for Gradle? –

+0

«Сокращение ресурсов работает только в сочетании с сокращением кода (например, ProGuard)» –

ответ

23

Цитируя tools.android.com:

Встроенный Shrinker

версии 2.0 Android Plugin для Gradle судов с экспериментальной встроенным кодом Shrinker, который может быть использован вместо ProGuard. Встроенная усадка поддерживает быстрые инкрементные прогоны и предназначена для ускорения циклов итераций . Она может быть включена с помощью следующего кода сниппет:

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

Встроенный Shrinker можно только удалить мертвый код, он не затемнять или оптимизировать. Он может быть настроен с использованием тех же файлов, что и ProGuard, но будет игнорировать все флаги, связанные с обфускацией или .

В отличие от ProGuard, мы поддерживаем с помощью встроенного в Shrinker вместе с 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