Правило Proguard / R8 для исключения папки ресурсов - PullRequest
1 голос
/ 16 мая 2019

Мой проект состоит из основного модуля, за которым следуют другие зависимости модуля.Одной из таких зависимостей является «общее достояние».В «commons» есть папка ресурсов, называемая «flags», скажем.

Если мы заранее знаем, что эта папка никогда не будет использоваться, есть ли способ написать правило proguard для исключения этих конкретных «флагов»"folder?

В моем проекте основной модуль не использует код из модуля" commons ", который специально нацелен на эту папку, но он все еще включен в окончательный пакет.

1 Ответ

1 голос
/ 06 июня 2019

Ни R8, ни Proguard не могут удалить активы, поскольку они даже не передаются в качестве входных данных для этих инструментов.Кроме того, даже если они являются частью входных данных, нетривиально определить, используется актив или нет.По той же причине R8 и Proguard не удаляют ресурсы Java (они могут только изменять свои пути / имена).

Решением вашей проблемы может быть использование DSL в файле приложения build.gradle.А именно, если вы добавите:

android {
  aaptOptions {
    ignoreAssetsPattern "<dir>flags"
  }
}

, окончательный APK не будет содержать никаких файлов в каталоге flags.Помните, что этот параметр не зависит от варианта, и все варианты приложения (например, отладка, выпуск) не будут содержать эти ресурсы.

Надеюсь, это поможет.

...