然后在API级别为23的实际设备上进行调试:
问题是当我尝试通过Android OS自己的类进行调试时,我得到'源代码与字节码不匹配'。为什么会这样?应用程序运行的测试设备是API级别23,正在调试的源文件也是级别23。
我真的很困惑。任何人都可以解释为什么我看到这条消息以及我如何解决它?
答案 0 :(得分:28)
在AOSP中有一个未解决的问题,一些用户提供了可能的解决方案: https://code.google.com/p/android/issues/detail?id=225199&sort=-id&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars
那里给出的潜在解决方案(截至本文发布之日)是:
答案 1 :(得分:10)
这是我的解决方案
如果你有多个版本的图书馆,它可能有帮助。
答案 2 :(得分:8)
您应该使用与compileSdkVersion具有相同api级别的Android模拟器。 在您的情况下,您应该使用api level 21的Android模拟器。
答案 3 :(得分:4)
如果您使用Gradle,则Gradle缓存可能存在问题。 (Reference)。唉,即使你跑了
gradle --refresh-dependencies
,它并不是真正的所有依赖项。一些垃圾仍然存在。 (Reference)。
因此,最确定(但极端和长期)的变体是从[user] /。gradle / caches清除所有内部。或者在那里找到你的问题项目并清除它的缓存。
答案 4 :(得分:1)
在使用低功耗蓝牙(BLE)的应用程序上,我尝试了此处给出的解决方案。我尝试过,
所有这些都失败了。
我所做的是调试我认为自己收到警告的地方,但仍然收到警告,但应用程序运行正常。您可以忽略警告。
答案 5 :(得分:1)
这是对我有用的步骤(适用于Mac和Windows):
答案 6 :(得分:0)
转到项目设置>文物。选择出现问题的工件。有一个选项“包含在项目构建中”。这需要检查(启用)。对于旧版本的IntelliJ,此选项为“Make on build”。
答案 7 :(得分:0)
可能这个错误消息可能有多个原因,我的情况与OP中的情况不同,在我的情况下,这是由于第三方库需要额外的库。
例如:您手动将X.jar添加到LIB中,但此X.jar需要Z.jar才能工作。
我花了一些时间才弄明白,这条消息根本没有帮助。我必须调试应用程序,直到我到达崩溃类,并在该类中确保所有导入都满意。
(Particualry:我添加了MercadoLibre-0.3.4.jar,它需要commons-httpclient.jar)
希望这有帮助!
答案 8 :(得分:0)
如果您启用了ProGuard,也会发生这种情况。在buildTypes中,设置minifyEnabled为false,shrinkResources为false,useProguard为false
答案 9 :(得分:0)
我尝试了这里给出的所有解决方案,但没有一个对我有用。在版本2019.1.3中,我只是清理并重建工件,并且它起作用了;首先执行Build -> Build Artifacts... -> <select your artifact> -> Clean
,然后在同一位置单击Build
或Rebuild
。
答案 10 :(得分:0)
我的应用程序是在API LEVEL 29上编译的,但是在API LEVEL 28的真实设备上进行调试。我在AndroidStudio中收到了警告source code does not match the bytecode
。我修正了这些步骤:
转到“偏好设置”>即时运行:取消选中即时运行
转到Build>清理Build
重新运行应用程序
现在,调试正常运行。
答案 11 :(得分:0)
您可以创建AVD,选择等于您的tagetApi和r compileApi的API级别,
答案 12 :(得分:0)
所以我创建了一个帐户,只是为了帮助解决这个困扰很多人的问题,并且上述修复无效的地方。
如果收到此错误,但这里没有任何帮助。尝试单击“恢复程序播放按钮”,直到该程序结束并超过错误为止。然后单击“调试”旁边的控制台选项卡,然后阅读红色文本。
即使我的问题试图将值插入到空数组中,我仍然遇到该源代码错误。 Step 1 Click the resume button
答案 13 :(得分:0)
这就是为什么我收到此错误“源代码与字节码不匹配”的原因。我的原因与任何 API、编译器版本都没有任何关系......这是由于我将布局视图膨胀到根视图而我错误地在其他地方启动了充气器(“结果处理程序”的夹子)放在 android 应用程序代码的 onCreate 函数之上的代码)。不知何故,当设置断点并在此处停止时,调试器没有给我正确的提示(例如,充气器未初始化或具有实例)。
答案 14 :(得分:-1)
Android Studio在您的应用程序中使用的源版本等于“目标版本”。使用与上述编译版本相同的源版本进行编译。因此,请注意项目中的Compile Version == Target Version(调整模块的build.gradle文件)。
答案 15 :(得分:-1)
我遇到了同样的问题,并找到了解决方案。如果您用红色标记一行,则会出现此错误,但是如果取消标记所有行,它将正常工作。
由标记表示,是指单击行号所在的左侧并突出显示该行。
如果不清楚,请看图片。
从...来:
flagged line
至:
not flagged line