讀古今文學網 > Android程序設計:第2版 > Eclipse相關的概念和術語 >

Eclipse相關的概念和術語

Eclipse有其自己的術語,這些術語背後的概念是理解Eclipse的關鍵。這些概念是在很長的產品生命週期中逐漸衍化發展而來的,始自最初的VisualAge(在20世紀80年代中期用SmallTalk語言編寫的開發工具)。當前版的Eclipse是用Java語言實現的,基於Equinox框架,它實現了Java軟件系統OSGi模塊化規範,OSGi是在manifest文件中指定動態加載模塊即bundle的生命週期和依賴關係的規範。也就是說,Eclipse是框架中的模塊集合。當增加或刪除模塊時,如果這些模塊對其他模塊有依賴,可能的話,Eclipse會自動滿足這些依賴關係。

關於Equinox OSGi實現的更多信息,包括啟動Eclipse時所發生的事情的詳細解釋,可以訪問下面這個鏈接瞭解:http://eclipse.org/equinox/documents/quickstart.php。

插件

安裝Android軟件開發工具時,已經在Eclipse中添加過插件:Android開發工具(ADT)插件。插件即OSGi包(OSGi bundle)。

Android SDK在Eclipse中添加了兩個插件。可以使用插件視圖來查看這兩個插件,即選擇Window→Show View→Other,展開Plugin development項,然後從視圖列表中選擇插件。可以看到如圖5-2所示的列表。

圖5-2:Eclipse環境中的所有插件列表

注意:在本章及本書的其他章節中,Eclipse視圖截圖都是分離(detached)模式顯示,一個獨立的窗口顯示,這樣我們不需要去掉截圖周圍的視圖和工具欄。屏幕上的視圖顯示方式取決於你所使用的Eclipse透視圖及該透視圖下的其他視圖。右擊視圖標題,會彈出一個快捷菜單,其中有視圖顯示方式的各種選項,其中一個選項是Detached。

插件是按字母順序排列的,因此你會在列表上方看到Android SDK的兩個插件:com.android.ide.eclipse.adt和com.android.ide.eclipse.ddms。打開這兩個插件的視圖。在本章的後面我們將查看這些插件的一些信息,看看它們是如何修改Eclipse環境的。繼續研究這個插件列表,你會發現Eclipse本身也是基於一系列插件組裝而成的,通過這個列表可以全方位地瞭解Equinox OSGi的實現。

工作區

Eclipse需要保存很多狀態,這些狀態保存在工作區(workspace)中。第一次運行Eclipse時,它會詢問你是否要創建工作區。此後,啟動Eclipse時,它會直接進入上一次所用的工作區,在該工作區下在最近一次退出前包含的所有項目、文件和視圖,仍然會載入進來,Eclipse是通過讀取工作區之前的狀態來獲取這些信息的。在Eclipse中,工作區是使用目錄實現的。

每個項目都屬於一個工作區。默認情況下,新建項目時都會在工作區的目錄下創建新目錄,即使是根據不在當前工作區目錄中的源代碼創建的項目也會在當前工作區目錄下面再新建一個目錄。

不同的工作區是相互獨立的。一個工作區的設置只對這個工作區有效。可以考慮為不同平台單獨建立工作區,這些工作區的使用環境可能有顯著區別,如Rails項目和Android項目。可以同時啟動多個Eclipse實例,各個實例使用不同的工作區。假設有一些基於Eclipse的Web應用框架工具,這些工具所需的Eclipse版本和Android開發所需的版本可能不兼容。為Android開發建立一個獨立的工作區,其狀態就可以單獨保存,也可以同時運行不同版本的Eclipse。

Java環境

在Eclipse下的Java軟件開發中會用到3種不同的Java環境。

Eclipse的Java運行時環境

第一個環境是Eclipse本身的運行基礎,Eclipse需要在這個運行時環境中運行。第1章P9「Eclipse集成開發環境(IDE)」一節介紹了安裝Java開發工具和運行時環境的步驟,如果系統還沒有安裝,則可以參考本節的介紹進行安裝。如果Eclipse需要使用不同的Java運行時環境,則可以在Eclipse安裝目錄下的eclipse.ini文件中,對該選項進行手工配置。例如,當Eclipse運行時出現了內存溢出,需要調整的應該是這個運行時環境。

Java編譯器

第二個環境用於編譯代碼。Eclipse有其自己的增量式Java編譯器。除了生成編譯好的Java.class文件,它還會創建錯誤消息,在Java編輯器裡顯示,並生成Eclipse的智能輸入提示、代碼自動補全等所需的信息。該環境是可以在Preferences窗格的Java→Compiler中配置的,但是也可以在項目的Preferences中對具體項目進行專門設置,項目的配置會自動覆蓋默認的配置。

此外,該環境也包含編譯應用所用的庫文件的描述。如果查看Android應用的Preferences→Build Path,則會發現項目依賴的庫文件列表中沒有包含Java運行時環境。相反,Android項目依賴於特定版本的Android庫。因為Android工具是以插件形式整合到Eclipse中的,所以Android庫的版本無法在Build Path窗口中直接修改。如果要修改Android庫的版本,則必須在Android Preferences窗格中進行。

應用運行時環境

第三個環境是運行應用的運行時環境,對於Android應用來說,這個環境就是Android模擬器。安裝開發環境時,或者說當你安裝了SDK,或者當你安裝了ADT插件,你已經至少安裝了一個Android虛擬設備(AVD)。當創建一個新的Android項目時,會把這個項目和其中一個AVD關聯起來。插件使用適當的配置文件來安裝編譯環境和運行應用所用的模擬器,以減少運行時環境之間的不匹配——在Android 2.2版本的庫文件上編譯的應用可能在1.5版本的平台上無法運行。

項目

對於軟件開發人員,Eclipse項目即他們正在開發的程序。對於Android軟件開發人員,Eclipse項目即Android應用。對於Eclipse,項目即Eclipse插件知道應該運行哪個軟件,當創建Android項目時,項目的數據文件包括Eclipse用於從不同的插件選擇代碼來執行不同的操作的信息。調用ADT插件,創建包含正確的文件和目錄結構設置的Android應用項目。當編寫Android項目文件時,在打開XML文件(如佈局和manifest文件)時,會自動啟動正確的編輯器。當修改了項目中的文件時,也會自動調用正確的編譯器來對應用進行編譯。

編譯器和artifact

Eclipse框架中對編譯器(builder)的定義是用於將項目源文件生成項目的artifact文件。artifact是從源文件編譯生成的文件。Android Eclipse插件定義了一些新的編譯器,它們根據.class文件生成.dex文件。創建用於標識XML文件中指定的資源的Java常量,創建apk文件,並執行一些其他的把代碼轉換成可安裝包的Android特定操作。當發生變化時,Eclipse會重新生成可安裝的應用。可以運行或調試這些應用。

將Java編譯器輸出的.class文件轉換成Dalvik虛擬機可解釋的.dex字節碼文件,是一個很妙的技巧。這使得可以使用Java來編程,可以使用成熟的編輯、重構工具及很多可以提高Java編程的高效性和可靠性的其他工具。

擴展

擴展(Extension)是插件擴展Eclipse功能的方式。作為Android軟件開發人員,不需要操作或更改擴展,但是當打開插件視圖(Plug-ins view)時,可以查看Android插件所添加的一些擴展。這將有助於你對於ADT插件和Eclipse系統的其他方面之間的關係有更具體的認識。在插件視圖下(如圖5-2所示),雙擊插件com.android.ide.eclipse.adt,會看到擴展視圖,其中列出了插件的擴展,如圖5-3所示。

圖5-3:ADT插件的擴展列表

舉個例子,可以選擇名為org.eclipse.core.resources.builders的擴展,在擴展視圖的右邊,顯示的是擴展名:Android Resource Manager、Android Pre Compiler和Android Package Builder。這些擴展需要處理Android資源;預編譯AIDL(Android接口定義語言,Android Interface Definition Language)成Java代碼,在第3章將對Android接口定義語言進行描述;把Java編譯器生成的.class文件轉換成.dex文件,並編譯生成.apk文件,.apk文件可以部署在Android設備或Android虛擬設備上。

展開org.eclipse.ui.editors項,會看到ADT插件添加到Eclipse系統中的編輯器列表:Android Manifest編輯器、Android XML Resources編輯器。該列表中還有很多其他的擴展,這可以使你大致瞭解將Eclipse轉換為Android軟件開發工具所需的代碼量。這裡介紹的擴展足以說明一些最重要的方面:如何編譯Android程序,在Eclipse環境中應該添加哪些插件來支持Android特有的文件,包括組成manifest、佈局和其他資源的XML文件。

同樣,如果你研究其他ADT插件,也可以瞭解到Dalvik調試監控服務(DDMS)特性是如何添加到Eclipse中的。

關聯

關聯(association)描述項目內的文件如何和編輯器中的其他操作選項關聯。例如,Android項目內的Java文件和所有Java項目一樣也是使用Java編輯器編輯的,而XML文件則使用Android專用的XML編輯器編輯,包括Android Manifest編輯器或Android Resource編輯器。這些編輯器知道如何編輯這些文件中的專門結構,但是在其他方面存在不足,例如用Outline視圖編輯的通用結構。如果想通過XML編輯器打開Android XML文件而不是該文件需要的關聯文件,則可以通過源文件的上下文菜單中的Open With命令重載這些關聯。右擊Package Explorer視圖中的文件,會彈出該命令。

Open With命令會顯示所選中的文件的編輯器選項。如果選擇Other選項,就可以看到Eclipse中配置的所有編輯器的列表,而且還提供了可以打開包含外部程序的文件選項。