私は最初のアプリをデプロイしました。私は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へ
おかげ
私はあなたの手順に従っていますが、何らかの理由で私のstacktraceが結果を出していません。私はそれに応じて質問を編集しました。あなたはそれを見て、私が作っているエラーが何であるか教えていただけますか? – suku
'build/outputs/proguard/release/mapping.txt'に行き、このマッピングをproguardgui.batに入れてこのスタックトレースをリトレースします。 –
私はそれをしました。しかし、私はまだ難読化されたスタックトレースを難読化されたスタックトレースとして取得しています – suku