" in the firebase crash stack? What is the in the firebase crash stack? android.app.Activity.onMenuItemSelected (Activity....">

What is the "<OR>" in the firebase crash stack?

What is the <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) 
+4
source share
1 answer

<OR> indicates that the deobfuscator could not determine which method is the original, as there are several potential possibilities. Firebase received stack trace obfuscation and was unable to uniquely determine the original stack trace using the provided Proguard file. For example, 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 the first stack stack was uniquely de-perfused, but the second stack stack in the stack trace can be any of these four possibilities.

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

  • There are no line numbers to distinguish between methods, and
  • several methods with different signatures were confused in one line.

During the compression phase, Proguard can be configured to differentiate line numbers. To avoid this problem, disable this feature.

Obfuscation cannot be reversed to stack traces without line numbers, as this is not one of the requirements for a valid Proguard display. Proguard is only guaranteed to be reversibly obfuscated, not a stack trace. Proguard files include method signatures, so any methods with non-conflicting signatures can be confused on the same line.

For example: int method(int) and String method2(String) can both obfuscate to obf . From the context, the code deobfuscator can see if int or String was passed to obf and can uniquely select the correct original method. For the stack trace deobfuscator, the string MyClass.obf(MyClass.java) could be obtained either from MyClass.method(MyClass.java) or MyClass.method2(MyClass.java) .

+3
source

Source: https://habr.com/ru/post/1262520/


All Articles