简体   繁体   中英

What is '<OR>' in firebase crash stack?

What is <OR> in the firebase crash stack?

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)

The <OR> indicates that the deobfuscator could not determine which method is the original as there are several potential possibilities. Firebase received an obfuscated stack trace and was unable to unambiguously determine the original stack trace using the provided Proguard file. For example, a deobfuscated stack trace such as:

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)

means that that the first stack frame was unambiguously deobfuscated, but the second stack frame in the stack trace could be any of those four possibilities.

In this case, the ambiguity comes from the fact that both:

  1. There are no line numbers to distinguish methods, and
  2. multiple methods with different signatures were obfuscated to the same string.

During the shrinking phase, Proguard may be configured to strip line numbers. To avoid this problem, disable that feature.

Obfuscation is not guaranteed to be invertible on stack traces without line numbers as that is not one of the requirements for a valid Proguard mapping. Proguard is only guaranteed to invertibly obfuscate code , not stack traces . Proguard files include method signatures, so any methods with non-conflicting signatures may be obfuscated to the same string.

For example: int method(int) and String method2(String) may both be obfuscated to obf . From context, the code deobfuscator can see whether obf was passed an int or a String, and can unambiguously choose the correct original method. For a stack trace deobfuscator, the line MyClass.obf(MyClass.java) could have come from either MyClass.method(MyClass.java) or MyClass.method2(MyClass.java) .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM