华为系统上的系统文件的“源代码与字节码不匹配”更新 1
我们正在调试其中一个应用程序的问题,该问题仅影响华为设备。为了调试它,我们购买了P20 Lite ANE-LX1。我们在代码中放置了一些断点,并正在调查完整的堆栈跟踪。该设备安装了Android 8.0,我们在Android Studio中下载了相同的SDK。
当我们将设备附加到调试器并尝试调查堆栈跟踪时,我们会在系统源文件中收到以下错误:
使用堆栈跟踪后,我们可以确认我们的源文件确实与设备上安装的内容不对应。有时,调试器指向调用的行,在堆栈跟踪中,我们看到它被调用了。我们可以确认受此问题影响的文件是:functionA
functionB
-
VideoView
, -
MediaPlayer
, -
ContentProvider
.
我们已经尝试了所有可能的解决方案,包括清理项目,从Android Studio中删除任何其他SDK,修改项目设置 - 没有任何帮助可以解决此问题。
这导致我们相信华为在其设备上安装了Android 8.0的修改版本,这就是为什么我们无法调试系统文件的堆栈跟踪的原因。我们确实联系了华为,试图澄清这一点。
同时,如果您能向我们提出任何相关的想法,我们将不胜感激。也许您知道从哪里获取华为在其设备上安装的源文件?或者,也许您知道如何以其他方式修复源代码和字节码之间的这种不匹配?
更新 1
根据Robert的建议,我卸载了Android 26的源代码,并在我的华为上再次运行该应用程序。当我跳入文件时,我看到了下图:VideoView
我点击“下载”,它开始下载源文件:
在此之后,我能够进入,它似乎工作正常。但是,在此行之后,很明显这些源文件也是错误的:VideoView
当我尝试单步执行该函数时,我得到这个:requestLayout
这显然是一个错误的结果。实际上,如果我单击“单步执行到下一行”,我会再次看到有关源代码与字节码不匹配的消息。