Как читать лямбды в трассировке стека android / R8, деобфусцированной с помощью retrace.jar? - PullRequest
1 голос
/ 09 июля 2020

В частности, строки, похожие на:

.- $$ Лямбда $ $ TBpBoCodhQrLRrW-jmx762QZ0VY.run (Неизвестный источник: 2)

и были явно заменены.

Возможно, в R8 есть какие-то варианты для сохранения соответствующей информации?

1 Ответ

0 голосов
/ 05 августа 2020

Классы с именами, начинающимися с -$$Lambda$, генерируются R8 (и D8) при обессахаривании Java лямбд. Это классы syntheti c, и они не имеют соответствующего элемента во входной программе. Обычно -$$Lambda$ не находится на вершине стека, так как они всегда будут вызывать метод lambda$xxx, сгенерированный javac, который имеет ссылки на исходный источник.

Если вы используете retrace.jar от ProGuard, убедитесь, что вы используете последнюю версию, которая поддерживает встроенные фреймы в файле сопоставления. Версия 6+ должна работать.

...