Модификация опций gradle на лету
Модификация опций gradle на лету
Часто, гугл дает нам попробовать свои недоделанные разработки. Например, новый компилятор ресурсов R8. Он пришел на замену “старого” Proguard, более быстр и теперь занимается еще и вырезанием классов. Включить можно в gradle.properties:
android.enableR8=true
И если у вас в build.gradle что-то вроде:
buildTypes {
release {
...
minifyEnabled true
...
}
}
То узнать о стабильности его работы вы сможете только собрав релизную apk. Если вы это делаете не часто, то проблем не избежать. Например, недавно он вырезал часть полей, аннотаций и классов в нашем проекте. Проделал так аккуратно, что обнаружить это мы смогли только по не загружающейся одной из страниц приложения.
Нам хотелось быстрой сборки, поэтому возникла задача разрешать R8 только в сборке из студии.
Итак, вот как это можно сделать через build.gradle:
boolean isInvokeFromIde = project.properties['android.injected.invoked.from.ide']//определяем сборку из студии
this['android.enableR8'] = isInvokeFromIde//меняем настройку gradle.properties в build.gradle в рантайме
Подмена должна происходить до вызова android-plugin.