对于Android studio调试的时候,我们经常会需要debug到源码内部,这个时候经常会出现debug位置与源码行号对应不上的问题,这是因为我们使用的测试设备中的系统版本与我们AndroidStudio中使用的SourceCode的版本不一致导致的。比如我们使用的是6.0的设备,而Android Studio错误地识别并使用了版本为8.0的SourceCode,就会出现这个问题。我们从google Issue Tracker可以知道,该问题是已知bug:https://issuetracker.google.com/issues/37058409
据说官方说,这个问题很早就已经解决了,但是实际上我们现在能下载到的版本依旧存在该问题(笔者目前的版本 Android Studio 3.0.1)。目前有两种方案可以暂时解决这个问题。
1. 偷梁换柱:将SourceCode人为替换掉
我们可以在我们的SDK目录下找到 sources目录,这里面存放的是我们所下载的各个系统版本的源码资源,找到发生错误的源码资源,再用正确的资源替换掉。比如针对我们上面6.0(API 23)系统被错误使用8.0(API 26)的问题,我们进入到sources目录,将android-26目录名称改为android-26-ori,再复制一个android-23,将复制出来的目录改为android-26。之后重启Android Studio就会发现可以正常对应了,强烈推荐使用该方法。
2. 改头换面:将配置文件中的compileSdkVersion和buildToolsVersion都改为指定API
该方法需要我们将build.gradle中的配置进行修改,使其改为我们设备对应的版本。该方法适用性有限,因为改完之后常常会出现一堆的编译报错,而且对于大工程来说,这种改编译版本的方法代价实在太大,所以这里并不推荐。