В чем разница между consumer-rules.pro и proguard-rules.pro в Android?

Я создал модуль в Android, чтобы использовать его в своем основном приложении, и, кажется, есть два из этих файлов consumer-rules.pro и proguard-rules.pro.

Я хотел бы знать следующие вещи

  1. Будет ли весь код модулей скрыт правилами про-стража основных модулей, даже если в модуле не указаны какие-либо правила?
  2. В чем разница между consumer-rules.pro и proguard-rules.pro в Android?
  3. Должен ли я включить minifyEnabled в моем модуле?
  4. Я заметил, что я могу добавить правила proguard для моего модуля в основной модуль, значит ли это, что правила pro-guard в модуле переопределяются в основном модуле?

Пожалуйста, порекомендуйте.

Всего 1 ответ


Я постараюсь ответить на каждый вопрос, хотя и сообщу, если что-то не имеет смысла!

1. Будет ли весь код модулей запутан правилами про-стража основных модулей, даже если в модуле не указаны какие-либо правила?

Запутывание не работает таким образом. Когда вы включаете свойство minify в модуле приложения, оно пытается скрыть код, доступный из модуля приложения, а также его сторонние зависимости, и ваши библиотечные модули будут рассматриваться как сторонние приложения. здесь, но это не касается какой-либо переходной зависимости вашей сторонней зависимости .


2. В чем разница между consumer-rules.pro и proguard-rules.pro в Android?

proguard-rules.pro - это файл, в котором вы объявляете правила, связанные с модулем proguard для вашего модуля и его зависимостями.

consumer-rules.pro - это файл, в котором вы объявляете правила, которые могут применяться к вашему модулю от потребителя (кто бы не использовал ваш модуль / библиотеку в качестве зависимости, обычно используемой разработчиками библиотеки).


3. Должен ли я включить minifyEnabled в моем модуле?

Я бы посоветовал вам это сделать (каждый разработчик должен делать при выпуске apk) , но убедитесь, что все работает так, как ожидалось, потому что базовые классы изменились после применения minify. Это помогает уменьшить размер выходного файла, оптимизировать код, обфусцировать файлы классов и многое другое ...


4. Я заметил, что могу добавить правила proguard для моего модуля в основной модуль, значит ли это, что правила pro-guard в модуле переопределяются в основном модуле?

Нет, в основном, библиотечное правило применяется из файла потребительских правил из самого библиотечного модуля, поэтому, когда вы объявляете эти правила для библиотеки в модуле приложения, оно применяется таким же образом из потребительских правил, что в основном указывает на то, что потребитель должен использовать эти правила при минимизации. ,

proguard-rules.pro библиотеки - это место, где вы объявляете правила для сторонних зависимостей вашей библиотеки (которые рассматриваются как транзитивные зависимости для вашего модуля приложения / основного модуля), и она не переопределяется правилами модуля приложения.


Надеюсь это имеет смысл!


Есть идеи?

10000