Android studio導(dǎo)入Android源碼并解決代碼跳轉(zhuǎn)

Android studio (android studio for platform) - ASfP

1. 完整編譯AOSP源碼

有些java文件是在編譯過程中動態(tài)生成的,需要完整編譯一遍,源碼的依賴才能完整。

$ source build/envsetup.sh # 初始化環(huán)境變量
$ make -j16 #完整編譯 且 -j16進程根據(jù)電腦配置相關(guān),一般是處理器/內(nèi)核 數(shù)的一半。

2. 生成IDE導(dǎo)入的工程文件

$ source build/envsetup.sh
$ make idegen
# 或者 mmm development/tools/idegen/ #及 單編framework/idegen.jar

# 如果提示權(quán)限問題,請用sudo執(zhí)行下述命令
$ ./development/tools/idegen/idegen.sh

執(zhí)行完成后,在AOSP根目錄下生成文件:

android.iml # 導(dǎo)入前需先編輯這個文件
android.ipr # 在Android studio中打開這個文件,導(dǎo)入源碼工程

3. 導(dǎo)入前,編輯工程文件

為了提高加載速度需要修改以下部分
編輯android.iml文件,需要修改2部分內(nèi)容:

  1. 增加excludeFolder列表,排除不需要的源碼路徑,這樣可以加快導(dǎo)入和創(chuàng)建文件索引的速度。在.iml文件中有少了的excludeFolder項,在后面根據(jù)自己需要補充即可。例如:
...
<excludeFolder url="file://$MODULE_DIR$/frameworks"/>
<excludeFolder url="file://$MODULE_DIR$/kernel"/>
<excludeFolder url="file://$MODULE_DIR$/packages"/>
<excludeFolder url="file://$MODULE_DIR$/sdk"/>
<excludeFolder url="file://$MODULE_DIR$/system"/>
...

說明:也可以通過修改development/tools/idegen/excluded-paths文件,增加/排除的路徑。

  1. 刪除所有<orderEntry type="module-library">...</orderEntry>項。這些項是引用的源碼中編譯出來的jar包,如果保留,在瀏覽過程中查看類型跳轉(zhuǎn)到這些jar中的class文件,而不是源碼java文件。刪除后,則可以直接跳轉(zhuǎn)到源碼文件。
    說明:這些設(shè)置也可以在Android studio:project structure --> project settings --> modules --> dependencies中修改,速度比較慢,不如直接編輯.iml文件方便。
    例如:
<orderEntry type="module-library">
  <library>
    <CLASSES>
      <root url="jar://$MODULE_DIR$/./AMSS/lagvm/LINUX/android/out/target/product/prodname/system/framework/locksettings.jar!/" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</orderEntry>
<orderEntry type="module-library">
  <library>
    <CLASSES>
      <root url="jar://$MODULE_DIR$/./AMSS/lagvm/LINUX/android/out/target/product/prodname/system/framework/framework.jar!/" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>

4. 在Android Studio中導(dǎo)入工程

在Android Studio中open打開上面生成的android.ipr文件。如果完成了上面的編輯,并且僅保留所需的源碼目錄,加載時間會比較短。
加載完成后,可以完整的瀏覽、編輯代碼了。
當(dāng)關(guān)閉AS時,會把當(dāng)前的配置和索引保存到文件android.iws中。以后再次打開工程就會很快。

修改Android Studio配置參數(shù):

1)Help - Edit custom Properties:  
    (對應(yīng)配置文件:~/.config/Google/AndroidStudio$version/idea.properties)
    idea.max.intellisense.filesize=100000
2)Help - Edit custom VM options:
    (對應(yīng)配置文件:~/.config/Google/AndroidStudio$version/studio64.vmoptions)
    -Xms1g
    -Xmx5g

如果修改參數(shù)錯誤,導(dǎo)致studio不能正常啟動,可以手動編輯對應(yīng)的配置文件,刪除或者調(diào)整相關(guān)參數(shù)。

5.配置源碼正確跳轉(zhuǎn)

導(dǎo)入工程后要想正常跳轉(zhuǎn)源碼而不是各種jar包,則需要提升源碼的優(yōu)先級。
AndroidStudio - File --> Project Structure --> Project Settings --> Modules --> Dependencies --> Module Source ,將**Module Source **移到最頂 第一行。操作為:選中 Module source ,一直按 ALT + ↑ (ALT + 向上箭頭),將其移動到第一行。

image.png

6. 配置aidl文件跳轉(zhuǎn)

添加前提是你已經(jīng)編譯過framework 代碼并按照上面方法將Android源碼引入到Android studio 中.

1.搜索我們要查找的aidl 類名稱: 如:IActivityManager.class

image.png

2.找到編譯時生成的的class 文件,右鍵選擇copy path/Refrence copy 相對路徑
image.png

3.在Android Studio 中點擊 File --> Project Structure 打項目結(jié)構(gòu)設(shè)置窗口, 選中 Global Libraries 后點擊上面 + 號選擇Java 配置上一步copy的路徑,配置后等待配置信息同步完成即可進行跳轉(zhuǎn)
image.png

如果在開發(fā)中,我們自己寫的aidl 文件也可以通過上面方法進行配置,這樣在寫代碼的時候就不需要我們自己去手動引包,也不會因為沒有提示出現(xiàn)錯誤。

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

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

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