[深刻理解Android卷二 全文-第一章]開發環境部署

因爲《深刻理解Android 卷一》和《深刻理解Android卷二》再也不出版,而知識的傳播不該該由於紙質媒介的問題而中斷,因此我將在OSC博客中全文轉發這兩本書的所有內容。


第1章 開發環境部署

本章主要內容: html

簡單介紹本書內容的架構、編譯環境的搭建以及如何利用Eclipse調試SystemServer進程。 java

1.1  系統架構

到目前爲止,Android系統的最新版本是4.0.3。而就在本書即將完稿之時,業界有傳聞說Android 4.0.4版本已經對大廠商發佈。Android系統推出速度之快讓不少開發人員都很驚訝。固然,推出的速度如此之快有一些是出於商業上的考慮。無論怎樣,Android系統在進化過程當中,其大致架構相對保持穩定。圖1-1爲Android的系統架構圖。 linux

圖1-1  Android系統架構 android

相信絕大多數讀者對圖1-1或相似圖表的內容已經司空見慣。此處,咱們就再也不贅述。 bash

本書做爲「深刻理解Android」系列的第二卷,從內容上將承接《深刻理解Android:卷I》(本書之後簡稱「卷I」)的內容,可是本書關注的焦點將從Native層Framework轉移到Java層Framework。本書涵蓋的內容如圖1-2所示。 網絡

圖 1-2  本書涵蓋的內容 架構

從圖1-2中,讀者可發現本書的大部份內容都在討論Service。確實如此。由於Android Java層Framework的核心就是這些Service。絕不誇張地說,正是這些Service支撐了整個Java層世界的運轉。讀者可參考第3章的圖3-1來了解Framework中Service的概貌。 oracle

1.2  搭建開發環境

本節將討論Android 4.0源碼下載、Eclipse開發環境,以及如何調試SystemServer進程等相關知識。 eclipse

1.2.1  下載源碼

Android 2.3之後,Google官方推薦使用64位的操做系統來編譯源碼。因此,讀者要先安裝64位的OS。筆者推薦的操做系統是Ubuntu 10.04 X86-64版。另外,讀者不要隨意升級Ubuntu,由於高版本Ubuntu中自帶的GCC版本太高,會致使編譯Android源碼時出問題。 ide

提示其實32位的Ubuntu也能夠編譯Android 2.3之後的Android系統,但弄起來頗爲麻煩,並且也沒什麼技術含量。筆者建議讀者遵守官方要求去作便可。

筆者不打算過多討論Android源碼下載的步驟,緣由是:這是一個須要讀者動手操做的過程,而看着電腦屏幕操做比看書後輸入大串的字符串的效率要高不少。

基於上面這個緣由,這裏筆者向讀者提供一個官方說明文檔,地址是http://source.android.com/source/downloading.html。該網頁中有詳細的代碼下載步驟,讀者只要執行簡單的複製/粘貼操做便可動手實驗。如圖圖1-3所示爲該網頁的截圖。

圖1-3  Android代碼下載網頁示意圖

注意讀者要選擇下載Android 4.0.1的代碼。雖然最新的Android 4.0.3版本從版本號上看變化不大,但實際代碼卻有較大變化。

另外,因爲網絡環境不佳,若是讀者發現本章提供的下載地址沒法鏈接,可從筆者博客上的連接去下載源代碼和工具,博客地址是:http://blog.csdn.net/innost/article/details/7525205

 

1.2.2  編譯源碼

1. 部署JDK

Android 2.3及之後版本的代碼編譯都須要使用JDK1.6,因此首先要作的是下載JDK1.6。下載網址是http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-javase6-419409.html。筆者下載的文件是jdk-6u27-linux-x64.bin。把它放到一個目錄中,好比將其放到/mnt/hgfs/E目錄下,而後在這個目錄中執行:

./ jdk-6u27-linux-x64.bin  #執行這個文件

這個命令的做用其實就是解壓。解壓後的結果在/mnt/hgfs/E/jdk1.6.0_27目錄中。有了JDK後,還須要設置~/.bashrc文件。在該文件末尾添加如圖1-4所示的幾行語句:

圖1-4  Java環境部署示意圖

從新登陸系統後,Java環境就添加到系統中了。

2. 編譯源碼

源碼編譯的步驟很是簡單。咱們在卷I也詳細介紹編譯方法。不過本書要求讀者必須先編譯整個系統,步驟以下:

·  執行source build/envsetup.sh命令。該命令將導入Android編譯環境。

·  輸入choosecombo並執行,它是envsetup.sh中定義的一個函數。在執行過程當中,分別選擇release、generic、eng便可。最終屏幕輸出如圖1-5所示。  

圖1-5  編譯設置效果圖

·  執行make命令以編譯整個系統。編譯時間由機器配置決定。筆者的4核4GB機器的編譯時間大概在2小時左右。

1.2.3  利用Eclipse調試SystemServer

本節將介紹如何利用Eclipse來調試Android Java Framework的核心進程SystemServer。

1.  配置Eclipse

首先要下載Android SDK。下載地址爲http://developer.android.com/sdk/index.html。在Linux環境下,該網站截圖如圖1-6所示。

圖1-6 AndroidSDK下載網頁示意圖

筆者下載的是Linux系統上的SDK。解壓後的位置在/thunderst/disk/anroid/android-sdk-linux_x86下。

而後要爲Eclipse安裝ADT插件(Android Development Tools),步驟以下。

·  單擊Eclipse菜單欄Help->Install New Software,輸入Android ADT下載地址:https://dl-ssl.google.com/android/eclipse/,而後安裝其中的全部組件,並重啓Eclipse。

·  單擊Eclipse菜單欄Preferences->Android一欄,在右邊的SDK Location中輸入剛纔解壓SDK後獲得的目錄,即筆者設置的/thunderst/disk/anroid/android-sdk-linux_x86,最終結果如圖1-7所示。

圖1-7  SDK安裝示意圖

·  單擊Eclipse菜單欄Window->Android SDK Manager,彈出一個對話框,如圖1-8所示。

圖1-8  Android SDK Manager對話框

在圖1-8中選擇下載其中的Tools和對應版本的SDK文檔、鏡像文件、開發包等。有條件的讀者能夠將Android 4.0.3和4.0對應的內容及Tools所有下載過來。

2.  使用Coffee Bytes Java插件

Coffee BytesJava是Eclipse的一個插件,用於對代碼進行摺疊,其功能比Eclipse自帶的代碼摺疊功能強大多了。對於大段代碼的研究,該插件的做用功不可沒。此插件的安裝和配置步驟以下:

·  單擊Eclipse菜單欄Help->Install New Software,在彈出的對話框中輸入http://eclipse.realjenius.com/update-site,選擇安裝這個插件便可。

·  單擊Eclipse菜單欄Window->Preference,在左上角輸入Folding進行搜索,結果如圖1-9所示。

圖1-9  Coffee Bytes Java 插件配置

在圖1-9所示的對話框中,要先打開Enablefolding選項,而後從Select foldingto use框中選擇CoffeeBytes Java Folding。圖1-9右下部分的勾選框用來配置此插件的代碼摺疊功能。讀者不妨按照圖1-9所示來配置它。使用該插件後的示意圖如圖1-10所示。

若是不關心else if分支,就能夠把這段代碼摺疊起來

圖1-10  Coffee Bytes Java插件的使用示例

從圖1-10中可看到,使用該插件後,基本上代碼中全部分支均可以摺疊起來,該功能將幫助開發人員集中精力關注本身所關心的分支。

3.  導入Android源碼

注意,這一步必須編譯完整個Android源碼才能夠實施,步驟以下:

·  複製Android源碼目錄/development/ide/eclipse/.classpath到Android源碼根目錄。

·  打開Andriod源碼根目錄下的.classpath文件。該文件是供Eclipse使用的,其中保存的是源碼目錄中各個模塊的路徑。因爲咱們只關心Framework相關的模塊,所以能夠把一些不是Framework的目錄從該文件中註釋掉。同時,去掉沒必要要的模塊也可加快Android源碼導入速度。圖1-11所示爲該文件的部份內容。

圖1-11.classpath文件部分文件內容

另外,一些沒必要要的模塊會致使後續在Eclipse中Android源碼編譯失敗。筆者共享了一個.classpath文件,讀者可從http://download.csdn.net/detail/innost/4247578下載並直接使用。

單擊Eclipse菜單欄New->Java Project,彈出如圖1-12所示的對話框。設置Location爲Android4.0源碼所在路徑。

圖1-12  導入Android源碼示意圖

因爲Android 4.0源碼文件較多,導入過程會持續較長一段時間,大概10幾分鐘左右。

注意導入源碼前必定要取消Eclipse的自動編譯選項(經過菜單欄Project->BuildProject Automatically設置)。另外,源碼導入完畢後,讀者千萬不要清理(clean)這個工程。清理會刪除以前源碼編譯所生成的文件,致使後續又得從新編譯Android系統了。

4.  建立並運行模擬器

單擊Eclipse菜單欄Window->AVD Manager,建立模擬器,如圖1-13所示。

圖1-13  模擬器建立示意圖

模擬器建立完畢後便可啓動它。

5.  調試SystemServer

調試SystemServer的步驟以下:

·  首先編譯Android源碼工程。編譯過程當中會有不少警告。若是有錯誤,大部分緣由是.classpath文件將不須要的模塊包含了進來。讀者可根據Eclipse的提示作相應處理。筆者配置的幾臺機器基本都是一次配置就成功了。

·  在Android源碼工程上單擊右鍵,依次單擊Debug As->Debug Configurations,彈出如圖1-14所示的對話框,而後從左邊找到RemoteJava Application一欄。

圖1-14  Debug配置框示意圖

·  單擊圖1-14中黑框中的新建按鈕,而後按圖1-15中的黑框中的內容來設置該對話框。

圖1-15  Remote Java Application配置示意圖

由圖1-15所示,須要選擇Remote調試端口號爲8600,Host類型爲localhost。8600是SystemServer進程的調試端口號。Eclipse一旦鏈接到該端口,便可經過JDWP協議來調試SystemServer。

·  配置完畢後,單擊圖1-15右下角的Debug按鈕,便可啓動SystemServer的調試。

圖1-16所示爲筆者調試startActivity流程的示意圖。

圖1-16  SystemServer調試效果圖

1.3  本章小結

本章對Android系統和源碼搭建,以及如何利用Eclipse調試SystemServer等作了相關介紹,相信讀者如今已經火燒眉毛了吧?立刻開始咱們的源碼征程!

相關文章
相關標籤/搜索