Я работаю над проектом Android, где, как только я включаю обфускацию, вызывается другой метод, чем предполагалось.Может ли обфускация вызывать неправильные методы?
IE, основная активность открывается и начинается с вызова Метод A, который печатает тост, который говорит Метод A. Это как обычно должно выполняться; однако, когда я делаю сборку релиза, устанавливаю minifyEnabled в true и допускаю обфускацию, я запускаю одно и то же приложение, и теперь, после запуска, вызывает метод B, который печатает тост, который говорит Метод B.
У меня нет подскажите, как это происходит, и поскольку я не могу прочитать логарифм (как выпуск, у меня нет этой проблемы в отладке), я действительно не знаю, куда идти отсюда.
Возможно ли, что обфускация меняет структуру моего приложения, так что другой метод/функция вызывается по ошибке? Или, скорее, причина проблемы - это что-то еще?
-Sil
Вы можете перевести трассировку стека обратно на ее исходные символы, используя инструмент proguard под названием «retrace». Вы также можете увидеть, как символы были переведены, посмотрев на сгенерированный файл mappings.txt. Но я никогда не слышал о том, что proguard делает явно неправильное изменение, подобное этому. Он используется в бесчисленных приложениях, и вы думаете, что это очевидное сделает его бесполезным. –
Спасибо Doug, инструмент восстановления кажется полезным, я буду следовать этому немного, чтобы узнать, приведет ли это к большему количеству ответов. – Silmarilos
Это может произойти, если вы обфускаете библиотеки, а не только окончательное приложение. Однако он обычно не компилируется вообще. – StenSoft