在软件开发过程中,程序代码的复用,是非常重要的概念。我们总是需要使用一些现有的模块、包、框架,或开发自己的模块、包、框架,来实现对程序代码的复用。比如在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文件有常量重名,将根据库项目被引用的顺序来确定常量的使用优先级。