Android Studio недавно начала использовать R8 вместо ProGuard по умолчанию.
Трассировки стека от ProGuard довольно легко понять без использования каких-либо инструментов, несмотря на то, что код запутан.Давайте использовать следующий пример:
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.Boolean.booleanValue()' on a null object reference
at net.foo.anroid.Foo.wb.d(SourceFile:453)
at net.foo.anroid.Foo.wb.a(SourceFile:213)
at net.foo.anroid.Foo.wb.n(SourceFile:103)
at net.foo.anroid.Foo.qa.run(Unknown Source:2)
at java.lang.Thread.run(Thread.java:764)
Обычно я точно знаю, какому файлу net.foo.anroid.Foo.wb соответствует, а номера строк (например, 453, 213 ...) являются фактическими.номера в исходном файле для ProGuard.
Однако для R8 единственный способ выяснить, какая строка ищет их в mapping.txt.
Это действительно серьезная неприятность.Если нет хорошего способа быстро найти исходный код из трассировки стека, я вернусь к ProGuard только по этой причине.
Есть ли способ предотвратить изменение номеров строк в R8?