Подтвердить что ты не робот

Предоставляет ли Proguard обеспечение одного и того же сопоставления, если ни один источник не изменился?

В случае, если я

  • создать проект
  • очистить все двоичные файлы
  • постройте его снова (исходный/ресурс и т.д. не изменился).

Предоставляет ли Proguard один и тот же файл mapping.txt?

4b9b3361

Ответ 1

ProGuard детерминирован: для одного и того же входа он будет генерировать тот же результат.

Однако есть одна тонкость: если операционная система перечисляет входные файлы в каталоге (особенно файлы классов, которые не находятся внутри архива) в другом порядке, тогда они могут обрабатываться в другом порядке, а выход может быть отличается.

Ответ 2

Это может произойти, но я не думаю, что proguard гарантирует это.

Я нашел это в документации Proguard, которая позволит вам повторно использовать файл mapping.txt, чтобы избежать изменений в сопоставлениях

-applymapping filename

Указывает на повторное использование заданного сопоставления имен, которое было распечатано в предыдущем запуске Profur. Классы и члены класса, перечисленные в файле сопоставления, получают имена, указанные вместе с ними. Классы и члены класса, которые не упомянуты, получают новые имена. Отображение может относиться к классам ввода, а также к библиотечным классам. Этот параметр может быть полезен для инкрементной обфускации, то есть обработки надстроек или небольших патчей к существующей части кода. Если структура кода существенно изменится, ProGuard может распечатать предупреждения о том, что применение сопоставления вызывает конфликты. Вы можете уменьшить этот риск, указав опцию -useuniqueclassmembernames в обоих запусках обфускации. Допускается только один файл сопоставления. Применяется только при запутывании.

Ответ 3

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