R8 с optimizedResourceShrinking не удаляет неиспользуемые ресурсы из библиотеки, которую я использую. Как мне от них избAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 R8 с optimizedResourceShrinking не удаляет неиспользуемые ресурсы из библиотеки, которую я использую. Как мне от них изб

Сообщение Anonymous »

Похоже, что классы сохраняются AAPT, как я вижу по правилам R8 (ProGuard), которые он генерирует, и директиве -whyareyoukeeping. Однако я не знаю, как сказать AAPT не сохранять классы или почему он вообще их сохраняет. Но вот вся история.
Я хочу иметь Snackbar в приложении, поэтому я импортировал библиотеку материалов, которую раньше не использовал. При обычном isShrinkResources = true и отсутствии дополнительного кода (просто импорт библиотеки) размер APK вырос на 25%. Я попробовал режим строгого сжатия, который действительно помог, и даже некоторые общие правила удаления, но даже несмотря на следующее, я все еще мог видеть очень много неиспользуемых виджетов, таких как чипы, присутствующие в APK.

Код: Выделить всё

    // app/src/main/res/raw/keep.xml


Я пытался провести расследование, но безуспешно. -whyareyoukeeping указывает на правило сохранения в aapt_rules.txt, которое гласит:

Код: Выделить всё

-keep class com.google.android.material.chip.Chip { (android.content.Context, android.util.AttributeSet); }
В файле app/build/outputs/mapping/release/resources.txt есть ссылки на чипы, вот некоторые из них, и я надеюсь, что нашел примеры для всех типов записей в этом огромном выводе:

Код: Выделить всё

Marking attr:chipStyle:2130968776 reachable: referenced from in_memory_r8_base_classes0.dex
Marking style:Widget_MaterialComponents_Chip_Action:2131952698 reachable: referenced from in_memory_r8_base_classes0.dex
...
@myapppackage:animator/m3_chip_state_list_anim : reachable=false
@myapppackage:integer/m3_chip_anim_duration
@myapppackage:dimen/m3_chip_checked_hovered_translation_z
...
The root reachable resources are:
attr:chipStyle:2130968776
string:mtrl_chip_close_icon_content_description:2131886281
style:Widget_MaterialComponents_Chip_Action:2131952698
...
Unused resources are:
animator:m3_chip_state_list_anim:2130837518
Все это не дает точного ответа на вопросы:
  • Почему AAPT настаивает на сохранении ресурсов? и
  • Как я могу избавиться от них, индивидуально или массово?
(Используя Gradle 8.13, библиотеку материалов 1.12.0 и android.r8.optimizedResourceShrinking=true.)

Подробнее здесь: https://stackoverflow.com/questions/797 ... from-a-lib
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»