關(guān)鍵字: DexClassLoader throw new RuntimeException("Stub!")
Android Studio 查看 dalvik.system 包源碼
在看 DexClassLoader
源碼的時候發(fā)現(xiàn)無論如何都關(guān)聯(lián)不到源碼,明明在 SDK Manager
中已經(jīng)下載了相應(yīng)的 SDK
源碼究西,就是無法查看物喷。但是呢,其他部分源碼還是能看到的峦失,比如:ViewrootImp
等。然后發(fā)現(xiàn)所有 dalvik
都沒有源碼尉辑。最終解決辦法:
1、去 AOSP
中下載相應(yīng)的源碼
2实幕、關(guān)聯(lián)源碼
下載源碼
AOSP 中,我們平時用到最多的 Framwork
源碼都在 platform/libcore
這個目錄下面,找到相應(yīng)的 Android 源碼版本就能看到 dalvik 目錄末贾,進入。然后再右上角有 [tgz] 的字樣,點擊下載即可表蝙。
關(guān)聯(lián)源碼
我們所有的源碼都放在 sdk 目錄的 source 目錄下
可以看到你的源碼目錄是沒有 dalvik 目錄的乓旗,之前的 AS 版本是有自動下載的,不知道從哪個版本開始就不會再下載了汇跨,將你下載的源碼直接拷貝到對應(yīng)的平臺的 dalvik 目錄下即可(目錄一定不要搞錯了)
重啟 AS 即可看到
在解決這個問題期間,用各種關(guān)鍵字穷遂,查找了各種解決方案,都不盡如意蚪黑,有很多都是修改 AS 源碼關(guān)聯(lián)配置的方法中剩,但是沒什么卵用,既然解決不了問題就要自己去解決结啼。通過查找各種資料途中,也總結(jié)了一些經(jīng)驗妆棒。
1、碰到問題最快最直接的方式是在吸取前輩的人的經(jīng)驗糕珊,有解決方案最好不過了
2、是不是搜索關(guān)鍵字不準確红选?各種嘗試搜索關(guān)鍵字,信息檢索能力也是非常重要的一環(huán)
3喇肋、從信息檢索中就算沒有解決問題,也可以搜集到一些經(jīng)驗甚侣,比如說上面碰到的問題,可以通過修改 AS 源碼路徑配置來關(guān)聯(lián)源碼殷费。不經(jīng)讓我反問自己幾個問題
- AS 是如何關(guān)聯(lián)源碼的印荔,關(guān)聯(lián)的機制是什么
- 源碼在源碼放在哪里仍律?為什么沒有關(guān)聯(lián)上,是沒有源碼水泉,還是有源碼關(guān)聯(lián)不上?
- 對上述問題進行查找驗證草则,發(fā)現(xiàn)源碼目錄真是沒有 DexClassLoader 源碼
- 沒有源碼這么解決?我已經(jīng)熟悉了 AS 源碼關(guān)聯(lián)機制能不能自己下載源碼關(guān)聯(lián)
- 去哪里下載畔师?下載后放哪里牧牢?
上述是一系列解決問題的思路鏈路,覺得自己還需要多多鍛煉這種解決問題的思路和能力塔鳍。
順便提一下,SDK 提供了兩份代碼轮纫,需要注意兩個比較重要的文件夾,platforms
和 sources
掌唾,platforms
中是 SDK 提供給開發(fā)者各個平臺的源碼jar包,用來編譯使用糯彬,這里面只有 .class 文件。但是如果我們需要看源碼似扔,必須下載對應(yīng)的 .java 文件。依次類推炒辉,Gradle 管理的所有源碼也是這個機制。我們平時 maven 上傳庫的時候黔寇,也是傳兩份,一份jar包缝裤,一份源碼。