Стоит ли использовать ProGuard?

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


person Tenfour04    schedule 11.04.2011    source источник


Ответы (2)


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

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

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

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

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

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

person Community    schedule 11.04.2011

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

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

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

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

person chris polzer    schedule 11.04.2011
comment
На самом деле ProGuard не вызывается Eclipse, пока вы не добавите proguard.config=proguard.cfg в файл проекта default.properties. (Вы можете игнорировать предупреждение в файле об удалении ваших изменений; этого не происходит.) См. эта тема для получения дополнительной информации. - person Ted Hopp; 12.04.2011
comment
О, хорошо, я не понял этого в моем последнем проекте, когда я перешел от IntelliJ обратно к eclipse, потратив несколько часов на то, чтобы попытаться запустить и запустить proguard. - person chris polzer; 12.04.2011