在我的第一个Android应用程序中,我从Play控制台(Android Vitals)获得了这个Crash调试日志报告(块),我需要解释它:
java.lang.IllegalStateException:
at android.database.CursorWindow.nativeGetString(CursorWindow.java)
1. at android.database.CursorWindow.getString (CursorWindow.java:439)
2. at android.database.AbstractWindowedCursor.getString (AbstractWindowedCursor.java:51)
3. at ms.util.xTab.setSelect (xTab.java)
or .RegistrosIniciales (xTab.java)
or .Insert (xTab.java)
or .SacaWh (xTab.java)
or .SacaP (xTab.java)
or .CaODefault (xTab.java)
or .Field (xTab.java)
or .valTablaNoVacia (xTab.java)
4. at ms.util.xFrag.onAttach (xFrag.java)
or .onDetach (xFrag.java)
or .onCreateView (xFrag.java)
or .CreaCView (xFrag.java)
or .LlenaAC (xFrag.java)
or .DatValMSG (xFrag.java)
or .ActDesViews (xFrag.java)
or .UpdateG (xFrag.java)
or .CampoSinAlias (xFrag.java)
or .access$000 (xFrag.java)
5. at ms.util.xFrag.BotSav (xFrag.java)
6. at ms.simcall.Fragment_Dats.SavDet (Fragment_Dats.java)
与Android Studio的常见Android Monitor日志相比,我有调试此问题。例如,我的顶级堆栈代码上没有行号:
at ms.util.xTab.setSelect (xTab.java)
也不理解前缀为"或"的行。什么意思 ? :
**at** ms.util.xTab.setSelect (xTab.java)
**or** .RegistrosIniciales (xTab.java)
**or** .Insert (xTab.java)"
最后," at"中的初始数字(1.,2.,3。)是什么?行呢?他们是线程吗?堆栈顺序?堆栈顺序是否与Android Monitor日志相同?
我一直在阅读有关此内容的Play Console文档,但没有成功使用此详细信息。
答案 0 :(得分:1)
在数小时后试图理解这一点,到目前为止我发现的是这个日志因为Proguard的混淆而显示出来。 前缀" OR"是因为Proguard使用相同的字母重命名了几个方法(奇怪的是同一个类),因此它无法建立生成异常的特定方法。无论如何,虽然你可以,但它很难调试。 除非我错误地设置了Proguard。