-
這里推薦一個在線源碼閱讀的網(wǎng)站 , 速度非常快 , 而且支持文件名查詢 , 如果你想找某一個類在哪個模塊但是又不清楚的話 , 就可以使用它先搜一下 ;
-
首先要安裝一個GitBash (小烏龜也可以 , 但是GitBash比較靈活 , 推薦使用) ;
下載URL : https://git-scm.com/downloads
如果下載鏈接失效 , 直接搜索GitBash找到一個下載即可
GitBash安裝好以后就可以直接使用 , 不需要登錄等操作 ;
-
由于有墻 , 所以谷歌托管代碼的網(wǎng)站 https://android.googlesource.com 上不去 , 有下面兩種方法解決這個問題 :
- 使用梯子或者海外節(jié)點(diǎn)下載 ;
- 使用清華大學(xué)的開源軟件鏡像站進(jìn)行下載 (它與谷歌托管代碼的網(wǎng)站是同步的 , 而且不需要用梯子 , 速度挺快的) ;
AOSP(Android Open Source Project)相關(guān)頁面為 :
https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/
使用方法為 : 下載url中的
https://android.googlesource.com/ 全部使用
https://aosp.tuna.tsinghua.edu.cn/ 代替即可
(參考 Google 教程 https://source.android.com/source/downloading.html)
(有墻 , 但是網(wǎng)上有文檔) 在正式下載源碼前 , 還有很重要的一個步驟 , 就是選擇你想要下載的源碼版本以及想要下載的模塊 , 比如你想要查看藍(lán)牙模塊中BLE相關(guān)的代碼 , 但是不同版本實(shí)現(xiàn)的bluetooth不一樣 , 4.3前沒有 BLE 而4.4以后有了 BLE , 這時候你就要手動選擇安卓版本 , 接下來就講解如何獲取對應(yīng)版本的模塊以及查找下載路徑 ;
-
首先需要把Android的Manifest拉取下來(由于是清單文件 , 所以此git庫非常的小 , 僅僅是一些配置信息)
執(zhí)行 git clone https://aosp.tuna.tsinghua.edu.cn/platform/manifest.git manifest
這行命令的最終結(jié)果為 :
如果你在D盤執(zhí)行這行命令 , 那么gitbash會創(chuàng)建一個manifest的目錄 , 然后把.git目錄和相應(yīng)的文件拉取到這個新目錄中 ;
目錄為 D:manifest/...
這個目錄下有一個 default.xml 文件 , 這個文件中就有你需要的android源碼的路徑以及模塊名字 ;
可是這時候android版本可能不是你需要的版本 ;
所以最好手動指定一下版本 ; 當(dāng)把這個清單文件拉取下來后 , 在gitbash窗口中進(jìn)入對應(yīng)目錄 , 如果不會操作可以關(guān)掉以后在該目錄中 右鍵->GitBash here ;
-
接下來就是查找版本了
執(zhí)行 git tag
這時候會出現(xiàn)所以打了tag的版本(一般只有正式版本才會打tag) , 然后從里面找出你需要的android版本 , 把名字復(fù)制下來 ;
打了tag的有很多 , 其中除了Android源碼還有Gradle , android-cts , android-sdk 的源碼 , 注意不要找錯了 ; -
當(dāng)你找到了需要的android版本以后(這里以 android-6.0.1_r81 版本為例)
執(zhí)行 : git checkout android-6.0.1_r81
這時候你的分支就由master變?yōu)?android-6.0.1_r81 了
這個時候打開 D:manifest/default.xml , 然后就可以看到不同project(工程/模塊)的path , name等信息了 ;
在最前面的default標(biāo)簽中 , 有當(dāng)前清單對應(yīng)的版本信息了 (revision屬性)
到了這一步 , 幾乎可以說大功告成了 , 接下來只要拼接好git庫的url , 然后執(zhí)行clone命令就可以了 ;
這里以默認(rèn)的輸入法OpenWnn模塊為例
(之所以用這個為例是因?yàn)閒ramework/base在github上已經(jīng)托管了 , 但是其他的沒有找到 , 而packages目錄下的那些默認(rèn)的app也是需要分析的)
首先從path中定位到你需要的模塊路徑 , 然后把它的name記錄下來 ;
<project path="packages/inputmethods/OpenWnn" name="platform/packages/inputmethods/OpenWnn" groups="pdk-fs" />
這里的 path 是工程目錄下對應(yīng)的路徑 , name是下載時候拼接url用的 ;
下載url拼接原則為 : "https://aosp.tuna.tsinghua.edu.cn/" + name + ".git"
示例如下 :
執(zhí)行 : git clone https://aosp.tuna.tsinghua.edu.cn/platform/packages/inputmethods/OpenWnn OpenWnn
- 接著就等待下載進(jìn)度走完了 , 就可以進(jìn)行查閱修改等操作了 ;
- 果你想用梯子的話 , 那么所有操作只需要把
https://aosp.tuna.tsinghua.edu.cn/ 替換回
https://android.googlesource.com/即可 ;
包括獲取manifest的步驟 ; - 由于清單文件可能會改變(比如Google調(diào)整了目錄結(jié)構(gòu)) , 所以在拉取一個模塊前最好能夠更新一下清單文件 ;