不會查看系統源碼,還搞什么Android?

  • 時間:2019-06-11 02:54 作者:Android技術干貨分享 來源:Android技術干貨分享 閱讀:142
  • 掃一掃,手機訪問
摘要:前言盡管標題有點雷,但目的還是為了大家好。在上一篇文章如何方便快速的整編Android 9.0系統源碼?)中,我們對系統源碼進行了編譯,這篇文章我們接著來學習如何將系統源碼導入到編輯器中,以便于查看和調試源碼。關于查看源碼,可以使用Android Studio、Eclipse、Sublime、Sou

前言

盡管標題有點雷,但目的還是為了大家好。

在上一篇文章如何方便快速的整編Android 9.0系統源碼?
)中,我們對系統源碼進行了編譯,這篇文章我們接著來學習如何將系統源碼導入到編輯器中,以便于查看和調試源碼。關于查看源碼,可以使用Android Studio、Eclipse、Sublime、Source Insight等軟件,這里我推薦使用Source Insight,但是有的同學可能不是很習慣,而且Source Insight是Windows平臺的軟件,Mac平臺用不了,那么使用Android Studio是一個不錯的選擇,而且使用Android Studio還可以調試源碼。這篇文章就來詳情Source Insight和Android Studio如何導入源碼。

1. Source Insight導入系統源碼

Source Insight只能查看源碼,不能調試源碼,假如只想在Source Insight中查看源碼,可以直接從百度網盤:https://pan.baidu.com/s/1ngsZs 將源碼下載下來。假如想在Android Studio中查看源碼,那么最好還是在Linux環境下將AOSP源碼下載下來。

新建源碼項目

安裝軟件后,首先要新建源碼項目。通過菜單項Project→New Project會彈出提醒框。

這里我們指定源碼項目的名稱為Android_8.0.0,而后點擊OK按鈕進入“New Project Settings”界面。

上圖箭頭指向的Browse按鈕來選擇本地系統源碼所在的路徑,比方我的系統源碼路徑為:D:/Android/android-8.0.0_r1 。選擇好加載路徑后點擊OK按鈕會進入“Add and Remove Project Files”界面,在這個界面可以向項目中增加整個Android系統源碼,也可以只把源碼部分目錄增加到項目中,以后再根據需要增加其余目錄。假如向項目增加整個Android系統源碼加載時會非常慢,這里我們只增加如下源碼目錄:frameworks/、libcore/、packages/、system/、art/和libnativehelper/,這幾個目錄基本上可以滿足日常的系統源碼閱讀了,如下圖所示。

點擊Add Tree按鈕就會將選擇的目錄源碼加載到Android_8.0.0項目中,這個時候會彈出加載進度條,加載完畢后點擊窗口的關閉按鈕即可以了。

定位文件

Source Insight的定位文件功能十分強大,我們只要要知道源碼文件名即可以輕松找到它,比方我們要找MediaPlayer.java,只需在文件搜索框輸入MediaPlayer.java就可:

全局搜索

Source Insight另一個好用的功能就是全局搜索,默認快捷鍵為:CTRL+/,或者者點擊最上面工具欄相似R的圖標。在Search in的輸當選項中我們可以自己設置搜索的范圍,比方我們想查找所有Java文件中引用MediaPlayer類的情況,即可以像下圖一樣進行操作。

當然,Source Insights的功能遠不只以上幾種,相信隨著使用次數的增多,你就會熟練掌握它的大部分功能,這里就不過多詳情了。

2. Android Studio導入系統源碼

Source Insight導入源碼不需要對源碼進行編譯,但是Android Studio導入整個系統源碼需要對源碼進行編譯,生成AS的項目配置文件。

生成AS的項目配置文件

假如你整編過源碼,查看out/host/linux-x86/framework/idegen.jar能否存在,假如不存在,進入源碼根目錄執行如下的命令:

source build/envsetup.shlunch [選擇整編時選擇的參數或者者數字]mmm development/tools/idegen/

假如沒整編過源碼,可以直接執行如下命令單編idegen板塊:

source build/ensetup.sh  make idegen

關于Android系統源碼的編譯可以查看如何方便快速的整編Android 9.0系統源碼?
)這篇文章。

idegen板塊編譯成功后,會在 out/host/linux-x86/framework目錄下生成idegen.jar,執行如下命令:

sudo development/tools/idegen/idegen.sh

這時會在源碼根目錄生成android.iml 和 android.ipr 兩個文件,這兩個文件一般是只讀模式,這里建議改成可讀可寫,否則,在更改少量項目配置的時候可能會出現無法保存的情況。

sudo chmod 777 android.imlsudo chmod 777 android.ipr
配置AS的項目配置文件

因為要將所有源碼導入AS會導致第一次加載很慢,可以在android.iml中修改excludeFolder配置,將不需要看的源碼排除掉。等源碼項目加載完成后,還可以通過AS對Exclude的Module進行調整。假如你的電腦的性能很好,可以不用進行配置。
在android.iml中搜索excludeFolder,在下面加入這些配置。

<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" /><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$/sdk" /><excludeFolder url="file://$MODULE_DIR$/system" /><excludeFolder url="file://$MODULE_DIR$/test" /><excludeFolder url="file://$MODULE_DIR$/toolchain" /><excludeFolder url="file://$MODULE_DIR$/tools" /><excludeFolder url="file://$MODULE_DIR$/.repo" />
導入系統源代碼到AS中

在AS安裝目錄的bin目錄下,打開studio64.vmoptions文件,根據自己電腦的實際情況進行設置,這里修改為如下數值:

-Xms1024m-Xmx1024m

假如你是在VirtualBox中下載的系統源碼,那么將VirtualBox中的系統源碼拷貝到共享文件夾中,這樣源碼就會自動到Windows或者者Mac上。
通過AS的Open an existing Android Studio project選項選擇android.ipr 即可以導入源碼,這里我用了大概7分鐘就導入完畢。導入后工程目錄切換為Project選項即可以查看源碼。

配置項目的JDK、SDK

因為我們下載的是9.0的AOSP源碼,SDK版本也應該對應為API 28,假如沒有就去SDK Manager下載就可。
點擊File -> Project Structure-->SDKs配置項目的JDK、SDK。
創立一個新的JDK,這里取名為1.8(No Libraries),刪除其中classpath標簽頁下面的所有jar文件。

接著設置將Android SDK的Java SDK設置為1.8(No Libraries),這樣Android源碼使用的Java就是Android源碼中的。

確保的項目的SDK為源碼對應的SDK。

Exclude不需要的代碼目錄

File -> Project Structure -> Modules中可以通過Excluded來挑選代碼目錄,比方我們選擇bionic目錄,點擊Excluded,bionic目錄會變為橙色,bionic字段會出現在右側視圖中,說明該目錄已經被Excluded掉,淺顯來講就是被排除在工程之外。假如不希望bionic目錄被Excluded掉,再次點擊Excluded,bionic目錄會變為灰色。

總結

這篇我們學習了Source Insight和Android Studio導入系統源碼的方法,但是具體的查看源碼的細節就需要讀者在使用中逐漸去掌握,下一篇我們會學習如何使用Android Studio去調試系統源碼。

針對Android程序員,我這邊給大家整理了少量資料,包括不限于高級UI、性能優化、架構師課程、NDK、混合式開發(ReactNative+Weex)微信小程序、Flutter等全方面的Android進階實踐技術;希望能幫助到大家,也節省大家在網上搜索資料的時間來學習,也可以分享動態給身邊好友一起學習!

資料領取:點贊+加群免費獲取 Android IOC架構設計

加群 Android IOC架構設計領取獲取往期Android高級架構資料、源碼、筆記、視頻。高級UI、性能優化、架構師課程、混合式開發(ReactNative+Weex)全方面的Android進階實踐技術,群內還有技術大牛一起探討交流處理問題。

  • 全部評論(0)
最新發布的資訊信息
【系統環境|】如何選擇一家專業的游戲軟件開發公司?(2020-05-13 15:56)
【系統環境|服務器應用】樹莓派安裝TensorFlow(2020-04-24 21:11)
【系統環境|服務器應用】防面試-SD_WebImage(2020-04-24 21:11)
【系統環境|服務器應用】推薦一款視頻控件xgplayer(2020-04-24 21:11)
【系統環境|服務器應用】PostgreSQL 源碼解讀(27)- 查詢語句#12(查詢優化-上拉子鏈接#2)(2020-04-24 21:11)
【系統環境|服務器應用】如何輕松學習JavaScript?(2020-04-24 21:10)
【系統環境|服務器應用】【源碼剖析】Launcher 8.0 源碼 (12) --- Launcher 啟動流程 第五步之計算桌面各布局細節參數(2020-04-24 21:10)
【系統環境|服務器應用】前臺碰撞室之console.log與文本字符(2020-04-24 21:10)
【系統環境|服務器應用】好用的Middleware實現(2020-04-24 21:10)
【系統環境|服務器應用】前臺面試每日 3+1 —— 第373天(2020-04-24 21:10)
手機二維碼手機訪問領取大禮包
返回頂部
广东11选5今天开奖