做開發以來,總有那末1個習慣喜歡瀏覽源碼,深入了解源碼的設計意圖所在。源碼對開發人員有多么重要,想必喜歡查看
開起源碼的開發人員都明白,如:Android開發中,Framework及底層開發對Android源碼的依賴就蠻高了,有很多的需求是需要自己
再源碼的基礎上進行修改,如:現在的Android智能手機,我要修改1下頂的樣式排列,那就需要下載源碼,自己修改,然后自己刷
機重裝系統。從Java到Android,再到IOS都有為開發人員提供源碼這1個選項,但是問題就來了,如何獲得公司提供的源碼呢?對
于Java的源碼,只需要在網站上下載對應版本的Jdk源碼資源文件,然后導入就能夠查看了;對IOS的源碼,可以在XCode開發工具
上下載;但是,Android的源碼相對起來是比較麻煩的,下面簡單的分析1下:
在使用Andriod SDK進行利用程序開發的時候,我們需要對源代碼進行調試,有可能需要進入到某個Android API函數內部進行
跟蹤調試。但是,如果目標版本的SDK沒有關聯對應版本的源代碼的話,就會提示你找不到源代碼。
圖:找不到Android源碼的提示
我們都知道Android系統是1個開源工程,在網上可以下載到源代碼。1般在網上搜索1下,就會找到各種下載源代碼的方法,比如使用Git和Repo,android源代碼下載的網址是http://android.git.kernel.org/。關于利用Git下載android源代碼的方法,我就不再贅述了,由于網上的方法很多,這里給出1個參考鏈接Windows平臺下Android源碼的下載。如果你跟我1樣是初學者,相信看了上面的文章,你就知道如何使用Git下載android源碼了。但是,看著http://android.git.kernel.org/ 站點下的各種目錄和文件,相信你也會跟我1樣傻眼,不知道那個目錄下的文件對應是甚么代碼,想找到自己所需要的東西都比較難了。所以這里給大家介紹1下android源代碼的結構,如果發現文章有毛病的地方,還請各位童鞋輕點砸磚!
圖:http://android.git.kernel.org/ 下紛紛復雜的文件
認識Android源代碼結構之前,先來再熟習1下Android的系統架構吧!Android系統架構被分為4層,自下而上分別是:Linux操作系統及驅動層、本地框架和Java運行環境、Java框架、Java利用層。每層的具體介紹在此就略過了。
圖:Android系統架構
認識Android源代碼結構
Android代碼的工程分為3個部份,在打開http://android.git.kernel.org/ 后看到的,就是android源代碼的根目錄。(建議:打開這個網站后,對比學習以下內容)
1、Android 的核心工程
Android 的核心工程包括了對Android系統基本運行的支持,和Android系統的編譯系統,工程的內容以下表:
工程名稱 | 工程描寫 |
bionic | [Build 系統] C運行時支持:libc、libm、libdl、動態linker |
bootloader/legacy | Bootloader 參考代碼 (內核加載器,在內核運行之前運行) |
build | [Build 系統] Build系統 |
dalvik | Dalvik虛擬機 |
delelopment | 高層的開發和調試工具 |
framework/base | Android 核心的框架庫 |
framework/policies/base | 框架配置策略 |
hardware/libhardware | 硬件抽象層庫 |
hardware/ril | 無線接口層(Radio Interface Layer) |
kernel | Linux 內核 |
prebuilt | [預編譯內核] 對Linux 和 Mac OS 編譯的2進制支持 |
system/core | 最小化可啟動的環境 |
system/extras | 底層調試和檢查工具 |
除上表列出的工程外,還有其他的工程,但大都是Android系統第2個層次的源代碼。
2、Android 擴大工程
Android 的擴大工程包括在external文件夾中,是1些經過修改后適應Android系統的開源工程。有1些工程在主機上運行,也有些在目標機上運行。由于包括的擴大工程就多,就不逐一列出,感興趣的童鞋可以自己搜集1些資料學習1下。
3、Android 中的Java程序包
內容提供者(Content Providers)在package/providers目錄中,主要包括:
CalendarProvider,ContactsProvider,DownloadProvider,DrmProvider
GoogleContactsProvider,GoogleSubsribedFeedsProvidercImProvider,MediaProvider
SettingsProvider,SubscribedFeedsProvider,TelephonyProvider。
按需下載
如果你只需要其中的某1個或幾個文件的話,可使用以下的git命令:
git clone git://android.git.kernel.org/工程代碼路徑
(例如: git clone git://android.git.kernel.org/platform/packages/providers/DrmProvider.git)
下載的目標地址,就是當前git命令行所在確當前目錄。
下載各個版本的Android SDK 源代碼
給大家提供1個在Windows下下載不同版本SDK源代碼的方法,我也在網上找過其他的方法,但是都是Copy&Paste出來的。
或參考另外一篇博文:使用git 工具下載android.jar Source Code
1、下載Git,并且安裝好;
2、新建1個文件frameworks,這個文件夾就是用來寄存你將要下載的Android SDK源代碼的目錄
3、啟動Git bash命令行,輸入命令 git clone git://android.git.kernel.org/platform/frameworks/base.git frameworks,將會把android.git.kernel.org站點上的base文件夾下的所有文件和文件夾下載本地的frameworks文件夾中;
4、在Git命令行環境下,使用cd命令,逐漸進入到frameworks/base文件夾中;
5、使用 "git tag" 命令,顯示所有的Android的源代碼工程名稱;
6、找到你所需要的源代碼的名稱和版本,在使用命令"git checkout android⑴.5r4"切換到摹擬器(emulator)對應的版本;
7、將frameworks/base/core/java下的所有文件拷貝到你的SDK目錄下的"android-sdk-windowsplatformsandroid⑶sources"文件夾下。
注意:每次切換摹擬器的版本時,git會自動從網站上下載對應版本的源代碼到frameworks/base/文件夾下,再將該文件夾下的文件拷貝到對應版本的SDK目錄下便可。
通過上面的進程,就獲得到谷歌提供的Android開起源碼了,可以查看源碼、參考Google開發者設置Android源碼的意圖了,方便自己的開發和理解。