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.