我们正在调试一个只影响华为设备的应用程序问题。为了进行调试,我们购买了P20 Lite ANE-LX1,并在代码中放置了一些断点,正在调查完整的堆栈跟踪。该设备安装了Android 8.0,并且我们已经在Android Studio中下载了相同的SDK。
当我们将设备连接到调试器并尝试调查堆栈跟踪时,我们会在系统源文件中收到以下错误:
经过对堆栈跟踪的测试,我们可以确认我们的源文件确实与设备上安装的不符。有时,调试器指向调用functionA
的行,而在堆栈跟踪中,我们看到调用了functionB
,受此问题影响的文件包括:
VideoView
,MediaPlayer
,ContentProvider
.
我们已经尝试了所有可能的解决方案,包括清除项目,从Android Studio删除任何附加的SDK,修改项目设置 - 但都无法解决此问题。
这使我们相信华为在其设备上安装了修改版的Android 8.0,这就是为什么我们无法调试系统文件的堆栈跟踪。我们联系了华为尝试澄清此事。
同时,如果您有任何相关的想法,请不吝赐教。也许您知道从何处获取华为安装在其设备上的源文件?或者您知道如何以其他方式解决源代码和字节码之间的不匹配问题吗?
更新1
按照罗伯特的建议,我卸载了Android 26的源代码,并在我的华为手机上重新运行了该应用程序。当我进入VideoView
文件时,我看到了下面的图片:
我点击了“下载”,它开始下载源文件:
之后,我能够进入VideoView
并且似乎工作正常。然而,在这一行之后,显然这些源文件也是错误的:
当我尝试进入requestLayout
函数时,我会得到以下结果:
显然,这是错误的结果。实际上,如果我点击“跳转到下一行”,我会再次看到有关源代码与字节码不匹配的消息。