Из того, что я видел и читал, если кто-то действительно хочет реконструировать ваше программное обеспечение или декомпилировать его, ProGuard не остановит его. Но является ли это хотя бы скромным сдерживающим фактором? Я не уверен, стоит ли потом переводить мои трассировки стека.
Стоит ли использовать ProGuard?
Ответы (2)
Я бы порекомендовал ProGuard. Даже без обфускации (что позволяет значительно сократить имена, используемые в пуле констант) он может удалять "мертвый код" (неиспользуемые методы) используемых библиотек и т.д. (Его также можно использовать для удобного слияния всего вместе).
Нужно немного повозиться, чтобы "поправиться", особенно. если есть динамически загружаемые классы - но очень рекомендуется. Однако фактическая выгода от экономии места «зависит» от того, что можно исключить, и обычно достигается за счет большего количества внешних библиотек.
Теперь об запутывании — он делает столько же, сколько и любой запутывающий: делает невозможным «декомпиляцию» кода в вещи с осмысленными именами.
Обфускация не спасет ваш сверхсекретный алгоритм и не скроет ваши закрытые ключи: если JVM (или Dalvik после преобразования) должен понимать его, то и декомпилятор, и любой, кто действительно этого хочет получить доступ можно. Ваш код можно даже поднять в виде байт-кода и использовать просто через. отражение (только представьте ужасный API с нулевой документацией): любой, кто действительно хочет получить доступ, может. Но, возможно, запутывание сделает эту задачу невыполнимой с точки зрения стоимости/выплаты: «Это зависит от обстоятельств».
Не хотите переводить трассировку стека? Просто: не используйте его для отладки (это не так полезно для получения трассировок от пользователей) или не включайте обфускацию (остальные преимущества остаются в силе) ;-)
Удачного кодирования.
Pro Guard, по крайней мере, позволяет вам сделать приложение как можно меньше по размеру файла!
Это реальный плюс.
Он автоматически используется при разработке и компиляции с помощью eclipse, если у вас есть proguard.config=proguard.cfg
в файле default.properties проекта.
Это тоже реальный плюс.
proguard.config=proguard.cfg
в файл проекта default.properties. (Вы можете игнорировать предупреждение в файле об удалении ваших изменений; этого не происходит.) См. эта тема для получения дополнительной информации.
- person Ted Hopp; 12.04.2011