1. 程式人生 > >【轉】如何閱讀android源碼

【轉】如何閱讀android源碼

使用 都是 imp exti 技術分享 下載源碼 源碼閱讀 tun 希望

有一次當我打開grepcode 的時候,顯示了503,我以為只是短期的服務器錯誤,沒想到持續到現在了...

相同的體驗還有

技術分享圖片

其實還有些大大小小的站也關閉了,很憂傷...

好了,回到主題,本篇主要講如何閱讀 Android framework 層的源碼。

看下 Android 的整體架構:

技術分享圖片

關註本號的大多數同學都是做應用層的,所以對我們來說一般只要看到Framework 的源碼:

比如:AMS,WMS,PMS 等...包括上周推送的 AccessibilityService 源碼,以及 Activity 生命周期是如何回調的,都涉及到該類知識。

本篇文章不討論,能夠下載整個幾十G的源碼,修改編譯後,導入到 AS的方式,成本比較高,可以自行搜索。

1

在線查看

在線查看,這個方式一般適合有針對性的查看某個類:

網站1

http://androidxref.com/

技術分享圖片

你可以查看各個版本的源碼。

給大家錄制個gif:

技術分享圖片

網站2

https://www.androidos.net.cn/sourcecode

技術分享圖片

也比較方便,還是錄個gif 吧:

技術分享圖片

2

我要在 AS 中看

在線查看一般都是比較精確要看哪個類的時候,並不能滿足我們日常快速查看的需求。

例如我忽然想看下 startActivity 的流程,總不能還在線一個個類搜索吧,太慢了。

其實多數hide API的類源碼,我們都下載下來了,不信你打開sdk 文件夾。

比如 ContextImpl 這個類:

技術分享圖片

包括 AMS 這些類,其實源碼中都包含,只是在對應的android.jar 中缺少這些class 文件而已。

所以我們可以將sdk 中使用的android.jar 替換為完整的jar。

去哪找完整的jar 呢?自己編麽?

自己編譯成本是不是過高了,這麽多人有需求,那麽 github 上面肯定有啦。

https://github.com/anggrayudi/android-hidden-api

技術分享圖片

選擇對應的版本,下載對應的jar 文件。

然後替換即可,例如我這裏替換了android-26下的jar。

技術分享圖片

你可以將原本的改下命名保留,然後將剛下載的復制過去即可。

當你完成這些操作,AS 會自動感知到發生的變化,然後重新建立索引,稍等下就好了。

註:如果你擔心有什麽副作用,可以選擇一個不常用的版本替換,比如你們日常使用26,你可以將25的進行替換,新建一個module compileSdk=25就可以查看了。

然後你就可以在 Android Studio 中來放肆的查看源碼了:

技術分享圖片

偶爾會有一兩個類找不到,那麽你就可以配合在線查看的方式去看了。

3

我要自己下載framework 源碼查看

當然了,自己下載源碼來查看肯定是最靠譜的方式,但是自己下載有兩個問題。

1. 在哪裏下載呢?

2. Android 源碼那麽大,可以只下載framework 部分麽?

3. 如何閱讀

官方地址:

https://android.googlesource.com/

如果你的網絡夠給力,直接下載。

清華大學鏡像地址:

https://aosp.tuna.tsinghua.edu.cn/

當然我們並不希望下載完整的源碼,下載下來我也不知道怎麽編譯。

所以我們只下載自己需要的部分:

git clone https://aosp.tuna.tsinghua.edu.cn/platform/frameworks/base

當然github 也有地址:

https://github.com/aosp-mirror/platform_frameworks_base

也可以提供下載。

相信到這裏,你肯定能下載下來一份frameworks源碼!

找個稱手的工具

源碼下來了,如何更方便自己閱讀呢?

那就需要一個稱手的軟件,在windows 下可以使用`source insight`。

作為 MAC 用戶很憂傷。

以下內容針對 MAC 用戶,windows 用戶去就使用`source insight`吧。

1. sublime

sublime 也算是我非常喜歡的一個文本編輯器,當然功能非常強大,你可以給它安裝個ctags 插件,然後用來查看源碼。

最終效果大概是這樣的:

技術分享圖片

由於大家版本都不同,如何安裝自己搜索啦,關鍵詞sublime 查看源碼

2. UnderStand

最終的效果是這樣的:

技術分享圖片

記得導入後等它index 完畢,快捷鍵什麽的,自己去摸索吧。

功能非常強大,可以生成各種圖。

缺點就是有點卡。

個人非常推薦替換android.jar 的方式,當然也建議大家嘗試摸索下上述軟件。

如果你有更好的方式,歡迎留言~

最後 wanandroid.com 也在開發在線源碼閱讀的能力,給大家多增加一個備選方案!

參考

https://github.com/foxleezh/AOSP/issues/1

原文連接:https://kuaibao.qq.com/s/20180718G08DV600?refer=cp_1026

【轉】如何閱讀android源碼