Я пытался создать приложение, содержащее библиотечный модуль La
с proguard, и я заметил, что библиотека не была запутана. Попытался понять, почему. В этот момент времени это был мой buildType:
release {
minifyEnabled false
useProguard true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
После некоторого поиска я столкнулся с функцией ConsumerProguardFiles, которая гласит:
Файлы правил ProGuard, которые будут включены в опубликованный AAR.
Эти файлы правил proguard будут затем использоваться любым прикладным проектом который потребляет AAR (если включен ProGuard).
Это позволяет AAR указывать правила сокращения или обфускации исключений.
Это допустимо только для проекта библиотеки. Это игнорируется в приложении проект.
С этим теперь buildType
моей библиотеки La
выглядит следующим образом:
release {
minifyEnabled false
useProguard true
consumerProguardFiles 'proguard-rules.pro'
}
И теперь моя библиотека La
использует его правила proguard, а код библиотеки запутан.
Итак, мои вопросы:
1) В чем причина этого различного поведения. Почему ProguardFiles не запутывает библиотеку, а игнорирует ее?
2) Я предполагаю, что то, что делает ConsumerProguardFiles, заключается в объединении правил библиотеки с основными правилами proguard приложения. Правильно ли это предположение?
3) Короче: используйте proguardFiles для приложений и ConsumerProguardFiles для библиотек. Правильно?
Спасибо, что прочитали время!