在軟件開發過程中,程序代碼的復用,是非常重要的概念。我們總是需要使用一些現有的模塊、包、框架,或開發自己的模塊、包、框架,來實現對程序代碼的復用。比如在JavaWeb編程過程中,經常使用的Struts和Spring等框架,就可以大大簡化我們的開發過程,提高開發效率。
在開發Android應用程序的過程中,同樣有這方面的需求。Android系統包含的Android應用程序開發框架,已經是一個可以很好的提高開發效率的框架,但它並不能滿足我們的所有需要。比如我們再開發某一類應用程序時,會發現這一類應用程序,會有大量的代碼是重復的,這時,就需要我們優化設計並采用某種方式,實現重復代碼的復用,使開發此類應用程序變得簡單。
類似開發其他Java應用一樣,我們可以將可復用的代碼,打成一個jar包,供所有需要的項目使用。這樣,可以解決很大一部分代碼復用的問題,比如在不同應用中可以復用的核心算法等。
但是,如果可復用代碼包含了大量的資源,包括圖片、音樂文件甚至界面布局等的時候,代碼的復用就會變得麻煩起來,因為這些東西不能被一起打包到jar包裡面,供需要的項目使用。而沒有這些資源,可復用的代碼又無法運行。在這種情況下,最好的解決辦法,就是使用Android2.2之後的SDK支持的庫項目(Lib Project)。
一個庫項目是一個包含了源碼和資源的項目,它可以被其他的項目引用,從而讓其他項目使用它包含的代碼和資源。多個Android應用程序項目可以引用同一個庫項目,同一個Android應用程序項目也可以引用多個庫項目。
創建庫項目和引用庫項目是很容易的事情。我們以Eclipse環境下的開發為例。如果要創建庫項目,只需要在創建普通Android項目完成後,打開設置項目屬性的面板,在Android選項卡下選中Is Library復選框即可(如下圖所示)。
現有的項目引用庫項目的時候,也只需要打開項目屬性設置面板,在Android選項卡下添加需要引用的項目(如下圖所示)。
完成以上操作後,我們就成功的創建了一個庫項目,或在現有項目中引用了一個庫項目,是不是很簡單?
當然,在使用庫項目的時候,因為Android項目結構及編譯工具的特殊性,我們需要注意一些要點,列舉如下:
1.工作項目和庫項目的資源名稱,盡量不要重復,如果重復,編譯器會優先使用工作項目的資源;
2.無法將一個庫項目導出為一個jar文件;
3.庫項目的Android系統版本必須等於或低於工作項目的系統版本;
4.每一個庫項目都會生成一個R文件,工作項目被編譯時,將會合並工作項目和庫項目的R文件,如果R文件中有常量同名,將使用工作項目R文件中的常量;如果引用了多個庫項目,庫項目中的R文件有常量重名,將根據庫項目被引用的順序來確定常量的使用優先級。