2016-02-17 7 views
0

Я работаю над проектом Android, где, как только я включаю обфускацию, вызывается другой метод, чем предполагалось.Может ли обфускация вызывать неправильные методы?

IE, основная активность открывается и начинается с вызова Метод A, который печатает тост, который говорит Метод A. Это как обычно должно выполняться; однако, когда я делаю сборку релиза, устанавливаю minifyEnabled в true и допускаю обфускацию, я запускаю одно и то же приложение, и теперь, после запуска, вызывает метод B, который печатает тост, который говорит Метод B.

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

Возможно ли, что обфускация меняет структуру моего приложения, так что другой метод/функция вызывается по ошибке? Или, скорее, причина проблемы - это что-то еще?

-Sil

+0

Вы можете перевести трассировку стека обратно на ее исходные символы, используя инструмент proguard под названием «retrace». Вы также можете увидеть, как символы были переведены, посмотрев на сгенерированный файл mappings.txt. Но я никогда не слышал о том, что proguard делает явно неправильное изменение, подобное этому. Он используется в бесчисленных приложениях, и вы думаете, что это очевидное сделает его бесполезным. –

+0

Спасибо Doug, инструмент восстановления кажется полезным, я буду следовать этому немного, чтобы узнать, приведет ли это к большему количеству ответов. – Silmarilos

+0

Это может произойти, если вы обфускаете библиотеки, а не только окончательное приложение. Однако он обычно не компилируется вообще. – StenSoft

ответ

0

Абсолютно нет. Obfuscation не изменит структуру вашего приложения и не приведет к вызову неправильных методов. Почти все популярные приложения в Play Store зашифрованы/запутаны.

+0

Однако механизм отражения Java может быть немного проблематичным в вопросе обфускации. –

Смежные вопросы