Android proguard zaciemnia pliki i numery linii choć nie powinien

0

Mój plik proguard-rules.pro wygląda tak:

-keep class androidx.core.app.CoreComponentFactory { *; }
-keepattributes SourceFile,LineNumberTable
-keepattributes *Annotation*
-keep class * implements org.acra.plugins.Plugin {*;}
-keep enum org.acra.* {*;}
-dontwarn android.support.**

Możemy zauważyć, że teoretycznie dzięki 2 linii kod nie powinien zaciemniać numerów linii i nazw metod tam, gdzie pojawil się błąd jednak pomimo tego przykładowy error prezentuje się nasteoujaco:

"java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.contains(java.lang.CharSequence)' on a null object reference at pl.jawegiel.endlessblow.f.a.b(CredentialsPresenter.java:2) at pl.jawegiel.endlessblow.e.a0$m.a(RestModel.java:1) at f.g$b$a$a.run(ExecutorCallAdapterFactory.java:3) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5421) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

Szczególnie zwróćcie uwagę na

pl.jawegiel.endlessblow.f.a.b(CredentialsPresenter.java:2)

i

pl.jawegiel.endlessblow.e.a0$m.a(RestModel.java:1)

gdzie package i numery linii są oczywiście nie poprawne. Jak to naprawić? Dziękuję z góry!

3

Ale to Ty chcesz zaciemniać kod czy nie? Jeżeli chcesz to właśnie tak będzie wyglądał surowy stacktrace. Żeby mieć go w bardziej przyjaznej formie musisz go odmapować. Służy do tego mapping.txt, który jest tworzony podczas zaciemniania i na przykład jakieś narzędzie w stylu retrace. Narzędzia takie jak Crashlytics automatycznie też to robią, podczas raportowania, jeśli mają dostęp do pliku z mapowaniem.

A na boku to Android Studio już nie korzysta z ProGuarda tylko z innego narzędzia – R8, chyba że w projekcie sam załączasz ProGuarda, albo korzystasz ze starej wersji AGP.

1

Przejrzę sobie potem temat R8 dzięki za info, ale na chwilę obecną korzystystam tu z Proguard

Chodziło mi o to, że bardzo prawdopodobnie korzystasz z R8 a nie z ProGuarda.

moim celem bo nie sprecyzowałem jest udidocznienie w całości kodu w logcacie.

Nie rozumiem co to znaczy. Co chcesz osiągnąć?

Znalazłem taka ciekawa opcje -dontobfuscate, ale zdaje się nie działa czyżby trzeba coś do niej dodać?

Nie, -dontobfuscate działa samo z siebie. Tylko po co Ci wtedy w ogóle zaciemnianie kodu? Bo optymalizacji, z tego co piszesz, nie jesteś świadomy albo są nieistotne.

1 użytkowników online, w tym zalogowanych: 0, gości: 1