Android Обфускация пакета Proguard из библиотеки вызывает столкновение aaaaa - PullRequest
1 голос
/ 13 января 2020

Я пишу 2 Android библиотек. Когда я запутываю оба, обфусцированный код в обоих из них содержит класс с именем a.a.a.a.a, который вызывает следующую ошибку при попытке использовать обе библиотеки в одном приложении:

Дублируемый класс aaaaa, найденный в модулях classes.jar (lib1) и classes.jar (lib2)

Как я могу помешать Proguard запутать первые 3 пакета до:

my.domain.lib1.a.a и my.domain.lib2.a.a?

Редактировать: Запутывание происходит как часть построения библиотек, а не при создании приложения.

1 Ответ

0 голосов
/ 13 января 2020

Эту проблему можно решить, указав -repackageclasses my.domain.lib#.ofs в файле proguard-rules каждой библиотеки, заменив # на 1 и 2 соответственно. Это переместит все запутанные классы в пакет my.domain.lib#.ofs, в то время как все не запутанные классы останутся в своих исходных пакетах, и вы гарантированно не столкнетесь.

Как указано в документации Proguard :

-repackageclasses [имя_пакета]

Указывает переупаковывать все Файлы классов, которые переименовываются, перемещая их в один данный пакет.

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

См. Proguard документацию :

-keeppackagenames [package_filter]

Указывает не запутывать данные имена пакетов.

...