2016-05-30 2 views
0

私は最初のアプリをデプロイしました。私はgoogle analyticsを使用して例外をキャッチしています。私はスタックトレースを記録しています。プロガードの圧縮とアプリのデプロイ後に適切なstacktraceを取得します。

[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); 
     } 
    } 
} 

EDIT: 私は以下のゴパルの答えを追跡しようとしています。私は、次のスタックトレースを記録しているArrays.toString(e.getStackTrace())

[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)] 

をしかし、これはdeobfuscatedコードを取得するために、適切に処理されていません 私は、このようにスタックトレースを取得します。難読化されたコードは、難読化されたコードを出力として提供します。したがって、 1. proguardguiがスタックトレースを解釈するためにスタックトレースをどのように格納する必要がありますか? Arrays.toString(e.getStackTrace())は正しく動作していないようです。 2. proguardがそのスタックトレースを解釈して解読するにはどうすればよいですか?ディレクトリ\\Androidsdk\tools\proguard\binとオープンproguardgui.bat をSDKへ

おかげ

答えて

0

ゴーたどるためのオプションは、このオプションを使用すると、ProGuardのと難読化されたスタックトレースによって生成されたマッピング・ファイルを置くことができ、適切な行番号と、元のスタックトレースを取得するには、があります。

+0

私はあなたの手順に従っていますが、何らかの理由で私のstacktraceが結果を出していません。私はそれに応じて質問を編集しました。あなたはそれを見て、私が作っているエラーが何であるか教えていただけますか? – suku

+0

'build/outputs/proguard/release/mapping.txt'に行き、このマッピングをproguardgui.batに入れてこのスタックトレースをリトレースします。 –

+0

私はそれをしました。しかし、私はまだ難読化されたスタックトレースを難読化されたスタックトレースとして取得しています – suku

関連する問題