「Do.016」AndroidStudio不用編譯,閱讀Android源碼

首發公衆號:Android程序員日記 做者:賢榆的榆 若是你以爲有幫助歡迎關注、讚揚、轉發 閱讀時間:2616字 6分鐘html

寫在前面

很早就像本身搭一個Android源碼閱讀環境,折騰了幾回無果,就擱置了。最近有點閒暇時間,再加上也以爲是時候更深入的認識Android系統了,因此再折騰了一次,沒想到成功了,並且是用AndroidStudio閱讀,仍是那個熟悉的界面,仍是那個熟悉的快捷鍵,哈哈,你也試試?android

首先呢,以前有研究過用AndroidStudio閱讀源碼的,應該都知道,若是想用AS閱讀Android源碼差很少分這樣四個步驟git

  • Step 1: 下載源碼
  • Step 2: 編譯源碼
  • Step 3: 用AS導入源碼
  • Step 4: 閱讀源碼

嘗試過的朋友就知道,編譯源碼這個步驟應該是一個比較讓人難過的過程。可能你的編譯花的時間比你下載還長。不過在嘗試了不少次以後,我也完美的搭好了AS閱讀源碼的環境。下面我就告訴你們如何作到不用編譯就能導入AS閱讀Android源碼。程序員

Android源碼閱讀環境搭建

一、下載初始化源碼庫

AOSP(Android Open Source Project)初始化包下載地址: mirrors.tuna.tsinghua.edu.cn/aosp-monthl… 將該網址複製到瀏覽器便可下載,迅雷好像不能使用,至少個人沒用。另外須要注意的是,下載的過程當中,不要合上電腦。我都下載了18g就由於合了一下電腦,結果就要從頭再來了。github

固然源代碼下載,除了直接下載這個初始化包,你也能夠先裝repo工具,而後用repo同步。反正不管是哪一種方式,中間都不能斷。 關於源碼下載更多信息能夠查看下面兩個網站: 過清華大學開源軟件鏡像站: *mirrors.tuna.tsinghua.edu.cn/help/AOSP/ * google官網: source.android.com/source/down…api

二、下載repo工具

差很少下載最新的初始化包,你須要好幾個小時,網速很差,甚至要10幾個小時。那麼在這個過程當中我就能夠把後面同步和檢出代碼須要的的repo工具安裝一下,在命令行中執行以下代碼,(個人是mac,win的話,你們能夠google一下對應的教程,應該會有不少)瀏覽器

mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
複製代碼

三、同步並檢出源碼項目

下載完成之後會獲得一個37g的以aosp-latest命名的tar文件,而後將其解壓能夠看到裏面有一個.repo的隱藏文件(mac 下載查看隱藏文件的快捷鍵Command+Shift+ .安全

接下來使用命令行進入到解壓的根目錄而後運行repo sync,而後就能夠同步到最新的分支,並檢出其master分支。curl

固然你也能夠不一樣步直接使用 repo sync -l 來檢出repo裏面的源碼項目。 檢出後的效果是這樣的: 工具

四、關鍵一步——放入編譯文件

其實之因此須要編譯,這個和咱們的Android項目是一個道理,咱們從github上拉下來的開源Android項目也是沒有.iml等配置文件的,須要咱們本身再編譯一邊,才能讓這個項目裏的個文件在AS關聯起來。

那麼在這裏之因此不用編譯,不是真的無需編譯。而是有一位簡書ID是difcareer的小夥伴已經幫咱們把各個版本須要的AS配置文件已經編譯好,咱們只須要將它下載下來放到項目的根目錄就ok了。 as配置文件git地址: github.com/difcareer/A…

注: 若是你忘了本身源碼檢出的版本能夠經過以下方式查看: 根據目錄'/build/core/version_defaults.mk' 打開version_defaults.mk文件,而後找到PLATFORM_SDK_VERSION這個關鍵字的值,就能夠在下表中找出相應的版本。

若是是28 固然就是Android 9.0了

五、將源碼項目導入到AS

準備工做已經作完了下面就能夠像導入一個Android項目同樣導入AOSP目錄了。進入AOSP目錄選擇被識別出來的.ipr文件,而後點擊open便可。

這裏有兩個個問題須要注意一下:

  • 第一次導入的時候,可能你看到的只有那幾個剛纔放入的配置文件,而看不到其餘的目錄,這個時候須要點擊File->Invalidate Cashes/Restart...,讓AS從新啓動編譯一下項目。

    這個編譯的狀態差很少會持續10幾分鐘。而後將右邊文件目錄切換到Project模式下:

  • 若是出現循環執行任務Scanning file to index.... 不動

    解決辦法以下(Open module setting --> Modules --> 找到gen文件夾 --> 選擇Resources

六、好了導入成功

那麼接下來咱們就能夠自由的翱遊在Android源碼的海洋了,讓咱們來看一下吧!

最後,要感謝一下「代碼GG之家」的明哥,8年Android手機開發的老大哥。在源碼閱讀環境搭建和源碼閱讀方式與技巧上都給我很大的幫助。這裏我把明哥在星球裏的回答貼出來分享一下:

另外,我也強烈推薦明哥的「Android答疑解惑」星球。**畢竟,成長的道路上,咱們須要弄清的不是距離起點有多遠,而是距離下一個終點有多近。**我相信明哥會是那個讓可以告訴你離終點有多近的人。

推薦閱讀

系列文章

其餘

歡迎你們關注個人公衆號
相關文章
相關標籤/搜索