Мне нужно больше деталей в сообщаемых трассировках стека, но я обеспокоен тем, что, включая дополнительные данные (используя -keepattributes SourceFile, LineNumberTable) я делаю свое приложение еще проще для обратного проектирования. Так ли это, и если да, то на сколько?
Руководство по ProGuard> Примеры> Создание полезных запутанных трассировок стека
Атрибут SourceFile необходим, поскольку виртуальная машина Java Oracle / Sun в противном случае не включает номера строк в трассировку стека, что что вы действительно хотите (и что само по себе совершенно безвредно). Я не проверял, верно ли это для виртуальной машины Dalvik в Android.
Что касается решения, ProGuard может сохранить атрибут SourceFile, но заменить его содержимое бессмысленной строкой по вашему выбору, например
.-renamesourcefileattribute SourceFile
Значение строки не важно для интерпретации трассировки стека. Выбор строки, такой как «SourceFile», позволяет избежать увеличения размеров файла класса, потому что эта строка уже присутствует по определению.
-renamesourcefileattribute
-keepattributes SourceFile, LineNumberTable,Signature,Exceptions,InnerClasses,EnclosingMethod
или
-renamesourcefileattribute ''
-keepattributes SourceFile, LineNumberTable,Signature,Exceptions,InnerClasses,EnclosingMethod
Просто позволяют пустому имени файла, в порядке