Search code examples
androidandroid-proguarddeobfuscationgoogle-play-console

Play Console deobfuscation deosn't work


I've added an update to one of my apps and started to receive crashes.

I've added mapping.txt to Play Console to get the deobfuscated stack trace, but it didn't make any influence. I still receive the same crashes that are obfuscated, and the Play Console shows me a message, like Deobfuscation file, was uploaded after a crash happened.

But there were multiple crashes since I added mapping.txt. Moreover, I've fixed few of them by myself and released a new app version, where added mapping.txt immediately after release, but the console still showing obfuscated traces.

Did anyone run out on the same problem? What is the reason of this strange behavior and how can I fix that. Thanks in advance!

Here is an example of the stack trace:

    java.lang.NullPointerException: 
  at notchremover.smallapps.com.notchremover.ui.ui.activities.MainActivity.d (MainActivity.java:2)
  at notchremover.smallapps.com.notchremover.ui.ui.activities.MainActivityPresenter.b (MainActivityPresenter.java:16)
  at notchremover.smallapps.com.notchremover.ui.ui.activities.MainActivity.a (MainActivity.java:6)
  at notchremover.smallapps.com.notchremover.ui.ui.activities.MainActivity$$Lambda$4.a (MainActivity.java:4)
  at notchremover.smallapps.com.notchremover.ui.ui.widgets.heightscrollbar.SeekBarWidgetKt$1.onProgressChanged (SeekBarWidgetKt.java:59)
  at android.widget.SeekBar.onProgressRefresh (SeekBar.java:95)
  at android.widget.ProgressBar.doRefreshProgress (ProgressBar.java:1298)
  at android.widget.ProgressBar.refreshProgress (ProgressBar.java:1353)
  at android.widget.ProgressBar.setProgressInternal (ProgressBar.java:1418)
  at android.widget.AbsSeekBar.trackTouchEvent (AbsSeekBar.java:869)
  at android.widget.AbsSeekBar.startDrag (AbsSeekBar.java:826)
  at android.widget.AbsSeekBar.onTouchEvent (AbsSeekBar.java:783)
  at android.view.View.dispatchTouchEvent (View.java:11789)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:2970)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2657)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:2970)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2657)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:2970)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2657)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:2970)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2657)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:2970)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2657)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:2970)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2657)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:2970)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2657)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:2970)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2657)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:2970)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2657)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:2970)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2657)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:2970)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2657)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:2970)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2657)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:2970)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2657)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:2970)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2657)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:2970)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2657)
  at com.android.internal.policy.DecorView.superDispatchTouchEvent (DecorView.java:451)
  at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent (PhoneWindow.java:1829)
  at android.app.Activity.dispatchTouchEvent (Activity.java:3371)
  at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent (WindowCallbackWrapper.java:2)
  at com.android.internal.policy.DecorView.dispatchTouchEvent (DecorView.java:413)
  at android.view.View.dispatchPointerEvent (View.java:12030)
  at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent (ViewRootImpl.java:4866)
  at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess (ViewRootImpl.java:4677)
  at android.view.ViewRootImpl$InputStage.deliver (ViewRootImpl.java:4208)
  at android.view.ViewRootImpl$InputStage.onDeliverToNext (ViewRootImpl.java:4261)
  at android.view.ViewRootImpl$InputStage.forward (ViewRootImpl.java:4227)
  at android.view.ViewRootImpl$AsyncInputStage.forward (ViewRootImpl.java:4354)
  at android.view.ViewRootImpl$InputStage.apply (ViewRootImpl.java:4235)
  at android.view.ViewRootImpl$AsyncInputStage.apply (ViewRootImpl.java:4411)
  at android.view.ViewRootImpl$InputStage.deliver (ViewRootImpl.java:4208)
  at android.view.ViewRootImpl$InputStage.onDeliverToNext (ViewRootImpl.java:4261)
  at android.view.ViewRootImpl$InputStage.forward (ViewRootImpl.java:4227)
  at android.view.ViewRootImpl$InputStage.apply (ViewRootImpl.java:4235)
  at android.view.ViewRootImpl$InputStage.deliver (ViewRootImpl.java:4208)
  at android.view.ViewRootImpl.deliverInputEvent (ViewRootImpl.java:6775)
  at android.view.ViewRootImpl.doProcessInputEvents (ViewRootImpl.java:6747)
  at android.view.ViewRootImpl.enqueueInputEvent (ViewRootImpl.java:6708)
  at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent (ViewRootImpl.java:6883)
  at android.view.InputEventReceiver.dispatchInputEvent (InputEventReceiver.java:240)
  at android.view.InputEventReceiver.nativeConsumeBatchedInputEvents (InputEventReceiver.java)
  at android.view.InputEventReceiver.consumeBatchedInputEvents (InputEventReceiver.java:208)
  at android.view.ViewRootImpl.doConsumeBatchedInput (ViewRootImpl.java:6851)
  at android.view.ViewRootImpl$ConsumeBatchedInputRunnable.run (ViewRootImpl.java:6906)
  at android.view.Choreographer$CallbackRecord.run (Choreographer.java:1026)
  at android.view.Choreographer.doCallbacks (Choreographer.java:838)
  at android.view.Choreographer.doFrame (Choreographer.java:763)
  at android.view.Choreographer$FrameHandler.handleMessage (Choreographer.java:941)
  at android.os.Handler.dispatchMessage (Handler.java:106)
  at android.os.Looper.loop (Looper.java:171)
  at android.app.ActivityThread.main (ActivityThread.java:6633)
  at java.lang.reflect.Method.invoke (Method.java)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:547)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:823)

Solution

  • Despite I still don't have an answer, why Play Console behaves like this, the main purpose of this question was to deobfuscate my stack trace and fix the crashes.

    So as a workaround, I had to use proguardgui which is the standard utility of Android SDK. To learn how to use it, I followed this guide, which is pretty clear and straightforward, so I don't need to rewrite its nuances here.