#android #dex #android-r8
#Android #dex #android-r8
Вопрос:
Когда я добавляю R8 для уменьшения размера Android dex, он не работает. Я добавил следующую строку:
gradle.properties:
android.enableR8=true
Когда я попытался проанализировать свой код, я не смог найти никакой разницы в размере моего apk.
Это что-то еще, чего мне не хватает?
Должен ли я добавить какие-либо правила proguard и включить progaurd, добавив эти строки:
build.gradle
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
Комментарии:
1. Вы анализируете отладочную сборку?
2. Да, @MarcinOrlowski.
3. Поскольку R8 является заменой ProGuard, вам все равно нужно настроить сжатие, как описано на странице developer.android.com/studio/build/shrink-code . Если вы используете Android Studio 3.4 или более позднюю версию, R8 является программой сжатия по умолчанию, и вам не нужно
android.enableR8=true
.
Ответ №1:
Как предложил sgjesse в своем комментарии, вам необходимо включить минимизацию для всех типов сборок, на которых вы хотите запускать R8.
Например, если вы хотите, чтобы R8 запускался во всех сборках выпуска, используйте minifyEnabled
подобное в сборке на уровне вашего приложения.gradle:
android {
buildTypes {
release {
minifyEnabled true
}
}
}
Если вы хотите, чтобы R8 также запускался в ваших отладочных сборках, тогда вам нужно будет использовать minifyEnabled
и для отладки.
Вы опубликовали эту строку как часть своего вопроса:
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
Использование proguardFiles
таким образом необходимо только в том случае, если у вас есть свои собственные правила, которые вы хотели бы применить в дополнение к тем, которые содержатся в файле по умолчанию proguard-android.txt
.
(Вам все равно нужно использовать android.enableR8=true
в вашем файле gradle.properties, чтобы включить R8 вместо ProGuard, если вы используете версию плагина Android Gradle / Android Studio до версии 3.4)