我已经部署了我的第一个应用程序,我正在使用谷歌分析来捕捉异常。我正在录制堆栈跟踪。
[in.jiyofit.basic_app.WorkoutActivity.a(Unknown Source),
in.jiyofit.basic_app.WorkoutActivity.onWindowFocusChanged(Unknown Source),
如何解释“未知来源”中的内容?我相信这是因为进步而发生的。有没有办法在崩溃/异常期间获取行号。以下是查找异常的代码:
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);
}
}
}
编辑:
我试图按照下面的Gopal的回答。
我以这种方式获得了堆栈跟踪:Arrays.toString(e.getStackTrace())
我记录了以下stacktrace:
[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)]
但是,为了获得经过反混淆的代码,没有正确处理。经过反混淆的代码将混淆的代码作为输出。所以,
1.如何存储堆栈跟踪以供proguardgui解释它? Arrays.toString(e.getStackTrace())
似乎无法正常运作
2.我应该如何编辑给定的堆栈跟踪以便proguard解释和反混淆它?
由于
答案 0 :(得分:0)
转到sdk目录\\Androidsdk\tools\proguard\bin
并打开proguardgui.bat
有一个回溯选项,使用此选项,您可以将您的映射文件放在proguard和混淆的堆栈跟踪中,并使用正确的行号获取原始堆栈跟踪。