Google Play Console Stack Trace

2019-04-28 14:30发布

问题:

In Google Play Console, I am getting the below exception trace. Although I have added deobfuscation files, the line numbers are being displayed as 0.

java.lang.NullPointerException: at com.ae.apps.common.managers.ContactManager.getContactIdFromAddress(ContactManager.java:0) at com.ae.apps.messagecounter.utils.MessageCounterUtils.sortThisMap(MessageCounterUtils.java:0) at <OR>.getMessageCountDegrees(MessageCounterUtils.java:0) at <OR>.getContactMessageList(MessageCounterUtils.java:0) at <OR>.convertAddressToContact(MessageCounterUtils.java:0) at <OR>.getIndexFromDate(MessageCounterUtils.java:0) at <OR>.getWeekStartDate(MessageCounterUtils.java:0) at <OR>.getMessageLimitValue(MessageCounterUtils.java:0) at <OR>.getCycleSentCount(MessageCounterUtils.java:0) at com.ae.apps.messagecounter.activities.MainActivity$1.run(MainActivity.java:0) at java.lang.Thread.run(Thread.java:818)

I dont't understand what this <OR> statements in the stack trace. The ContactManager.getContactIdFromAddress() is only called from the method MessageCounterUtils.convertAddressToContact().

How to properly understand this stack trace?

I believe I have added the necessary Null checks in the above method anyways.

https://github.com/midhunhk/ae-apps-library/blob/master/app/src/main/java/com/ae/apps/common/managers/ContactManager.java#L377

回答1:

I believe you're running into the same issue answered in this question: Android ProGuard return Line Number

Proguard doesn't keep the line numbers by default.



回答2:

How to properly understand this stack trace?

< OR > literally means "OR". When stack trace is created for some lines of it there are several possibilities (LineNumberTable is missing or it is corrupted?) so they are printed with this prefix.