Ich habe meine erste App bereitgestellt und erhalte die Ausnahmen mithilfe von Google Analytics. Ich nehme den Stacktrack auf.Erhalte den richtigen Stacktrace nach der Proguard-Komprimierung und der App-Bereitstellung.
[in.jiyofit.basic_app.WorkoutActivity.a(Unknown Source),
in.jiyofit.basic_app.WorkoutActivity.onWindowFocusChanged(Unknown Source),
Wie interpretiere ich, was in der "Unbekannten Quelle" sein sollte? Ich glaube, dass dies wegen des Fortschritts geschieht. Gibt es eine Möglichkeit, die Zeilennummern auch während des Absturzes/Exceptions zu bekommen. Folgen sind der Code die Ausnahme zu finden:
public void trackException(Exception e) {
if (e != null) {
Tracker t = getGoogleAnalyticsTracker();
t.send(new HitBuilders.ExceptionBuilder()
.setDescription(
new StandardExceptionParser(this, null)
.getDescription(Thread.currentThread().getName(), e))
.setFatal(false)
.build()
);
SharedPreferences loginPrefs = getSharedPreferences("LoginInfo", MODE_PRIVATE);
userID = loginPrefs.getString("userID", "");
DisplayMetrics metrics = new DisplayMetrics();
Long currentTime = System.currentTimeMillis();
if(userID.length() > 0){
trackEvent("Exception", "userID: " + userID + " Date: " + currentTime + " " + e.getClass().getSimpleName(), Arrays.toString(e.getStackTrace()));
trackEvent("Exception", "userID: " + userID + " Date: " + currentTime + " " + e.getClass().getSimpleName(), "SDK: " + Build.VERSION.SDK_INT + " Manu: " + Build.MANUFACTURER + " Model: " + Build.MODEL);
} else {
trackEvent("Exception", "Date: " + currentTime + " " + e.getClass().getSimpleName(), Arrays.toString(e.getStackTrace()));
trackEvent("Exception", "Date: " + currentTime + " " + e.getClass().getSimpleName(), "SDK: " + Build.VERSION.SDK_INT + " Manu: " + Build.MANUFACTURER + " Model: " + Build.MODEL);
}
}
}
EDIT: ich unter Gopals Antwort zu folgen versuchen. Ich erhalte die Stacktrace auf diese Weise: Arrays.toString(e.getStackTrace())
ich folgenden Stacktrace aufgezeichnet habe:
[in.jiyofit.basic_app.WorkoutActivity.a(Unknown Source),
in.jiyofit.basic_app.WorkoutActivity.onWindowFocusChanged(Unknown Source),
com.android.internal.policy.impl.PhoneWindow$DecorView.onWindowFocusChanged(PhoneWindow.java:2777),
android.view.View.dispatchWindowFocusChanged(View.java:7995),
android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:968),
android.view.ViewRootImpl$ViewRootHandler.handleMessage(ViewRootImpl.java:3171),
android.os.Handler.dispatchMessage(Handler.java:102),
android.os.Looper.loop(Looper.java:136),
android.app.ActivityThread.main(ActivityThread.java:5433),
java.lang.reflect.Method.invokeNative(Native Method),
java.lang.reflect.Method.invoke(Method.java:515),
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268),
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084),
dalvik.system.NativeStart.main(Native Method)]
Aber diese nicht richtig verarbeitet wird, um den deobfuscated Code zu erhalten. Der entschleierte Code gibt den verschleierten Code als Ausgabe an. So, 1. Wie sollte der StackTrace für proguardgui gespeichert werden, um es zu interpretieren? Arrays.toString(e.getStackTrace())
scheint nicht richtig zu funktionieren. 2. Wie soll ich den angegebenen StackTrace bearbeiten, damit Proguard ihn interpretieren und entschleiern kann?
Dank
Ich habe Ihre Schritte befolgt, aber aus irgendeinem Grund gibt mein Stacktrace das Ergebnis nicht. Ich habe die Frage entsprechend bearbeitet. Kannst du es bitte sehen und mir sagen, was ist der Fehler, den ich mache? – suku
gehe zu 'build/outputs/proguard/release/mapping.txt' und setze dieses Mapping in proguardgui.bat, um dieses Stacktrace zurückzuverfolgen. –
Ich habe das gemacht .. Aber ich bekomme immer noch den verschleierten Stacktrace als den entschleierten Stacktrace – suku