国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術文章
文章詳情頁

Android Studio如何查看源碼并調試的方法步驟

瀏覽:4日期:2022-09-24 11:29:32

背景

最近遇到一個Dialog問題,在6.0的手機上才可以重現(xiàn),但是我們的工程已經(jīng)是targetsdk=28了,點擊Dialog的引用,只能看見28的class文件,現(xiàn)在我也越來越懶了,以前針對這種問題,我都會寫個demo,去重現(xiàn)問題,但是現(xiàn)在希望能直接在當前工程快速定位出原因,能夠基于源碼debug肯定更好了,為了實現(xiàn)這個懶的目標,我找了很多辦法,下面就一一介紹下

方法一 切換compilesdk

studio默認使用的是gradle里配置的compilesdkversion,只要你把compilesdkversi設置成23,自然就可以通過查看define的快捷鍵,進入到對應的class文件,但是我的項目已經(jīng)是28了,降回6.0,必然有很多API無法編譯,此路不同

方法二 尋找studio插件

既然studio提供的默認方式不行,那我們就找插件來實現(xiàn)呢?通過各種搜索大法,我找到了一款不錯的插件,AndroidSourceViewer ; 功能十分強大:

支持查看 Android / Java 任意版本源碼 支持對比 Android / Java 任意兩個版本源碼差異 支持 Android 官網(wǎng)文檔查看和方法定位 支持 Native 方法源碼查看

具體可以看截圖:

正當我滿心歡喜的開啟debug時,發(fā)現(xiàn)studio無法識別該代碼,原因是作者的思路是在類名前面加版本號。。。例如.AndroidSourceViewer/cache/android/app/8.0.0_r4-Dialog.java于是我憤怒的提了個issue此路再次失敗

方法三 修改studio配置,直接鏈接到對應源碼

我的想法時,我找到studio跳轉源碼的配置文件,將原本跳到28的jar包的配置,修改成23,這樣不就完美了,于是我又開啟了搜索大法,網(wǎng)上都說,修改jdk-table.xml,可以達到我的目的,然而。。親測不可以;不論我怎么修改,都沒有反應;于是我又想到了idea的緩存,果然功夫不負有心人,我找到了這么個文件:

.idea/libraries/Gradle__android_android_28.xml

<component name='libraryTable'> <library name='Gradle: android-android-28'> <CLASSES> <root url='jar://$USER_HOME$/Library/Android/sdk/platforms/android-27/android.jar!/' /> </CLASSES> <JAVADOC /> <SOURCES> <root url='file://$USER_HOME$/Library/Android/sdk/sources/android-28' /> </SOURCES> </library></component>

PS:該文件可能沒有,大家可以手動添加到自己的緩存里

通過修改這個文件,只要源碼路徑存在,那就可以很方便的其他版本的源碼并且調試了;但是修改源碼路徑有風險,大家還是謹慎操作,同時記得不用的時候清空緩存。。

總結

現(xiàn)在國內網(wǎng)上很多文章,都是復制的,我也不知道為啥;像我搜到的jdk-table.xml,根本沒法用,可能它只是對新項目生效的,有可能是studio版本升級導致,總之,這個文章的原作者也是很辛苦的,但是其他人復制過去,又不加以維護,實在是誤人子弟。。

另外一點就是,可以看源碼還是很爽的~

到此這篇關于Android Studio如何查看源碼并調試的方法步驟的文章就介紹到這了,更多相關Android Studio查看源碼并調試內容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持好吧啦網(wǎng)!

標簽: Android
相關文章:
主站蜘蛛池模板: 自贡市| 龙南县| 广丰县| 耒阳市| 从化市| 永修县| 荥阳市| 花莲县| 汶川县| 建瓯市| 安多县| 科技| 唐河县| 翁牛特旗| 河曲县| 友谊县| 资阳市| 土默特右旗| 翁牛特旗| 清徐县| 鄱阳县| 博乐市| 沙湾县| 东乡县| 霍山县| 德清县| 蓝山县| 墨江| 临泽县| 邵武市| 隆尧县| 兰坪| 池州市| 肇源县| 沭阳县| 广宗县| 丰宁| 和林格尔县| 景宁| 阳新县| 扬中市|