然后在具有 API 级别 23 的真实设备上对其进行调试:
问题是当我尝试通过 Android 操作系统自己的类进行调试时,我得到“源代码与字节码不匹配”。为什么会这样?应用程序运行的测试设备是 API 级别 23,被调试的源文件也是级别 23。
我真的很困惑。谁能解释为什么我会看到此消息以及如何修复它?
您应该使用与 compileSdkVersion 具有相同 api 级别的 Android 模拟器。在您的情况下,您应该使用具有 api 级别 21 的 Android 模拟器。
我尝试了这里给出的所有解决方案,但没有一个对我有用。在 2019.1.3 版本中,我只是清理并重建了工件,它就起作用了;首先做Build -> Build Artifacts... -> <select your artifact> -> Clean
然后点击Build
或Rebuild
从同一个地方。
我的应用程序在 API LEVEL 29 上编译,但在 API LEVEL 28 上的真实设备上进行调试。我source code does not match the bytecode
在 AndroidStudio 中收到警告。我修复了它认为这些步骤:
转到首选项>即时运行:取消选中即时运行
转到构建>清洁构建
重新运行应用程序
现在,调试运行正常。
这些是对我有用的步骤(适用于 Mac 和 Windows):
注意:小项目不到一分钟,但由于我的项目很大(大约一百万行代码),所以花了 20 分钟。
转到项目设置 > 工件。选择有问题的工件。有一个选项“包含在项目构建中”。这需要检查(启用)。对于旧版本的 IntelliJ,此选项是“Make on build”。
可能此错误消息可能有多个原因,我的情况与 OP 中的情况不同,在我的情况下,这是由于需要额外库的第 3 方库。
例如:您手动将 X.jar 添加到您的 LIB,但此 X.jar 需要 Z.jar 才能工作。
我花了一些时间才弄清楚,这条信息根本没有帮助。我必须调试应用程序,直到遇到崩溃类,并在该类中确保所有导入都得到满足。
(特别是:我添加了 MercadoLibre-0.3.4.jar,需要 commons-httpclient.jar)
希望这可以帮助!
如果您启用了 ProGuard,也会发生这种情况。在 buildTypes 中设置 minifyEnabled false、shrinkResources false、useProguard false
我在处理使用蓝牙低功耗 (BLE) 的应用程序时尝试了此处给出的解决方案。我试过,
所有这些都失败了。
我所做的是调试我认为收到警告的点,我仍然收到警告,但应用程序运行正常。您可以忽略警告。
您可以创建 AVD,选择 API 级别等于您的 tagetApi 和 compileApi,它适用于我。
所以我创建了一个帐户,以便我可以帮助解决这个困扰很多人的问题,并且上面的修复方法不起作用。
如果您收到此错误并且这里没有任何帮助。尝试单击“恢复程序播放按钮”,直到程序完成错误。然后单击调试旁边的控制台选项卡并阅读红色文本。
即使我的问题是试图将一个值插入一个空数组,我也收到了那个源代码错误。 步骤 1 点击恢复按钮
这就是为什么我收到此错误“源代码与字节码不匹配”的原因。我的原因与任何 API、编译器版本都没有任何关系.....这是由于当我将布局视图充气到根视图时而我错误地在其他地方启动充气机(“结果处理程序”的夹头)放在android应用程序代码的onCreate函数之上的代码)。当设置断点并在此处停止时,调试器不知何故没有给我正确的提示(例如,充气机未初始化或有实例)。
当我不小心多次添加同一个库时,这发生在我身上。
implementation 'androidx.appcompat:appcompat:1.1.0'
上述库被多次添加。
如果清理、重建、无效缓存和重新启动等技术不起作用,请尝试删除以前的 APK 并重新安装新的 APK。
Android Studio 在您的应用程序中采用等于目标版本的源版本。使用等于上述编译版本的源版本执行编译。因此,请注意在您的项目中编译版本 == 目标版本(调整模块的 build.gradle 文件)。