最簡(jiǎn)單的Android Studio閱讀Android源碼方式

最簡(jiǎn)單的閱讀Android源碼方式(方便、快捷、完整)

對(duì)于Android開發(fā)人員閱讀Android系統(tǒng)源碼是非常重要的事情,但很多時(shí)候我們關(guān)心的只是framework層的源碼。

但是網(wǎng)上一搜全是教我們?cè)鯓影袮ndroid源碼通過AOSP先下載到本地,然后進(jìn)行編譯,然后再導(dǎo)入到AS中進(jìn)行調(diào)試的。這個(gè)過程是一個(gè)非常痛苦的過程,首先源碼體積非常大,下載非常困難,占的磁盤空間也非常大。然后編譯的話必須要有l(wèi)inux環(huán)境。即使編譯好了由于源碼太多,導(dǎo)入過程也是一個(gè)非常耗時(shí)間的過程。這個(gè)過程誰經(jīng)歷過誰知道。

為了解決上面的問題,讓我們能夠絲滑的在AS中閱讀上framework層源碼。我在將Android10源碼編譯完成后,將我們不關(guān)心的源碼全部刪除掉,只保留了framework層的源碼,然后對(duì)其中的對(duì)大文件,無用文件進(jìn)行移除。這樣就將整個(gè)包體積降到了1G一下,文件數(shù)量也減少了到了3萬多個(gè)。

我們開發(fā)者只需要將我項(xiàng)目中的源碼下載下來,然后再經(jīng)過簡(jiǎn)單的配置,就可以在Androd Studio 上非常絲滑的閱讀FrameWork源碼了,跳轉(zhuǎn),搜索、寫注釋什么的都是沒任何問題的。????

使用

  1. 項(xiàng)目 中的代碼下載下來

  2. 打開AS,通過 Open an Existing Project 打開 android10 下面的 android.ipr文件

  3. 將源碼只關(guān)聯(lián)本地,將dependecies下面的只留下下面兩個(gè)。

    20210606132744.jpg

成功導(dǎo)入之后,就可以愉快的看源碼了,速度還是挺快的,如果感覺還是有點(diǎn)卡頓的話,可以將AS安裝目錄下的的studio.vmoptions調(diào)大一些。

-Xms2048m
-Xmx4049m
-XX:ReservedCodeCacheSize=500m
-XX:+UseG1GC
-XX:SoftRefLRUPolicyMSPerMB=50
-XX:CICompilerCount=3

更多

如果需要閱讀其他模塊的源碼的話,可以將整個(gè)Android10的源碼下載下來,然后將對(duì)應(yīng)的模塊拷貝到項(xiàng)目android10目錄下,并在android.iml中對(duì)應(yīng)的模塊移除配置刪掉。比如加入了packages模塊,然后將下面這行刪除。

<excludeFolder url="file://$MODULE_DIR$/packages" />

Android10整個(gè)源碼

鏈接: https://pan.baidu.com/s/1V-stMpLw3xs9k2Zx7hvv8Q 密碼:ifq4

如果有喜歡折騰的,需要編譯整個(gè)系統(tǒng)源碼,并調(diào)試運(yùn)行整個(gè)系統(tǒng)的??梢詤⒖歼@個(gè) AndroidStudio源碼開發(fā)環(huán)境搭建 ,過程有些復(fù)雜。

編譯源碼容易遇到編譯出錯(cuò)的問題。如果遇到下面問題的話,可以考慮如下解決

1.用于初始化環(huán)境變量

soruce build/envsetup.sh  

2.生成 idegen.jar 文件

這個(gè)可能會(huì)生成失敗,如果生成失敗的話,可以通過下面的鏈接將idea.jar下載到本地,然后將idea.jar拷貝到 out/host/linux-x86/framework/idegen.jar ,再執(zhí)行下面的命令
鏈接: https://pan.baidu.com/s/17lfmVAs8HRrsk5hbyzkNjA 密碼:2gbx

mmm development/tools/idegen/  
  1. 源碼根目錄生成文件android.ipr(工程相關(guān)設(shè)置), android.iml(模塊相關(guān)配置)
./development/tools/idegen/idegen.sh
  1. 生成了源碼后,就可以通過AS打開android.ipr了,??注意導(dǎo)入整個(gè)android源碼會(huì)非常卡頓,除非必要,否則還是建議只導(dǎo)入自己需要的源碼部分。相關(guān)的導(dǎo)入配置,在 android.iml中,可以根據(jù)需要通過 excludeFolder 在android.iml文件中將不需要的模塊移除掉。我的項(xiàng)目中的配置如下。
 <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>

項(xiàng)目地址:https://github.com/AndroidBBQ/android10

如果本文可以幫助到您,麻煩點(diǎn)個(gè)star吧!??????

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

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

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