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

首發公衆號:Android程序員日記
作者:賢榆的榆
如果你覺得有幫助歡迎關注、讚賞、轉發
閱讀時間:2616字 6分鐘

寫在前面

很早就像自己搭一個Android源碼閱讀環境,折騰了幾次無果,就擱置了。最近有點閒暇時間,再加上也覺得是時候更深刻的認識Android系統了,所以再折騰了一次,沒想到成功了,而且是用AndroidStudio閱讀,還是那個熟悉的界面,還是那個熟悉的快捷鍵,哈哈,你也試試?

首先呢,之前有研究過用AndroidStudio閱讀源碼的,應該都知道,如果想用AS閱讀Android源碼差不多分這樣四個步驟

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

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

Android源碼閱讀環境搭建

1、下載初始化源碼庫

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

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

2、下載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

3、同步並檢出源碼項目

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

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

當然你也可以不同步直接使用 repo sync -l 來檢出repo裏面的源碼項目。
檢出後的效果是這樣的:

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

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

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

注:
如果你忘了自己源碼檢出的版本可以通過如下方式查看:
根據目錄’/build/core/version_defaults.mk’ 打開version_defaults.mk文件,然後找到PLATFORM_SDK_VERSION這個關鍵字的值,就可以在下表中找出相應的版本。


如果是28 當然就是Android 9.0了

5、將源碼項目導入到AS

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

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

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

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

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

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

6、好了導入成功

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

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

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

推薦閱讀

系列文章

其他

歡迎大家關注我的公衆號