Android Studio 看不到 DexClassLoader 源碼

關鍵字: DexClassLoader throw new RuntimeException("Stub!")
Android Studio 查看 dalvik.system 包源碼

在看 DexClassLoader 源碼的時候發(fā)現(xiàn)無論如何都關聯(lián)不到源碼,明明在 SDK Manager 中已經(jīng)下載了相應的 SDK 源碼,就是無法查看。但是呢,其他部分源碼還是能看到的,比如:ViewrootImp 等。然后發(fā)現(xiàn)所有 dalvik 都沒有源碼。最終解決辦法:
1、去 AOSP 中下載相應的源碼
2、關聯(lián)源碼

下載源碼

AOSP 中,我們平時用到最多的 Framwork 源碼都在 platform/libcore 這個目錄下面,找到相應的 Android 源碼版本就能看到 dalvik 目錄,進入。然后再右上角有 [tgz] 的字樣,點擊下載即可。

image.png

關聯(lián)源碼

我們所有的源碼都放在 sdk 目錄的 source 目錄下


image.png

可以看到你的源碼目錄是沒有 dalvik 目錄的,之前的 AS 版本是有自動下載的,不知道從哪個版本開始就不會再下載了,將你下載的源碼直接拷貝到對應的平臺的 dalvik 目錄下即可(目錄一定不要搞錯了)
重啟 AS 即可看到

在解決這個問題期間,用各種關鍵字,查找了各種解決方案,都不盡如意,有很多都是修改 AS 源碼關聯(lián)配置的方法,但是沒什么卵用,既然解決不了問題就要自己去解決。通過查找各種資料途中,也總結(jié)了一些經(jīng)驗。
1、碰到問題最快最直接的方式是在吸取前輩的人的經(jīng)驗,有解決方案最好不過了
2、是不是搜索關鍵字不準確?各種嘗試搜索關鍵字,信息檢索能力也是非常重要的一環(huán)
3、從信息檢索中就算沒有解決問題,也可以搜集到一些經(jīng)驗,比如說上面碰到的問題,可以通過修改 AS 源碼路徑配置來關聯(lián)源碼。不經(jīng)讓我反問自己幾個問題

  • AS 是如何關聯(lián)源碼的,關聯(lián)的機制是什么
  • 源碼在源碼放在哪里?為什么沒有關聯(lián)上,是沒有源碼,還是有源碼關聯(lián)不上?
  • 對上述問題進行查找驗證,發(fā)現(xiàn)源碼目錄真是沒有 DexClassLoader 源碼
  • 沒有源碼這么解決?我已經(jīng)熟悉了 AS 源碼關聯(lián)機制能不能自己下載源碼關聯(lián)
  • 去哪里下載?下載后放哪里?

上述是一系列解決問題的思路鏈路,覺得自己還需要多多鍛煉這種解決問題的思路和能力。
順便提一下,SDK 提供了兩份代碼,需要注意兩個比較重要的文件夾,platformssources ,platforms 中是 SDK 提供給開發(fā)者各個平臺的源碼jar包,用來編譯使用,這里面只有 .class 文件。但是如果我們需要看源碼,必須下載對應的 .java 文件。依次類推,Gradle 管理的所有源碼也是這個機制。我們平時 maven 上傳庫的時候,也是傳兩份,一份jar包,一份源碼。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容