Android Studio调试报错:Source code does not match the byte code
以下是针对调试时跳转SDK反编译类、"Source code does not match the byte code"提示及跳行问题的可行排查步骤:
检查全局断点状态
打开调试面板,确认**"Skip all breakpoints"按钮**(带斜杠的断点图标)未被激活,该状态会导致断点失效并触发异常跳转。关闭即时运行功能
进入File > Settings > Build, Execution, Deployment > Instant Run,取消勾选Enable Instant Run to hot swap code/resource changes on deploy,即时运行的热替换机制常引发字节码与源码不匹配。调整调试器配置
打开Run > Edit Configurations,选中目标调试配置后切换到Debugger标签页:- 取消勾选Use auto-build,避免调试过程中自动构建改写字节码;
- 将Debug type设置为
Java(部分Kotlin场景下切换类型可修复跳行问题); - 勾选Show alternative source switcher,调试时可手动选择对应源码文件。
彻底清理编译缓存
- 执行
File > Invalidate Caches...,勾选Clear file system cache and local history后重启Android Studio; - 手动删除项目根目录的
.gradle、build文件夹,以及用户目录下的.gradle/caches文件夹; - 重新执行
Build > Rebuild Project。
- 执行
对齐Kotlin版本与插件版本
打开File > Project Structure > Modules,确认项目依赖的Kotlin版本与Android Studio内置Kotlin插件版本一致;若不一致,在File > Settings > Plugins中调整Kotlin插件版本,同步后重新构建。调试阶段禁用混淆压缩
打开app/build.gradle,在buildTypes > debug块中添加如下配置:minifyEnabled false shrinkResources false同步项目后重新构建,避免混淆导致字节码与源码脱节。
重置断点设置
进入Run > View Breakpoints,点击Remove all清空所有断点,重新在可执行代码行添加断点测试。
内容的提问来源于stack exchange,提问作者Adriano

