百度查「android源碼分析工具」時發現有一篇知乎文章: 巨人的肩膀html
AOSP項目官方: https://source.android.com/source/index.html 這個必定要先讀. 項目介紹, 代碼下載, 環境搭建, 刷機方法, Eclipse配置都在這裏. 這是一切的基礎. Android官方Training: https://developer.android.com/training/index.html 這個實際上是給App開發者看的. 可是裏面也有很多關於系統機制的介紹, 值得細讀. 老羅的Android之旅: http://blog.csdn.net/luoshengyang 此老羅非彼老羅. 羅昇陽老師的博客很是有養分, 基本能夠做爲指引你開始閱讀AOSP源碼的教程. 你能夠按照博客的時間順序一篇篇挑須要的看.但這個系列的博客有些問題: 早期的博客是基於舊版本的Android; 大量的代碼流程追蹤. 讀文章時你必定要清楚你在看的東西在整個系統處於什麼樣的位置. Innost的專欄: http://blog.csdn.net/innost 鄧凡平老師也是爲Android大牛, 博客一樣頗有養分. 可是不像羅昇陽老師的那麼系統. 更多的是一些技術點的深刻探討. Android Issues: http://code.google.com/p/android/issues/list Android官方Issue列表. 我在開發過程當中發現過一些奇怪的bug, 最後發現這裏基本都有記錄. 固然你能夠提一些新的, 有沒有人改就是另一回事了. Google: https://www.google.com 必定要能流暢的使用這個工具. 大量的相關知識是沒有人系統的總結的, 你須要本身搞定.
其它android
代碼組織 AOSP的編譯單元不是和git項目一一對應的, 而是和Android.mk文件一一對應的. 善用mmm命令進行模塊編譯將節省你大量的時間. Binder 這是Android最基礎的進程間通信. 在Application和System services之間大量使用. 你不只要知道AIDL如何使用, 也要知道如何手寫Binder接口. 這對你理解Android的Application和System services如何交互有很是重要的做用. Binder如何實現的倒沒必要着急看. HAL 除非你對硬件特別感興趣或者想去方案公司上班, 不然別花太多時間在這一層. CyanogenMod 這是一個基於AOSP的第三方Rom. 從這個項目的wiki裏你能學到不少AOSP官方沒有告訴你的東西. 好比如何支持Nexus之外的設備. DIA 這是一個Linux下畫UML的工具, 可以幫你梳理看過的代碼. XDA http://www.xda-developers.com/ 這裏有最新資訊和最有趣的論壇.