В чем разница между consumer-rules.pro и proguard-rules.pro в Android? - PullRequest
2 голосов
/ 26 марта 2020

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

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

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

Пожалуйста, сообщите.

1 Ответ

4 голосов
/ 26 марта 2020

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

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 библиотеки - это место, где вы объявляете правила для сторонних зависимостей вашей библиотеки (что считается транзитивная зависимость для вашего модуля приложения / основного модуля) и она не переопределяется правилами модуля приложения.


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

...