首發公衆號:Android程序員日記 做者:賢榆的榆 若是你以爲有幫助歡迎關注、讚揚、轉發 閱讀時間:2616字 6分鐘html
很早就像本身搭一個Android源碼閱讀環境,折騰了幾回無果,就擱置了。最近有點閒暇時間,再加上也以爲是時候更深入的認識Android系統了,因此再折騰了一次,沒想到成功了,並且是用AndroidStudio閱讀,仍是那個熟悉的界面,仍是那個熟悉的快捷鍵,哈哈,你也試試?android
首先呢,以前有研究過用AndroidStudio閱讀源碼的,應該都知道,若是想用AS閱讀Android源碼差很少分這樣四個步驟git
嘗試過的朋友就知道,編譯源碼這個步驟應該是一個比較讓人難過的過程。可能你的編譯花的時間比你下載還長。不過在嘗試了不少次以後,我也完美的搭好了AS閱讀源碼的環境。下面我就告訴你們如何作到不用編譯就能導入AS閱讀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
差很少下載最新的初始化包,你須要好幾個小時,網速很差,甚至要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
這個關鍵字的值,就能夠在下表中找出相應的版本。
準備工做已經作完了下面就能夠像導入一個Android項目同樣導入AOSP目錄了。進入AOSP目錄選擇被識別出來的.ipr
文件,而後點擊open便可。
這裏有兩個個問題須要注意一下:
第一次導入的時候,可能你看到的只有那幾個剛纔放入的配置文件,而看不到其餘的目錄,這個時候須要點擊File->Invalidate Cashes/Restart...
,讓AS從新啓動編譯一下項目。
若是出現循環執行任務Scanning file to index....
不動
Open module setting --> Modules --> 找到gen文件夾 --> 選擇Resources
)
那麼接下來咱們就能夠自由的翱遊在Android源碼的海洋了,讓咱們來看一下吧!
最後,要感謝一下「代碼GG之家」的明哥,8年Android手機開發的老大哥。在源碼閱讀環境搭建和源碼閱讀方式與技巧上都給我很大的幫助。這裏我把明哥在星球裏的回答貼出來分享一下:
另外,我也強烈推薦明哥的「Android答疑解惑」星球。**畢竟,成長的道路上,咱們須要弄清的不是距離起點有多遠,而是距離下一個終點有多近。**我相信明哥會是那個讓可以告訴你離終點有多近的人。系列文章
- 「Do.006」Android實戰項目(1)——我想說「開始吧」
- 「Do.007」Android實戰項目(2)——使用Github進行版本管理
- 「Do.008」Android實戰項目(3)——Git 分支管理模型
- 「Do.009」Android實戰項目(4)——AndroidStudio插件推薦(磨刀)
- 「Do.014」Android實戰項目(5)—— gradle 配置release與debug環境分離
其餘