Android – what’s in the firebase crash stack?

What is < or > in 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)

resolvent:

< or > indicates that the anti aliaser cannot determine which method is the original method because there are several possible methods. Firebase received a aliased stack trace and cannot explicitly determine the original stack trace using the provided Proguard file. For example, an anti aliased 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)

This means that the first stack frame is explicitly de aliased, but the second stack frame in the stack trace can be any of these four possibilities

In this case, ambiguity comes from two facts:

>There is no line number to distinguish methods, and > confuses multiple methods with different signatures into the same string

During the downsizing phase, Proguard may be configured to split line numbers. To avoid this problem, disable this feature

On stack traces without line numbers, confusion cannot be guaranteed to be reversible, because this is not one of the requirements of effective Proguard mapping. Proguard only guarantees reversible confusion of code, not stack traces. Proguard files include method signatures, so any method with non conflicting signatures may be confused with the same string

For example, both int method (int) and string method2 (string) can be confused as oBf. From the context, the code anti obfuscator can check whether oBf is passed through int or string, and can explicitly select the correct original method. For the stack trace anti obfuscator, the myclass.obf (MyClass. Java) line may come from myclass.method (MyClass. Java) or myclass.method2 (MyClass. Java)

The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>