Android源代碼結構 – Android移動開發技術文章_手機開發 Android移動開發教學課程

簡介


  在使用Andriod SDK進行應用程序開發的時候,我們需要對源代碼進行調試,有可能需要進入到某個Android API函數內部進行跟蹤調試。但是,如果目標版本的SDK沒有關聯對應版本的源代碼的話,就會提示你找不到源代碼。


圖:找不到Android源碼的提示


  


  我們都知道Android系統是一個開源工程,在網上可以下載到源代碼。一般在網上搜索一下,就會找到各種下載源代碼的方法,比如使用Git和Repo,android源代碼下載的網址是http://android.git.kernel.org/。關於利用Git下載android源代碼的方法,我就不再贅述瞭,因為網上的方法很多,這裡給出一個參考鏈接Windows平臺下Android源碼的下載


  如果你跟我一樣是初學者,相信看瞭上面的文章,你就知道如何使用Git下載android源碼瞭。但是,看著http://android.git.kernel.org/ 站點下的各種目錄和文件,相信你也會跟我一樣傻眼,不知道那個目錄下的文件對應是什麼代碼,想找到自己所需要的東西都比較難瞭。所以這裡給大傢介紹一下android源代碼的結構,如果發現文章有錯誤之處,還請各位童鞋輕點砸磚!


圖:http://android.git.kernel.org/ 下紛繁復雜的文件


  


  認識Android源代碼結構之前,先來再熟悉一下Android的系統架構吧!Android系統架構被分為四層,自下而上分別是:Linux操作系統及驅動層、本地框架和Java運行環境、Java框架、Java應用層。每一層的具體介紹在此就略過瞭。


圖:Android系統架構


  


認識Android源代碼結構


  Android代碼的工程分為3個部分,在打開http://android.git.kernel.org/ 後看到的,就是android源代碼的根目錄。(建議:打開這個網站後,對照學習以下內容)



  • 核心工程(Core Project):建立Android 系統的基礎,在根目錄的各個文件夾中。
  • 擴展工程(External Project):使用其他開源項目擴展的功能,在external 文件夾中。
  • 包(Package):提供Android 的應用程序和服務,在package 文件夾中。

1、Android 的核心工程


  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 編譯的二進制支持 
system/core 最小化可啟動的環境
system/extras 底層調試和檢查工具

 


  


  除瞭上表列出的工程外,還有其他的工程,但大都是Android系統第2個層次的源代碼。


2、Android 擴展工程


  Android 的擴展工程包含在external文件夾中,是一些經過修改後適應Android系統的開源工程。有一些工程在主機上運行,也有些在目標機上運行。由於包含的擴展工程就多,就不一一列出,感興趣的童鞋可以自己收集一些資料學習一下。


  



3、Android 中的Java程序包


  Android中的Java程序包是Android系統架構第4層的內容,主要包括應用程序(Application)和內容提供器(Content Providers)兩個部分,還有一個目錄inputmethods是輸入法的部分。


  應用程序(Application)在package/apps目錄中,主要包括:AlarmClock,Browser,Calculator,Calendar,Camera,Contacts,E-mail,GoogleSearch,HTML Viewer,IM,Launcher,Mms,Music,PackageInstaller,Phone,Settings,SoundRecorder,Stk,Sync,Updater,VoiceDialer。


  


  內容提供者(Content Providers)在package/providers目錄中,主要包括:CalendarProvider,ContactsProvider,DownloadProvider,DrmProvider,GoogleContactsProvider,GoogleSubsribedFeedsProvider,ImProvider,MediaProvider,SettingsProvider,SubscribedFeedsProvider,TelephonyProvider。


  


按需下載


  如果你隻需要其中的某一個或者幾個文件的話,可以使用如下的git命令:


  git clone git://android.git.kernel.org/工程代碼路徑  


  (例如: git clone git://android.git.kernel.org/platform/packages/providers/DrmProvider.git)


  下載的目標地址,就是當前git命令行所在的當前目錄。


下載各個版本的Android SDK 源代碼


  給大傢提供一個在Windows下下載不同版本SDK源代碼的方法,我也在網上找過其他的方法,但是都是Copy&Paste出來的。


  或者參考另一篇博文:使用git 工具下載android.jar Source Code


1、下載Git,並且安裝好;


2、新建一個文件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-1.5r4″切換到模擬器(emulator)對應的版本;


7、將frameworks/base/core/java下的所有文件拷貝到你的SDK目錄下的”android-sdk-windowsplatformsandroid-3sources”文件夾下。


  註意:每次切換模擬器的版本時,git會自動從網站上下載對應版本的源代碼到frameworks/base/文件夾下,再將該文件夾下的文件拷貝到對應版本的SDK目錄下即可

You May Also Like