Firebase崩溃堆栈中的''是什么?

问题描述:

Firebase崩溃堆栈中的<OR>是什么?Firebase崩溃堆栈中的'<OR>'是什么?

android.app.Activity.onMenuItemSelected (Activity.java:2566) 
android.support.v4.app.FragmentActivity.onMenuItemSelected (FragmentActivity.java) 
android.support.v7.app.AppCompatActivity.onMenuItemSelected (AppCompatActivity.java) 
android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected (WindowCallbackWrapper.java) 
android.support.v7.app.AppCompatDelegateImplV9.onCreate (AppCompatDelegateImplV9.java) 
<OR>.setSupportActionBar (AppCompatDelegateImplV9.java) 
<OR>.findViewById (AppCompatDelegateImplV9.java) 
<OR>.onConfigurationChanged (AppCompatDelegateImplV9.java) 
<OR>.setContentView (AppCompatDelegateImplV9.java) 
<OR>.setContentView (AppCompatDelegateImplV9.java) 
<OR>.onSubDecorInstalled (AppCompatDelegateImplV9.java) 
<OR>.onPanelClosed (AppCompatDelegateImplV9.java) 
<OR>.onMenuItemSelected (AppCompatDelegateImplV9.java) 
<OR>.onMenuModeChange (AppCompatDelegateImplV9.java) 
<OR>.startSupportActionModeFromWindow (AppCompatDelegateImplV9.java) 
<OR>.onKeyShortcut (AppCompatDelegateImplV9.java) 
<OR>.dispatchKeyEvent (AppCompatDelegateImplV9.java) 
<OR>.shouldInheritContext (AppCompatDelegateImplV9.java) 
<OR>.onCreateView (AppCompatDelegateImplV9.java) 
<OR>.openPanel (AppCompatDelegateImplV9.java) 
<OR>.initializePanelDecor (AppCompatDelegateImplV9.java) 
<OR>.reopenMenu (AppCompatDelegateImplV9.java) 
<OR>.closePanel (AppCompatDelegateImplV9.java) 
<OR>.callOnPanelClosed (AppCompatDelegateImplV9.java) 
<OR>.findMenuPanel (AppCompatDelegateImplV9.java) 
<OR>.getPanelState (AppCompatDelegateImplV9.java) 
<OR>.performPanelShortcut (AppCompatDelegateImplV9.java) 
android.support.v7.view.menu.MenuBuilder.setDefaultShowAsAction (MenuBuilder.java) 
<OR>.addMenuPresenter (MenuBuilder.java) 
<OR>.addMenuPresenter (MenuBuilder.java) 
<OR>.dispatchSubMenuSelected (MenuBuilder.java) 
<OR>.saveActionViewStates (MenuBuilder.java) 
<OR>.getActionViewStatesKey (MenuBuilder.java) 
<OR>.setCallback (MenuBuilder.java) 
<OR>.addInternal (MenuBuilder.java) 
<OR>.createNewMenuItem (MenuBuilder.java) 
<OR>.removeItemAtInt (MenuBuilder.java) 
<OR>.setExclusiveItemChecked (MenuBuilder.java) 
<OR>.findGroupIndex (MenuBuilder.java) 
<OR>.dispatchMenuItemSelected (MenuBuilder.java) 
<OR>.findInsertIndex (MenuBuilder.java) 
<OR>.findItemsWithShortcutForKey (MenuBuilder.java) 
<OR>.findItemWithShortcutForKey (MenuBuilder.java) 
<OR>.performItemAction (MenuBuilder.java) 
<OR>.performItemAction (MenuBuilder.java) 
<OR>.close (MenuBuilder.java) 
<OR>.onItemVisibleChanged (MenuBuilder.java) 
<OR>.setHeaderInternal (MenuBuilder.java) 
<OR>.setHeaderTitleInt (MenuBuilder.java) 
<OR>.setHeaderIconInt (MenuBuilder.java) 
<OR>.setHeaderViewInt (MenuBuilder.java) 
android.support.v7.view.menu.MenuItemImpl.invoke (MenuItemImpl.java) 
<OR>.setCheckedInt (MenuItemImpl.java) 
<OR>.setShowAsActionFlags (MenuItemImpl.java) 
android.support.v7.view.menu.MenuBuilder.setDefaultShowAsAction (MenuBuilder.java) 
<OR>.addMenuPresenter (MenuBuilder.java) 
<OR>.addMenuPresenter (MenuBuilder.java) 
<OR>.dispatchSubMenuSelected (MenuBuilder.java) 
<OR>.saveActionViewStates (MenuBuilder.java) 
<OR>.getActionViewStatesKey (MenuBuilder.java) 
<OR>.setCallback (MenuBuilder.java) 
<OR>.addInternal (MenuBuilder.java) 
<OR>.createNewMenuItem (MenuBuilder.java) 
<OR>.removeItemAtInt (MenuBuilder.java) 
<OR>.setExclusiveItemChecked (MenuBuilder.java) 
<OR>.findGroupIndex (MenuBuilder.java) 
<OR>.dispatchMenuItemSelected (MenuBuilder.java) 
<OR>.findInsertIndex (MenuBuilder.java) 
<OR>.findItemsWithShortcutForKey (MenuBuilder.java) 
<OR>.findItemWithShortcutForKey (MenuBuilder.java) 
<OR>.performItemAction (MenuBuilder.java) 
<OR>.performItemAction (MenuBuilder.java) 
<OR>.close (MenuBuilder.java) 
<OR>.onItemVisibleChanged (MenuBuilder.java) 
<OR>.setHeaderInternal (MenuBuilder.java) 
<OR>.setHeaderTitleInt (MenuBuilder.java) 
<OR>.setHeaderIconInt (MenuBuilder.java) 
<OR>.setHeaderViewInt (MenuBuilder.java) 
android.support.v7.view.menu.MenuBuilder.setDefaultShowAsAction (MenuBuilder.java) 
<OR>.addMenuPresenter (MenuBuilder.java) 
<OR>.addMenuPresenter (MenuBuilder.java) 
<OR>.dispatchSubMenuSelected (MenuBuilder.java) 
<OR>.saveActionViewStates (MenuBuilder.java) 
<OR>.getActionViewStatesKey (MenuBuilder.java) 
<OR>.setCallback (MenuBuilder.java) 
<OR>.addInternal (MenuBuilder.java) 
<OR>.createNewMenuItem (MenuBuilder.java) 
<OR>.removeItemAtInt (MenuBuilder.java) 
<OR>.setExclusiveItemChecked (MenuBuilder.java) 
<OR>.findGroupIndex (MenuBuilder.java) 
<OR>.dispatchMenuItemSelected (MenuBuilder.java) 
<OR>.findInsertIndex (MenuBuilder.java) 
<OR>.findItemsWithShortcutForKey (MenuBuilder.java) 
<OR>.findItemWithShortcutForKey (MenuBuilder.java) 
<OR>.performItemAction (MenuBuilder.java) 
<OR>.performItemAction (MenuBuilder.java) 
<OR>.close (MenuBuilder.java) 
<OR>.onItemVisibleChanged (MenuBuilder.java) 
<OR>.setHeaderInternal (MenuBuilder.java) 
<OR>.setHeaderTitleInt (MenuBuilder.java) 
<OR>.setHeaderIconInt (MenuBuilder.java) 
<OR>.setHeaderViewInt (MenuBuilder.java) 
android.support.v7.widget.ActionMenuView.measureChildForCells (ActionMenuView.java) 
<OR>.isOverflowReserved (ActionMenuView.java) 
<OR>.generateLayoutParams (ActionMenuView.java) 
<OR>.generateLayoutParams (ActionMenuView.java) 
<OR>.invokeItem (ActionMenuView.java) 
<OR>.initialize (ActionMenuView.java) 
<OR>.setMenuCallbacks (ActionMenuView.java) 
<OR>.hasSupportDividerBeforeChildAt (ActionMenuView.java) 
android.support.v7.view.menu.ActionMenuItemView.onClick (ActionMenuItemView.java) 
android.view.View.performClick (View.java:4211) 
android.view.View$PerformClick.run (View.java:17446) 
android.os.Handler.handleCallback (Handler.java:725) 
android.os.Handler.dispatchMessage (Handler.java:92) 
android.os.Looper.loop (Looper.java:153) 
android.app.ActivityThread.main (ActivityThread.java:5299) 
java.lang.reflect.Method.invokeNative (Method.java) 
java.lang.reflect.Method.invoke (Method.java:511) 
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:833) 
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:600) 
dalvik.system.NativeStart.main (NativeStart.java) 
+0

这个问题很模糊。你能分享一些关于你在哪里看到的细节,或者是关于你的项目的一些细节? –

+1

@DougStevenson,我已经从我的应用程序的firebase控制台收到这个堆栈跟踪。如果您在Firebase支持工作,我会向您发送有关firbase项目的任何信息。 –

<OR>表明deobfuscator无法确定哪一种方法是原来因为有几个潜在的可能性。 Firebase收到混淆的堆栈跟踪,无法使用提供的Proguard文件明确确定原始堆栈跟踪。例如,一个反混淆堆栈跟踪如:

android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected (WindowCallbackWrapper.java) 
android.support.v7.view.menu.MenuBuilder.setDefaultShowAsAction (MenuBuilder.java) 
<OR>.addMenuPresenter (MenuBuilder.java) 
<OR>.addMenuPresenter (MenuBuilder.java) 
<OR>.dispatchSubMenuSelected (MenuBuilder.java) 

意味着第一堆栈帧被明确地反混淆,但在堆栈跟踪第二堆栈帧可以是任何的那些四种可能性。

在这种情况下,不确定性来自于事实,即:

  1. 没有行号区分方法,并
  2. 具有不同特征的多个方法进行了模糊处理,以相同的字符串。

在收缩阶段,Proguard可能被配置为去掉行号。为避免此问题,请禁用该功能。

模糊处理不能保证在没有行号的堆栈轨迹上可逆,因为这不是有效的Proguard映射的需求之一。 Proguard仅保证可逆地混淆代码,而不是堆栈跟踪。 Proguard文件包含方法签名,因此任何具有非冲突签名的方法都可能被混淆到相同的字符串。

例如:int method(int)String method2(String)都可能被混淆到obf。从上下文中,代码反混淆器可以查看obf是否传递了int或String,并且可以明确地选择正确的原始方法。对于堆栈跟踪反混淆器,MyClass.obf(MyClass.java)行可能来自MyClass.method(MyClass.java)MyClass.method2(MyClass.java)

+1

要添加到此 - 如果您将ProGuard配置为将行号作为其缩小阶段的一部分进行剥离,您所看到的可能是此结果。 –

+1

谢谢!很奇怪,默认的proguard-android.txt不包含-keepattributes SourceFile,LineNumberTable选项。 –

+0

@DougStevenson,有这个问题关系到http://*.com/questions/41544446/strange-stack-at-android-crash-report? –