Вопрос по android, java – Android ProGuard возвращает номер строки

34

Есть ли способ заставить ProGuard вернуть номер строки, в которой произошел сбой? я могу использоватьretrace чтобы добраться до метода, но часто для таких вещей, какNullPointerException существует слишком много возможностей, и в большом фрагменте кода чрезвычайно трудно определить основную причину, так как вы должны проверить каждый объект и его жизненный цикл, чтобы убедиться, что все в порядке. Было бы действительно полезно, если бы ProGuard смог сузить это до номера строки для меня.

Ваш Ответ

2   ответа
0

он сообщает, какие строки вы можете раскомментировать:

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
#   public *;
#}

# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable

# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile

Итак, вы должны рассмотреть возможность иметь эти:

-keepattributes SourceFile,LineNumberTable
-renamesourcefileattribute SourceFile

Однако обратите внимание, что по какой-то причине команда Firebase Crashlytics сказала мне, что эта линия может помешать их обслуживанию:

-renamesourcefileattribute SourceFile

так что вы можете не увидеть хорошую информацию о трассировке стека сбоев, если будете ее использовать.

67

Добавьте эту строку в ваш файл proguard-project.txt.

# will keep line numbers and file name obfuscation
-renamesourcefileattribute SourceFile
-keepattributes SourceFile,LineNumberTable

http://proguard.sourceforge.net/index.html#manual/usage.html

Используйте # вместо //, чтобы комментировать строки в файле proguard.
Я не могу найти файл proguard-project.txt нигде в своем решении Android Studio. Где он находится??
Ссылка на ответ не обновляется. Где это должно быть связано?
При использовании запутывания это возвращает оригинальное имя. Из других ответов, что-то вроде этого будет работать: -renamesourcefileattribute SourceFile -keepattributes SourceFile, LineNumberTable
@MikeKeskinov, посмотриproguardFiles getDefaultProguardFile, там вы найдете имена файлов. Если его не существует, создайте его. Вероятно, этоproguard-rules.pro.

Похожие вопросы