ConsumerProguardFiles vs ProguardFiles

Я пытался создать приложение, которое содержало библиотечный модуль La с proguard, и я заметил, что библиотека не была запутана. Попытался понять, почему. В этот момент это был мой buildType:

 release { minifyEnabled false useProguard true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } 

После некоторого поиска я столкнулся с функцией ConsumerProguardFiles, которая гласит:

Файлы правил ProGuard, которые будут включены в опубликованный AAR.

Эти файлы правил proguard будут затем использоваться любым проектом приложения, который потребляет AAR (если ProGuard включен).

Это позволяет AAR указывать правила сокращения или обфускации исключений.

Это справедливо только для проекта библиотеки. Это игнорируется в проекте Application.

С этим теперь buildType моей библиотеки La является следующим:

 release { minifyEnabled false useProguard true consumerProguardFiles 'proguard-rules.pro' } 

И теперь моя библиотека La использует его правила proguard, а код библиотеки запутан.

Поэтому мои вопросы:

1) В чем причина этого различного поведения. Почему ProguardFiles не запутывает библиотеку, а игнорирует ее?

2) Я предполагаю, что то, что делает ConsumerProguardFiles, заключается в объединении правил библиотеки с основными правилами proguard приложения. Правильно ли это предположение?

3) Короче: используйте proguardFiles для приложений и ConsumerProguardFiles для библиотек. Верный?

Спасибо, что прочитали!

Насколько я понимаю, minifyEnabled false означает, что ProGuard не запускается для минимизации / обфускации вашего библиотечного модуля. Это то, что вы хотите, потому что библиотечный модуль не может знать, какие его части будут использоваться в вашем прикладном модуле.

Вместо этого библиотечный модуль должен предоставить соответствующие правила proguard модулю приложения (через consumerProguardFiles ), а затем модуль приложения будет запускать ProGuard вместе со своими собственными правилами и правилами библиотеки, чтобы минимизировать конечное приложение APK.

Intereting Posts
Как защитить строку в приложении Android? Android – несколько вертикальных прокрутки в горизонтальном прокрутке Проблема с поддержкой Android Drawable (Progress Bar, Switch) В Google App Engine я могу связать токен Google OAuth 2 и токен SACSID, который я использовал с помощью AccountManager Android? Тег Android – view неверен в представлении: null (CursorAdapter и DataBinding) Как работает синхронизация данных и как ее использовать в клиентских приложениях? Android устанавливает цвет фона в TextView в styles.xml Автоматическая загрузка автономного языка распознавания речи на Android Невозможно получить доступ к «удобочитаемым» предпочтениям в Honeycomb Как циклически просматривать представления в представлении Pager для горизонтального просмотра в Android Как отлаживать внешнюю собственную библиотеку в Windows от Android Studio? Android: LinearView с фиксированными размерами виджетов слева и справа и гибким в середине Режим запуска Android-активности и проблемы с отключением Как создать пользовательскую карту на Картах Google? Экран вспыхивает случайным образом при использовании overridePendingTransition на Jelly Bean