? ? 對(duì)于Android studio調(diào)試的時(shí)候,我們經(jīng)常會(huì)需要debug到源碼內(nèi)部,這個(gè)時(shí)候經(jīng)常會(huì)出現(xiàn)debug位置與源碼行號(hào)對(duì)應(yīng)不上的問(wèn)題,這是因?yàn)槲覀兪褂玫臏y(cè)試設(shè)備中的系統(tǒng)版本與我們AndroidStudio中使用的SourceCode的版本不一致導(dǎo)致的。比如我們使用的是6.0的設(shè)備,而Android Studio錯(cuò)誤地識(shí)別并使用了版本為8.0的SourceCode,就會(huì)出現(xiàn)這個(gè)問(wèn)題。我們從google? Issue Tracker可以知道,該問(wèn)題是已知bug:https://issuetracker.google.com/issues/37058409
? ? 據(jù)說(shuō)官方說(shuō),這個(gè)問(wèn)題很早就已經(jīng)解決了,但是實(shí)際上我們現(xiàn)在能下載到的版本依舊存在該問(wèn)題(筆者目前的版本 Android Studio 3.0.1)。目前有兩種方案可以暫時(shí)解決這個(gè)問(wèn)題。
1. 偷梁換柱:將SourceCode人為替換掉
? ? 我們可以在我們的SDK目錄下找到 sources目錄,這里面存放的是我們所下載的各個(gè)系統(tǒng)版本的源碼資源,找到發(fā)生錯(cuò)誤的源碼資源,再用正確的資源替換掉。比如針對(duì)我們上面6.0(API 23)系統(tǒng)被錯(cuò)誤使用8.0(API 26)的問(wèn)題,我們進(jìn)入到sources目錄,將android-26目錄名稱改為android-26-ori,再?gòu)?fù)制一個(gè)android-23,將復(fù)制出來(lái)的目錄改為android-26。之后重啟Android Studio就會(huì)發(fā)現(xiàn)可以正常對(duì)應(yīng)了,強(qiáng)烈推薦使用該方法。
2. 改頭換面:將配置文件中的compileSdkVersion和buildToolsVersion都改為指定API
? ? 該方法需要我們將build.gradle中的配置進(jìn)行修改,使其改為我們?cè)O(shè)備對(duì)應(yīng)的版本。該方法適用性有限,因?yàn)楦耐曛蟪3?huì)出現(xiàn)一堆的編譯報(bào)錯(cuò),而且對(duì)于大工程來(lái)說(shuō),這種改編譯版本的方法代價(jià)實(shí)在太大,所以這里并不推薦。