最簡單的閱讀Android源碼方式(方便爬早、快捷、完整)
對于Android開發(fā)人員閱讀Android系統(tǒng)源碼是非常重要的事情启妹,但很多時候我們關(guān)心的只是framework層的源碼。
但是網(wǎng)上一搜全是教我們怎樣把Android源碼通過AOSP先下載到本地醉旦,然后進行編譯饶米,然后再導(dǎo)入到AS中進行調(diào)試的。這個過程是一個非常痛苦的過程车胡,首先源碼體積非常大檬输,下載非常困難,占的磁盤空間也非常大匈棘。然后編譯的話必須要有l(wèi)inux環(huán)境丧慈。即使編譯好了由于源碼太多,導(dǎo)入過程也是一個非常耗時間的過程。這個過程誰經(jīng)歷過誰知道逃默。
為了解決上面的問題鹃愤,讓我們能夠絲滑的在AS中閱讀上framework層源碼。我在將Android10源碼編譯完成后完域,將我們不關(guān)心的源碼全部刪除掉软吐,只保留了framework層的源碼,然后對其中的對大文件吟税,無用文件進行移除凹耙。這樣就將整個包體積降到了1G一下,文件數(shù)量也減少了到了3萬多個肠仪。
我們開發(fā)者只需要將我項目中的源碼下載下來肖抱,然后再經(jīng)過簡單的配置,就可以在Androd Studio 上非常絲滑的閱讀FrameWork源碼了异旧,跳轉(zhuǎn)意述,搜索、寫注釋什么的都是沒任何問題的泽艘。????
使用
將 項目 中的代碼下載下來
打開AS欲险,通過 Open an Existing Project 打開 android10 下面的 android.ipr文件
-
將源碼只關(guān)聯(lián)本地,將dependecies下面的只留下下面兩個匹涮。
20210606132744.jpg
成功導(dǎo)入之后天试,就可以愉快的看源碼了,速度還是挺快的然低,如果感覺還是有點卡頓的話喜每,可以將AS安裝目錄下的的studio.vmoptions調(diào)大一些。
-Xms2048m
-Xmx4049m
-XX:ReservedCodeCacheSize=500m
-XX:+UseG1GC
-XX:SoftRefLRUPolicyMSPerMB=50
-XX:CICompilerCount=3
更多
如果需要閱讀其他模塊的源碼的話雳攘,可以將整個Android10的源碼下載下來带兜,然后將對應(yīng)的模塊拷貝到項目android10目錄下,并在android.iml中對應(yīng)的模塊移除配置刪掉吨灭。比如加入了packages模塊刚照,然后將下面這行刪除。
<excludeFolder url="file://$MODULE_DIR$/packages" />
Android10整個源碼
鏈接: https://pan.baidu.com/s/1V-stMpLw3xs9k2Zx7hvv8Q 密碼:ifq4
如果有喜歡折騰的喧兄,需要編譯整個系統(tǒng)源碼无畔,并調(diào)試運行整個系統(tǒng)的》驮可以參考這個 AndroidStudio源碼開發(fā)環(huán)境搭建 ,過程有些復(fù)雜浑彰。
編譯源碼容易遇到編譯出錯的問題。如果遇到下面問題的話拯辙,可以考慮如下解決
1.用于初始化環(huán)境變量
soruce build/envsetup.sh
2.生成 idegen.jar 文件
這個可能會生成失敗郭变,如果生成失敗的話,可以通過下面的鏈接將idea.jar下載到本地,然后將idea.jar拷貝到 out/host/linux-x86/framework/idegen.jar 诉濒,再執(zhí)行下面的命令
鏈接: https://pan.baidu.com/s/17lfmVAs8HRrsk5hbyzkNjA 密碼:2gbx
mmm development/tools/idegen/
- 源碼根目錄生成文件android.ipr(工程相關(guān)設(shè)置), android.iml(模塊相關(guān)配置)
./development/tools/idegen/idegen.sh
- 生成了源碼后周伦,就可以通過AS打開android.ipr了,??注意導(dǎo)入整個android源碼會非逞撸卡頓横辆,除非必要,否則還是建議只導(dǎo)入自己需要的源碼部分茄猫。相關(guān)的導(dǎo)入配置狈蚤,在 android.iml中,可以根據(jù)需要通過
excludeFolder
在android.iml文件中將不需要的模塊移除掉划纽。我的項目中的配置如下脆侮。
<excludeFolder url="file://$MODULE_DIR$/.repo"/>
<excludeFolder url="file://$MODULE_DIR$/abi"/>
<excludeFolder url="file://$MODULE_DIR$/frameworks/base/docs"/>
<excludeFolder url="file://$MODULE_DIR$/art"/>
<excludeFolder url="file://$MODULE_DIR$/bionic"/>
<excludeFolder url="file://$MODULE_DIR$/bootable"/>
<excludeFolder url="file://$MODULE_DIR$/build"/>
<excludeFolder url="file://$MODULE_DIR$/cts"/>
<excludeFolder url="file://$MODULE_DIR$/dalvik"/>
<excludeFolder url="file://$MODULE_DIR$/developers"/>
<excludeFolder url="file://$MODULE_DIR$/development"/>
<excludeFolder url="file://$MODULE_DIR$/device"/>
<excludeFolder url="file://$MODULE_DIR$/docs"/>
<excludeFolder url="file://$MODULE_DIR$/external"/>
<excludeFolder url="file://$MODULE_DIR$/hardware"/>
<excludeFolder url="file://$MODULE_DIR$/kernel-3.18"/>
<excludeFolder url="file://$MODULE_DIR$/libcore"/>
<excludeFolder url="file://$MODULE_DIR$/libnativehelper"/>
<excludeFolder url="file://$MODULE_DIR$/ndk"/>
<excludeFolder url="file://$MODULE_DIR$/out"/>
<excludeFolder url="file://$MODULE_DIR$/pdk"/>
<excludeFolder url="file://$MODULE_DIR$/platform_testing"/>
<excludeFolder url="file://$MODULE_DIR$/prebuilts"/>
<excludeFolder url="file://$MODULE_DIR$/rc_projects"/>
<excludeFolder url="file://$MODULE_DIR$/sdk"/>
<excludeFolder url="file://$MODULE_DIR$/system"/>
<excludeFolder url="file://$MODULE_DIR$/tools"/>
<excludeFolder url="file://$MODULE_DIR$/trusty"/>
<excludeFolder url="file://$MODULE_DIR$/vendor"/>
//注意上面的這些移除文件的配置放到 </content> 標(biāo)志的上面
</content>
項目地址:https://github.com/AndroidBBQ/android10