Почему minifyEnabled по умолчанию имеет значение false в сборках релизов? - PullRequest
0 голосов
/ 08 мая 2020

В файле build.gradle (app) у нас это по умолчанию:

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
}

Согласно https://developer.android.com/studio/build/shrink-code,

minifyEnabled true сделать код более безопасен (что затрудняет обратное проектирование), а также уменьшает размер в сборке выпуска, которую мы используем для публикации приложения.

Я знаю, что использование minifyEnabled true увеличивает время компиляции, но обычно отладочные сборки используется для разработки и тестирования, которые в любом случае не затрагиваются.

Я ищу то, какие недостатки (например, влияние на производительность) вызывают использование minifyEnabled true во время выполнения. Меня не беспокоит время сборки релизной сборки.

Консоль Google Play также рекомендует нам включить ее, поэтому мне интересно, почему minifyEnabled отключен по умолчанию.

Ответы [ 2 ]

3 голосов
/ 08 мая 2020

Добавив minifyEnabled true в вашу сборку выпуска, вы можете обфускировать код, но в сборках выпуска по умолчанию для него установлено значение false, потому что, если установлено true, для него потребуется написать правила proguard, чтобы сообщить компилятору, какие классы должны игнорироваться при обфускации код. Если для minifyEnabled по умолчанию установлено значение true и разработчик забывает добавить правила proguard, это может привести к сбоям во время выполнения.

Однако установка minifyEnabled на true и shrinkResources на true может уменьшить размер вашего apk.

1 голос
/ 08 мая 2020

Как сказал НИХИЛ АГГАРВАЛ, установка minifyEnabled в true может привести к сбоям во время выполнения.

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

Вам следует добавить классы данных вашей сетевой модели в ProGuard.

Вам следует проверить release построить на нескольких устройствах / эмуляторах с разными версиями Android, чтобы понять, где он может взломать sh. Отладка в сборке release сложна, а при обфускации она становится кошмаром.

Однако после того, как вы установите minifyEnabled = true и избежите сбоев, вы уменьшите размер apk и препятствуете попыткам взлома.

...