【问题标题】:Cannot figure out Google Play Console stack trace spike无法弄清楚 Google Play 控制台堆栈跟踪峰值
【发布时间】:2017-05-20 15:15:40
【问题描述】:

最近,我的 Google Play 管理中心崩溃率开始大幅上升。我无法弄清楚到底发生了什么。这是去混淆的堆栈跟踪,但它并没有真正告诉我发生了什么。我无法复制这个问题,但我每天会收到数百个。它似乎可能与一个班级联系在一起,但给了我一行 0,这显然没有帮助。在所有这些语句中,我以前从未见过像这样的堆栈跟踪。有人知道是什么原因造成的吗?

堆栈跟踪

java.lang.RuntimeException: 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2342)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2404)
at android.app.ActivityThread.access$800(ActivityThread.java:154)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1315)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5290)
at java.lang.reflect.Method.invoke(Method.java:0)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:911)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:706)
Caused by: java.lang.RuntimeException: 
at android.os.Parcel.readValue(Parcel.java:2228)
at android.os.Parcel.readListInternal(Parcel.java:2526)
at android.os.Parcel.readArrayList(Parcel.java:1842)
at android.os.Parcel.readValue(Parcel.java:2173)
at android.os.Parcel.readArrayMapInternal(Parcel.java:2485)
at android.os.BaseBundle.unparcel(BaseBundle.java:224)
at android.os.Bundle.getSparseParcelableArray(Bundle.java:822)
at android.support.v4.app.FragmentManagerImpl.modifiesAlpha(FragmentManagerImpl.java:0)
at <OR>.shouldRunOnHWLayer(FragmentManagerImpl.java:0)
at <OR>.throwException(FragmentManagerImpl.java:0)
at <OR>.beginTransaction(FragmentManagerImpl.java:0)
at <OR>.popBackStack(FragmentManagerImpl.java:0)
at <OR>.putFragment(FragmentManagerImpl.java:0)
at <OR>.getFragment(FragmentManagerImpl.java:0)
at <OR>.dump(FragmentManagerImpl.java:0)
at <OR>.makeOpenCloseAnimation(FragmentManagerImpl.java:0)
at <OR>.makeFadeAnimation(FragmentManagerImpl.java:0)
at <OR>.loadAnimation(FragmentManagerImpl.java:0)
at <OR>.performPendingDeferredStart(FragmentManagerImpl.java:0)
at <OR>.isStateAtLeast(FragmentManagerImpl.java:0)
at <OR>.moveToState(FragmentManagerImpl.java:0)
at <OR>.moveToState(FragmentManagerImpl.java:0)
at <OR>.moveToState(FragmentManagerImpl.java:0)
at <OR>.addFragment(FragmentManagerImpl.java:0)
at <OR>.removeFragment(FragmentManagerImpl.java:0)
at <OR>.findFragmentByTag(FragmentManagerImpl.java:0)
at <OR>.enqueueAction(FragmentManagerImpl.java:0)
at <OR>.allocBackStackIndex(FragmentManagerImpl.java:0)
at <OR>.setBackStackIndex(FragmentManagerImpl.java:0)
at <OR>.popBackStackState(FragmentManagerImpl.java:0)
at <OR>.restoreAllState(FragmentManagerImpl.java:0)
at <OR>.attachController(FragmentManagerImpl.java:0)
at <OR>.dispatchConfigurationChanged(FragmentManagerImpl.java:0)
at <OR>.dispatchCreateOptionsMenu(FragmentManagerImpl.java:0)
at <OR>.dispatchPrepareOptionsMenu(FragmentManagerImpl.java:0)
at <OR>.dispatchOptionsItemSelected(FragmentManagerImpl.java:0)
at <OR>.onCreateView(FragmentManagerImpl.java:0)
at android.support.v4.app.FragmentManagerImpl.modifiesAlpha(FragmentManagerImpl.java:0)
at <OR>.shouldRunOnHWLayer(FragmentManagerImpl.java:0)
at <OR>.throwException(FragmentManagerImpl.java:0)
at <OR>.beginTransaction(FragmentManagerImpl.java:0)
at <OR>.popBackStack(FragmentManagerImpl.java:0)
at <OR>.putFragment(FragmentManagerImpl.java:0)
at <OR>.getFragment(FragmentManagerImpl.java:0)
at <OR>.dump(FragmentManagerImpl.java:0)
at <OR>.makeOpenCloseAnimation(FragmentManagerImpl.java:0)
at <OR>.makeFadeAnimation(FragmentManagerImpl.java:0)
at <OR>.loadAnimation(FragmentManagerImpl.java:0)
at <OR>.performPendingDeferredStart(FragmentManagerImpl.java:0)
at <OR>.isStateAtLeast(FragmentManagerImpl.java:0)
at <OR>.moveToState(FragmentManagerImpl.java:0)
at <OR>.moveToState(FragmentManagerImpl.java:0)
at <OR>.moveToState(FragmentManagerImpl.java:0)
at <OR>.addFragment(FragmentManagerImpl.java:0)
at <OR>.removeFragment(FragmentManagerImpl.java:0)
at <OR>.findFragmentByTag(FragmentManagerImpl.java:0)
at <OR>.enqueueAction(FragmentManagerImpl.java:0)
at <OR>.allocBackStackIndex(FragmentManagerImpl.java:0)
at <OR>.setBackStackIndex(FragmentManagerImpl.java:0)
at <OR>.popBackStackState(FragmentManagerImpl.java:0)
at <OR>.restoreAllState(FragmentManagerImpl.java:0)
at <OR>.attachController(FragmentManagerImpl.java:0)
at <OR>.dispatchConfigurationChanged(FragmentManagerImpl.java:0)
at <OR>.dispatchCreateOptionsMenu(FragmentManagerImpl.java:0)
at <OR>.dispatchPrepareOptionsMenu(FragmentManagerImpl.java:0)
at <OR>.dispatchOptionsItemSelected(FragmentManagerImpl.java:0)
at <OR>.onCreateView(FragmentManagerImpl.java:0)
at android.support.v4.app.FragmentManagerImpl.modifiesAlpha(FragmentManagerImpl.java:0)
at <OR>.shouldRunOnHWLayer(FragmentManagerImpl.java:0)
at <OR>.throwException(FragmentManagerImpl.java:0)
at <OR>.beginTransaction(FragmentManagerImpl.java:0)
at <OR>.popBackStack(FragmentManagerImpl.java:0)
at <OR>.putFragment(FragmentManagerImpl.java:0)
at <OR>.getFragment(FragmentManagerImpl.java:0)
at <OR>.dump(FragmentManagerImpl.java:0)
at <OR>.makeOpenCloseAnimation(FragmentManagerImpl.java:0)
at <OR>.makeFadeAnimation(FragmentManagerImpl.java:0)
at <OR>.loadAnimation(FragmentManagerImpl.java:0)
at <OR>.performPendingDeferredStart(FragmentManagerImpl.java:0)
at <OR>.isStateAtLeast(FragmentManagerImpl.java:0)
at <OR>.moveToState(FragmentManagerImpl.java:0)
at <OR>.moveToState(FragmentManagerImpl.java:0)
at <OR>.moveToState(FragmentManagerImpl.java:0)
at <OR>.addFragment(FragmentManagerImpl.java:0)
at <OR>.removeFragment(FragmentManagerImpl.java:0)
at <OR>.findFragmentByTag(FragmentManagerImpl.java:0)
at <OR>.enqueueAction(FragmentManagerImpl.java:0)
at <OR>.allocBackStackIndex(FragmentManagerImpl.java:0)
at <OR>.setBackStackIndex(FragmentManagerImpl.java:0)
at <OR>.popBackStackState(FragmentManagerImpl.java:0)
at <OR>.restoreAllState(FragmentManagerImpl.java:0)
at <OR>.attachController(FragmentManagerImpl.java:0)
at <OR>.dispatchConfigurationChanged(FragmentManagerImpl.java:0)
at <OR>.dispatchCreateOptionsMenu(FragmentManagerImpl.java:0)
at <OR>.dispatchPrepareOptionsMenu(FragmentManagerImpl.java:0)
at <OR>.dispatchOptionsItemSelected(FragmentManagerImpl.java:0)
at <OR>.onCreateView(FragmentManagerImpl.java:0)
at android.support.v4.app.FragmentManagerImpl.dispatchCreate(FragmentManagerImpl.java:0)
at android.support.v4.app.FragmentController.dispatchCreate(FragmentController.java:0)
at android.support.v4.app.FragmentActivity.onCreate(FragmentActivity.java:0)
at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:0)
at com.clashtoolkit.clashtoolkit.calculator.activities.CalculatorMainActivity.onCreate(CalculatorMainActivity.java:0)
at android.app.Activity.performCreate(Activity.java:6039)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2295)

CalculatorMainActivity.java

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_calculator_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    if (getSupportActionBar() != null) {
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setTitle(R.string.army_calc_title);
    }

    if (getResources().getBoolean(R.bool.portrait_only)) {
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    }

    FirebaseAnalytics mFirebaseAnalytics = FirebaseAnalytics.getInstance(CalculatorMainActivity.this);
    if (savedInstanceState == null) {
        Bundle bundle = new Bundle();
        bundle.putString(FirebaseAnalytics.Param.ITEM_NAME, "calculator_main_page");
        mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.VIEW_ITEM, bundle);
    }

    QueueFactory factory = new QueueFactory();
    mQueue = factory.getQueue(this);

    Intent intent = getIntent();
    int armyId = intent.getIntExtra(ARMY_ID_INTENT, 0);


    if (savedInstanceState == null) {
        mTroopFragment = CalculatorItemListFragment.newInstance(ClashItemFactoryFactory.TROOPS, mQueue.getCampCapacity(), armyId);
        mSpellFragment = CalculatorItemListFragment.newInstance(ClashItemFactoryFactory.SPELLS, mQueue.getSpellFactoryCapacity(), armyId);
    } else {
        mTroopFragment = (CalculatorItemListFragment) getSupportFragmentManager().findFragmentByTag("android:switcher:2131624064:0");
        mSpellFragment = (CalculatorItemListFragment) getSupportFragmentManager().findFragmentByTag("android:switcher:2131624064:1");
    }

    ViewPager viewPager = (ViewPager) findViewById(R.id.calculator_viewpager);
    mAdapter = new ViewPagerAdapter(getSupportFragmentManager());
    mAdapter.addFrag(mTroopFragment, "Troops");
    mAdapter.addFrag(mSpellFragment, "Spells");

    if (viewPager != null) {
        viewPager.setAdapter(mAdapter);
    }

    TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
    if (tabLayout != null) {
        tabLayout.setupWithViewPager(viewPager);
    }


    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    if (fab != null) {
        fab.setOnClickListener(this);
    }

    mAdView = (AdView) findViewById(R.id.adView);
    Utilities.startAdView(mAdView);

    if (findViewById(R.id.display_fragment) != null) {
        mTwoPane = true;
        ArmyQueueFragment fragment = new ArmyQueueFragment();
        getSupportFragmentManager().beginTransaction().replace(R.id.display_fragment, fragment, DISPLAY_FRAGMENT_TAG).commit();
    }
}

新的堆栈跟踪:

java.lang.NullPointerException: 
at android.support.v4.app.BackStackRecord.dump(BackStackRecord.java:0)
at <OR>.dump(BackStackRecord.java:0)
at <OR>.addOp(BackStackRecord.java:0)
at <OR>.add(BackStackRecord.java:0)
at <OR>.add(BackStackRecord.java:0)
at <OR>.add(BackStackRecord.java:0)
at <OR>.doAddOp(BackStackRecord.java:0)
at <OR>.remove(BackStackRecord.java:0)
at <OR>.disallowAddToBackStack(BackStackRecord.java:0)
at <OR>.bumpBackStackNesting(BackStackRecord.java:0)
at <OR>.commitInternal(BackStackRecord.java:0)
at <OR>.generateOps(BackStackRecord.java:0)
at <OR>.interactsWith(BackStackRecord.java:0)
at <OR>.expandOps(BackStackRecord.java:0)
at <OR>.setOnStartPostponedListener(BackStackRecord.java:0)
at android.support.v4.app.BackStackRecord.dump(BackStackRecord.java:0)
at <OR>.dump(BackStackRecord.java:0)
at <OR>.addOp(BackStackRecord.java:0)
at <OR>.add(BackStackRecord.java:0)
at <OR>.add(BackStackRecord.java:0)
at <OR>.add(BackStackRecord.java:0)
at <OR>.doAddOp(BackStackRecord.java:0)
at <OR>.remove(BackStackRecord.java:0)
at <OR>.disallowAddToBackStack(BackStackRecord.java:0)
at <OR>.bumpBackStackNesting(BackStackRecord.java:0)
at <OR>.commitInternal(BackStackRecord.java:0)
at <OR>.generateOps(BackStackRecord.java:0)
at <OR>.interactsWith(BackStackRecord.java:0)
at <OR>.expandOps(BackStackRecord.java:0)
at <OR>.setOnStartPostponedListener(BackStackRecord.java:0)
at android.support.v4.app.FragmentPagerAdapter.getItem(FragmentPagerAdapter.java:0)
at <OR>.startUpdate(FragmentPagerAdapter.java:0)
at <OR>.instantiateItem(FragmentPagerAdapter.java:0)
at <OR>.destroyItem(FragmentPagerAdapter.java:0)
at <OR>.isViewFromObject(FragmentPagerAdapter.java:0)
at <OR>.saveState(FragmentPagerAdapter.java:0)
at <OR>.restoreState(FragmentPagerAdapter.java:0)
at <OR>.makeFragmentName(FragmentPagerAdapter.java:0)
at android.support.v4.view.ViewPager.initViewPager(ViewPager.java:0)
at <OR>.addOnAdapterChangeListener(ViewPager.java:0)
at <OR>.setCurrentItem(ViewPager.java:0)
at <OR>.setCurrentItemInternal(ViewPager.java:0)
at <OR>.setCurrentItemInternal(ViewPager.java:0)
at <OR>.scrollToItem(ViewPager.java:0)
at <OR>.addOnPageChangeListener(ViewPager.java:0)
at <OR>.distanceInfluenceForSnapDuration(ViewPager.java:0)
at <OR>.smoothScrollTo(ViewPager.java:0)
at <OR>.addNewItem(ViewPager.java:0)
at <OR>.populate(ViewPager.java:0)
at <OR>.calculatePageOffsets(ViewPager.java:0)
at <OR>.infoForChild(ViewPager.java:0)
at <OR>.recomputeScrollPosition(ViewPager.java:0)
at <OR>.onPageScrolled(ViewPager.java:0)
at <OR>.completeScroll(ViewPager.java:0)
at <OR>.isGutterDrag(ViewPager.java:0)
at <OR>.determineTargetPage(ViewPager.java:0)
at <OR>.onSecondaryPointerUp(ViewPager.java:0)
at <OR>.canScroll(ViewPager.java:0)
at <OR>.executeKeyEvent(ViewPager.java:0)
at <OR>.getChildRectInPagerCoordinates(ViewPager.java:0)
at android.support.v4.view.ViewPager.initViewPager(ViewPager.java:0)
at <OR>.addOnAdapterChangeListener(ViewPager.java:0)
at <OR>.setCurrentItem(ViewPager.java:0)
at <OR>.setCurrentItemInternal(ViewPager.java:0)
at <OR>.setCurrentItemInternal(ViewPager.java:0)
at <OR>.scrollToItem(ViewPager.java:0)
at <OR>.addOnPageChangeListener(ViewPager.java:0)
at <OR>.distanceInfluenceForSnapDuration(ViewPager.java:0)
at <OR>.smoothScrollTo(ViewPager.java:0)
at <OR>.addNewItem(ViewPager.java:0)
at <OR>.populate(ViewPager.java:0)
at <OR>.calculatePageOffsets(ViewPager.java:0)
at <OR>.infoForChild(ViewPager.java:0)
at <OR>.recomputeScrollPosition(ViewPager.java:0)
at <OR>.onPageScrolled(ViewPager.java:0)
at <OR>.completeScroll(ViewPager.java:0)
at <OR>.isGutterDrag(ViewPager.java:0)
at <OR>.determineTargetPage(ViewPager.java:0)
at <OR>.onSecondaryPointerUp(ViewPager.java:0)
at <OR>.canScroll(ViewPager.java:0)
at <OR>.executeKeyEvent(ViewPager.java:0)
at <OR>.getChildRectInPagerCoordinates(ViewPager.java:0)
at android.support.v4.view.ViewPager.populate(ViewPager.java:0)
at <OR>.isDecorView(ViewPager.java:0)
at <OR>.requestParentDisallowInterceptTouchEvent(ViewPager.java:0)
at <OR>.arrowScroll(ViewPager.java:0)
at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:0)
at android.view.View.measure(View.java:18803)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5985)
at android.support.design.widget.CoordinatorLayout.releaseTempRect(CoordinatorLayout.java:0)
at <OR>.setWindowInsets(CoordinatorLayout.java:0)
at <OR>.getTopSortedChildren(CoordinatorLayout.java:0)
at <OR>.performIntercept(CoordinatorLayout.java:0)
at <OR>.parseBehavior(CoordinatorLayout.java:0)
at <OR>.getResolvedLayoutParams(CoordinatorLayout.java:0)
at <OR>.getDescendantRect(CoordinatorLayout.java:0)
at <OR>.onMeasureChild(CoordinatorLayout.java:0)
at <OR>.onLayoutChild(CoordinatorLayout.java:0)
at <OR>.getChildRect(CoordinatorLayout.java:0)
at <OR>.getDesiredAnchoredChildRectWithoutConstraints(CoordinatorLayout.java:0)
at <OR>.constrainChildRect(CoordinatorLayout.java:0)
at <OR>.getDesiredAnchoredChildRect(CoordinatorLayout.java:0)
at <OR>.layoutChildWithAnchor(CoordinatorLayout.java:0)
at <OR>.onChildViewsChanged(CoordinatorLayout.java:0)
at <OR>.offsetChildByInset(CoordinatorLayout.java:0)
at <OR>.ensurePreDrawListener(CoordinatorLayout.java:0)
at <OR>.isPointInChildBounds(CoordinatorLayout.java:0)
at <OR>.generateLayoutParams(CoordinatorLayout.java:0)
at <OR>.generateLayoutParams(CoordinatorLayout.java:0)
at android.support.design.widget.HeaderScrollingViewBehavior.onMeasureChild(HeaderScrollingViewBehavior.java:0)
at <OR>.getOverlapRatioForOffset(HeaderScrollingViewBehavior.java:0)
at <OR>.getVerticalLayoutGap(HeaderScrollingViewBehavior.java:0)
at android.support.design.widget.AppBarLayout$ScrollingViewBehavior.onRequestChildRectangleOnScreen(AppBarLayout.java:0)
at <OR>.getOverlapRatioForOffset(AppBarLayout.java:0)
at <OR>.getAppBarLayoutOffset(AppBarLayout.java:0)
at <OR>.findFirstDependency(AppBarLayout.java:0)
at <OR>.onMeasureChild(AppBarLayout.java:0)
at <OR>.setTopAndBottomOffset(AppBarLayout.java:0)
at <OR>.onLayoutChild(AppBarLayout.java:0)
at android.support.design.widget.CoordinatorLayout.onMeasure(CoordinatorLayout.java:0)
at android.view.View.measure(View.java:18803)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5985)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:0)
at android.view.View.measure(View.java:18803)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5985)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:748)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:630)
at android.view.View.measure(View.java:18803)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5985)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at android.view.View.measure(View.java:18803)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5985)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:748)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:630)
at android.view.View.measure(View.java:18803)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5985)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at com.android.internal.policy.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2660)
at android.view.View.measure(View.java:18803)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2106)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1222)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1458)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1113)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6026)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
at android.view.Choreographer.doCallbacks(Choreographer.java:670)
at android.view.Choreographer.doFrame(Choreographer.java:606)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5452)
at java.lang.reflect.Method.invoke(Method.java:0)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:762)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:652)

【问题讨论】:

  • 从以前的片段恢复 savedInstanceState 时似乎发生了一些事情。包裹已损坏。您是否将状态内容保存到片段中的 saveInstanceState 中?

标签: android


【解决方案1】:

编辑:见New Google developer console crashes stack traces are not accurate anymore,这是因为当缺少行号时,proguard 去混淆是不明确的。

【讨论】:

  • 一切皆有可能。如果他们更改了映射文件所在的位置,而我一直在上传错误的文件。但这似乎不太可能。我会确保我使用的是正确的,但除非我不知道它只生成一个输出映射文件。
猜你喜欢
  • 2017-10-24
  • 1970-01-01
  • 1970-01-01
  • 2022-10-19
  • 1970-01-01
  • 2015-06-07
  • 2011-12-04
  • 1970-01-01
  • 2015-04-09
相关资源
最近更新 更多