Я хочу исключить некоторые пути к файлам из ProGuard. примерcom.myapp.customcomponents
Как я могу это сделать? Я ненавижу ставить флаги -keep для каждого файла пользовательского компонента, который у меня есть в этом каталоге.
Я пробовал следующее, но это не работает:
-keep public class com.myapp.customcomponents.*
Добавьте следующую строку в конец конфигурации ProGuard:
Соответственно замените имя пакета, при этом пакет
com.facebook
будет исключен из ProGuard.источник
{ *; }
значит?Многие люди, кажется, рекомендуют
-keep class com.myapp.customcomponents.** { *; }
как способ исключить путь из обработки. Посмотреть здесь:Проблема с этим решением заключается в том, что все еще происходит некоторый уровень обфускации, который может нарушить ваш код. Вы можете увидеть карту в распечатке карты:
Решение, которое я выбрал, представляет собой двухэтапный процесс. Во-первых, используйте
injars
с фильтром, чтобы выбрать путь к пакету, который я хотел бы обработать. Можно добавить другие пути к пакетам как библиотеки.Во-вторых, объедините обработанную банку с исходной, но только те пути, которые были пропущены.
В результате получается объединенный jar, представляющий собой комбинацию обработанного пути пакета и пропущенных путей. Это упражнение недопустимо, если кто-то может предоставить способ полностью пропустить обработку определенных путей (чего я не нашел).
источник
Что сработало для меня с использованием Android Studio 4.0:
Двойные звездочки (**) в других ответах у меня не работали. Я также пробовал вышеуказанную конфигурацию с R8, работает нормально.
источник