Нет, ну вообще цель обфускации (не обязательно относительно Java) - это удаление всей информации, которая не принципиальна для работы. Применительно к Java это означает в основном удаление информации о названиях полей, методов, классов и так далее. JVM все равно ведь, как называется класс, "com.mysoft.Main" или просто "a". Само по себе просто удаление информации - это, в принципе, не запутывание. Запутывание происходит в момент оптимизации кода как побочный эффект. Конечно, можно было бы еще и вставлять дополнительные инструкции, но это уже будет размен производительности на рост сложностей декомпиляции, поэтому ProGuard так не делает.
Malcolm, позволь не согласиться. Обфускация призвана делать код трудным для понимания ( en.wikipedia.org/wiki/Obfuscated_code ). А оптимизации в ProGuard не запутывают код (ну или почти не запутывают, во всяком случае их задача не в этом). Большинство из них в большей или меньшей степени направлены на уменьшение размера кода, хотя есть и направленные только на повышение скорости работы кода.
KiFFiR, да я криво написал, не разграничил то, где я имел в виду обфускацию вообще и где писал применительно к ProGuard. Удаление информации может включать в себя и перестановку инструкций местами так, чтобы это не влияло на ход программы, и шифровку строк (то есть потеря изначального вида), в конечном счете приводя к тому, что код теряет сведения о первоначальном виде и становится запутанным. Набить код абракадаброй - по идее, тоже убирает информацию о первоначальном виде, я вот это имел в виду. В ProGuard на этапе обфускации только удаляются сведения о названиях полей, классов и так далее. Оптимизация сама по себе имеет цель повышения эффективности кода, однако очень неплохо сбивает с толку декомпиляторы, которые уже не могут по оптимизированному коду восстановить исходный. По общим понятиям это обфускация, по понятиям ProGuard - нет.
upwap.ru/893061 тач и кнопки, шестерёнки вращаются от первой, поддержка любого размера, скорость маленькая так-как на эмуле была нормальная, можно изменить(в исходнике ) Если доделать, то получится двиг для игры. Доделывать?
Pavlus, судя по наблюдениям, по когда передаёшь объект - он передаётся сам (то есть его изменение в методе затронет и исходный объект), а с примитивными типами по ссылке (изменение значения в методе не изменит исходную переменную). Если ошибся - Malcolm придёт и поправит
Ну да, наоборот. В любом случае передается значение переменной. Если это переменная примитивного типа, то на первоначальную ты воздействовать не можешь, если на ссылочный тип, то переменная содержит ссылку, и ее значение и передается в метод. Действовать на ссылочную переменную, разумеется, все равно нельзя, но объект, на который ссылка указывает, остается тот же самый, так что изменения будут видны отовсюду.
Malcolm, ссылочные, это те, что расширяют Object, а примитивные - те, тип которых является зарезервированым словом? Или есть ещё какие то критерии и исключения?
28 мая 2010 в 16:33