前言
Android Studio 3.0已經(jīng)正式發(fā)布了面哥,里面內(nèi)置了Device File Explorer琉朽,可以非常方便地瀏覽手機(jī)上的非隱藏文件。但是在開發(fā)過程中經(jīng)常需要查看應(yīng)用產(chǎn)生的隱藏文件,比如崩潰日志等等减牺。本來以為as的Device File Explorer會有設(shè)置页徐,可以打開苏潜,能夠查看到隱藏文件。但是as的設(shè)置研究了半天泞坦,最后沒有找到窖贤。到網(wǎng)上搜索了下相關(guān)的問題,也沒有人能夠解決贰锁。最后博主決定親自動手赃梧,嘗試自己來解決這個問題⊥阆ǎ基本的思路就是Android Studio是開源的工程授嘀,只要找到源代碼,肯定就能找到解決方案锣险,大不了自己改改代碼編譯一個as蹄皱。接下來就帶大家講述下解決的歷程。
下載as代碼
as本身屬于ASOP的一個子工程芯肤,我們按照下載安卓源代碼的方法巷折,切換到as的分支即可。大家可以按照以下鏈接asop進(jìn)行操作崖咨,只需要把repo init的分支換成as 3.0的分支名稱studio-3.0锻拘。
閱讀as文件管理器源代碼
下載好as的源代碼后,我們可以安裝個IntelliJ,導(dǎo)入as的工程署拟。這里需要注意下導(dǎo)入as工程的根目錄是tools/idea婉宰。然后博主根據(jù)File這個關(guān)鍵字去瀏覽源代碼,尋找Device File Explorer相關(guān)的代碼推穷。Device File Explorer的代碼實(shí)在android子工程的com.android.tools.idea.explorer包下面心包。其實(shí)Device File Explorer的原理就是將ls命令發(fā)送給手機(jī)端進(jìn)行執(zhí)行,然后將執(zhí)行的結(jié)果傳到as進(jìn)行解析馒铃。為什么as默認(rèn)沒有顯示隱藏的文件呢蟹腾?原因是因?yàn)榘l(fā)送給手機(jī)端執(zhí)行的命令是"ls -l",熟悉shell命令的同學(xué)應(yīng)該知道骗露,要想顯示隱藏文件需要添加"-a"參數(shù)岭佳。而發(fā)送ls命令的代碼是在AdbFileListing.java的第69行,理論上只需要再加上就可以了萧锉,當(dāng)然我們還需要編譯一下才能夠確認(rèn)珊随。給大家貼上修改后的代碼,其實(shí)就只是加了一個字符:
編譯as
修改源代碼厚柿隙,我們需要編譯as工程叶洞,進(jìn)行驗(yàn)證。編譯的過程禀崖,可以按照as的官方文檔衩辟。按照文檔的步驟,基本沒有什么問題波附。編譯完成后艺晴,as的安裝包是在tools/idea/out/artifacts。然后博主趕緊解壓運(yùn)行起來掸屡,發(fā)現(xiàn)果然可以顯示隱藏文件了封寞。以下是截圖:
補(bǔ)丁jar
進(jìn)行到上一步之后,博主編譯出來的是全量的as安裝文件仅财。為了方便其他同學(xué)狈究,又研究了下看看能不能夠用補(bǔ)丁包的方式,使得Device File Explorer顯示隱藏文件盏求。最后研究了Device File Explorer的代碼是編譯到了plugin/android.jar抖锥,所以我們是需要把修改后的android.jar覆蓋一下即可。使用MAC的同學(xué)可以下載博主修改后編譯生成的android.jar碎罚,點(diǎn)擊下載磅废。然后在應(yīng)用程序中找到as,右鍵顯示包內(nèi)容荆烈,將下載的android.jar覆蓋到plugins/android/lib目錄下还蹲,為了安全起見可以將原來的android.jar備份下。使用Windows的同學(xué),只需要找到as的目錄谜喊,將下載的android.jar覆蓋到plugins/android/lib。注意需要重啟下as倦始,然后就可以看到隱藏文件咯:)
總結(jié)
寫到這里斗遏,博主還是蠻興奮的,第一次動手去修改開發(fā)工具鞋邑,接下來準(zhǔn)備好好研究as的源代碼诵次,深入剖析下Device File Explorer的架構(gòu),敬請期待枚碗。