Стоит ли использовать ProGuard? - PullRequest
15 голосов
/ 12 апреля 2011

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

Ответы [ 2 ]

17 голосов
/ 12 апреля 2011

Я бы порекомендовал ProGuard. Даже без запутывания (которое может значительно сократить имена, используемые в пуле констант), оно может удалить «мертвый код» (неиспользуемые методы) из используемых библиотек и т. Д. (Это также можно использовать для удобного объединения всего вместе).

Требуется немного возиться, чтобы "поправиться", особенно если есть динамически загружаемые классы - но очень рекомендуется. Однако реальная выгода от экономии места «зависит» от того, что можно устранить, и, как правило, дает больше внешних библиотек.

Теперь, для запутывания - он делает столько же, сколько любой обфускатор: делает «декомпиляцию» кода в вещи со значимыми именами невозможным.

Запутывание не сохранит ваш супер-секретный алгоритм и не скроет ваши закрытые ключи, хотя: если JVM (или Dalvik после преобразования) должны это понимать, то и декомпилятор, и любой, кто действительно * 1010 может это понять * хочет получить доступ может. Ваш код может быть даже поднят в форме байт-кода и использован просто через. рефлексия (представьте себе ужасный API с нулевой документацией): любой, кто действительно хочет получить доступ, может. Но, возможно, запутывание сделает эту задачу невыполнимой по цене / выплате: «Это зависит».

Не хотите переводить трассировки стека? Просто: не используйте его для отладки (не так полезно для получения следов от пользователей) или не включайте запутывание (другие преимущества все еще применяются); -)

Удачного кодирования.

2 голосов
/ 12 апреля 2011

Pro guard, по крайней мере, позволяет вам сделать приложение как можно меньше по размеру файла!

Это настоящий плюс.

Он автоматически используется при разработке и компиляции с помощью eclipse, при условии, что у вас есть proguard.config=proguard.cfg в файле проекта default.properties.

Это тоже реальный плюс.

...