Я бы попробовал ответить на каждый вопрос, хотя и дал бы знать, если что-то не имеет смысла!
1. Будет ли весь код модулей обфусцирован правилами основных правил pro-guard основных модулей, даже если модуль не задает никаких правил?
Обфускация не работает таким образом. Когда вы включаете свойство minify в модуле приложения, оно пытается скрыть код, доступный из модуля приложения, а также его сторонние зависимости, и ваши библиотечные модули будут рассматриваться как сторонние приложения. здесь, , но это не касается транзитивной зависимости вашей сторонней зависимости .
2. В чем разница между consumer-rules.pro и proguard-rules.pro в Android?
proguard-rules.pro - это файл, в котором вы объявляете правила, относящиеся к модулю proguard для вас и его зависимостям.
consumer-rules.pro - это файл, в котором вы объявляете правила, которые могут применяться к вашему модулю от потребителя будет использовать ваш модуль / библиотеку в качестве зависимости, обычно используемой разработчиками библиотеки.)
3. Должен ли я включить minifyEnabled в моем модуле?
Я бы посоветовал вам (каждый разработчик должен делать при выпуске apk) , но убедитесь, что все работает как положено потому что базовый classes.dex изменяется после применения minify. Это помогает уменьшить размер выходного файла, оптимизировать код, обфусцировать файлы классов и многое другое ...
4. Я заметил, что я могу добавить правила proguard для моего модуля в основной модуль, значит ли это, что правила pro-guard в модуле переопределены в главном модуле?
Нет, в основном библиотека Правило применяется из файла consumer-rules из самого библиотечного модуля, поэтому, когда вы объявляете эти правила для библиотеки в модуле приложения, оно применяется так же, как из consumer-rules , что в основном является указанием этот потребитель должен использовать эти правила при минимизации.
proguard-rules.pro библиотеки - это место, где вы объявляете правила для сторонних зависимостей вашей библиотеки (что считается транзитивная зависимость для вашего модуля приложения / основного модуля) и она не переопределяется правилами модуля приложения.
Надеюсь, это имеет смысл!