Правило Proguard/R8 для исключения папки ресурсов
Мой проект состоит из основного модуля, за которым следуют другие зависимости модуля. Одной из таких зависимостей является "общее достояние". В "общем" есть папка активов, скажем, "флаги".
Если мы заранее знаем, что эта папка никогда не будет использоваться, есть ли способ написать правило proguard для исключения этой конкретной папки "flags"?
В моем проекте основной модуль не использует какой-либо код из модуля "commons", который специально нацелен на эту папку, но он все еще включен в окончательный пакет.
0 ответов
Ни R8, ни Proguard не могут удалять активы, поскольку они даже не передаются в качестве входных данных в эти инструменты. Кроме того, даже если они являются частью входных данных, нетривиально определить, используется ли актив или нет. По той же причине R8 и Proguard не удаляют ресурсы Java (они могут только изменять свой путь / имена).
Решением вашей проблемы может быть использование DSL в приложении build.gradle
файл. А именно, если добавить:
android {
aaptOptions {
ignoreAssetsPattern "<dir>flags"
}
}
окончательный APK не будет содержать файлов в flags
каталог. Имейте в виду, что этот параметр не зависит от варианта, и все варианты приложения (например, отладка, выпуск) не будут содержать эти активы.
Надеюсь, это поможет.