Android-приложение с использованием отличий Proguard & R8
В моем приложении для Android я использую Google R8
(экспериментальный выпуск пока) и Proguard 6.0.3
... Основываясь на своем опыте, как вы думаете? В чем главное отличие? С R8
мое приложение меньше по размеру, а скорость процесса по сравнению с Proguard
действительно намного лучше. Количество классов при использовании R8
меньше по сравнению с Proguard
.
R8 совместим с существующими правилами Proguard, но игнорирует некоторые из них:
Ignoring option: -optimizationpasses"
Ignoring option: -assumenoexternalreturnvalues"
Ignoring option: -assumenoexternalsideeffects"
например, он также предупреждает об отсутствующих классах, а не об ошибках
AGPBI: {"kind":"warning","text":"Missing class: sun.net.www.protocol.http.HttpURLConnection","sources":[{}],"tool":"D8"}
AGPBI: {"kind":"warning","text":"Missing class: com.sun.net.httpserver.HttpHandler","sources":[{}],"tool":"D8"}
AGPBI: {"kind":"warning","text":"Missing class: org.dbunit.dataset.datatype.DefaultDataTypeFactory","sources":[{}],"tool":"D8"}
AGPBI: {"kind":"warning","text":"Missing class: com.inmobi.ads.InMobiNative$NativeAdListener","sources":[{}],"tool":"D8"}
AGPBI: {"kind":"warning","text":"Missing class: javax.enterprise.util.AnnotationLiteral","sources":[{}],"tool":"D8"}
AGPBI: {"kind":"warning","text":"Missing class: sun.net.www.protocol.http.Handler","sources":[{}],"tool":"D8"}
AGPBI: {"kind":"warning","text":"Missing class: com.flurry.android.ads.FlurryAdNativeListener","sources":[{}],"tool":"D8"}
AGPBI: {"kind":"warning","text":"Missing class: sun.net.spi.nameservice.NameServiceDescriptor","sources":[{}],"tool":"D8"}
AGPBI: {"kind":"warning","text":"Missing class: java.lang.ClassValue","sources":[{}],"tool":"D8"}
В общем, я думаю, что R8
намного лучше, чем Proguard
несмотря на то, что это все еще экспериментальная версия.
Google говорит:
R8 - это замена Proguard для минимизации и оптимизации всей программы.
и я думаю, что это действительно так.
Но как этот инструмент работает в деталях? Что делает главное различие между друг другом и как R8 работает глубоко?
ОБНОВИТЬ:
После обновления до Android Studio 3.3 Canary 2 при использовании R8 кажется, что размер APK не имеет никакой разницы от использования Proguard
PS: извините за мой английский :) :) :)
ОБНОВЛЕНИЕ (14-МАРТ-2019):
Последняя версия R8 на данный момент V. 1.4.71
кажется действительно хорошей, быстрее, чем Proguard, и при сравнении сгенерированных Apk/Bundle из R8 размер меньше. Также DEX-метод также меньше. Я использую R8 Shrinker в производстве, и все кажется очень многообещающим. Отличная работа на самом деле.
ОБНОВЛЕНИЕ (08-АПРЕЛЬ-2019):
Последняя версия R8 на данный момент V. 1.4.79
кажется действительно хорошей, быстрее, чем Proguard, и при сравнении сгенерированных Apk/Bundle из R8 размер меньше. Также DEX-метод также меньше. Я использую R8 Shrinker в производстве, и все кажется очень многообещающим. Отличная работа на самом деле.