android库项目文档.docx
- 文档编号:24461659
- 上传时间:2023-05-27
- 格式:DOCX
- 页数:8
- 大小:380.73KB
android库项目文档.docx
《android库项目文档.docx》由会员分享,可在线阅读,更多相关《android库项目文档.docx(8页珍藏版)》请在冰豆网上搜索。
android库项目文档
我们为什么要使用库项目?
1.软件开发遇到的问题
在软件开发过程中,程序代码的复用,是非常重要的概念。
我们总是需要使用一些现有的模块、包、框架,或开发自己的模块、包、框架,来实现对程序代码的复用。
比如在JavaWeb编程过程中,经常使用的Struts和Spring等框架,就可以大大简化我们的开发过程,提高开发效率。
在开发Android应用程序的过程中,同样有这方面的需求。
Android系统包含的Android应用程序开发框架,已经是一个可以很好的提高开发效率的框架,但它并不能满足我们的所有需要。
比如我们再开发某一类应用程序时,会发现这一类应用程序,会有大量的代码是重复的,这时,就需要我们优化设计并采用某种方式,实现重复代码的复用,使开发此类应用程序变得简单。
类似开发其他Java应用一样,我们可以将可复用的代码,打成一个jar包,供所有需要的项目使用。
这样,可以解决很大一部分代码复用的问题,比如在不同应用中可以复用的核心算法等。
但是,如果可复用代码包含了大量的资源,包括图片、音乐文件甚至界面布局等的时候,代码的复用就会变得麻烦起来,因为这些东西不能被一起打包到jar包里面,供需要的项目使用。
而没有这些资源,可复用的代码又无法运行。
在这种情况下,最好的解决办法,就是使用Android2.2之后的SDK支持的库项目(LibProject)。
2.库项目的结构
一个库项目是一个包含了源码和资源的项目,它可以被其他的项目引用,从而让其他项目使用它包含的代码和资源。
多个Android应用程序项目可以引用同一个库项目,同一个Android应用程序项目也可以引用多个库项目。
3.库项目创建和使用
库项目就是一个完整的android项目我们只需要配置一下他的lib属性就可以了就可以作为一个lib项目来使用。
步骤:
右键需要作为lib的项目---》Properties---》android----》
Library----在isLibrary的前面勾选复选框即可。
例:
我们在其它android的项目中怎么使用库项目了?
,也很简单:
跟上面的步骤一样,只是在Library中不是选择IsLibrary而是add添加一个Lib项目
例:
这样我们就可以在子项目中使用库项目中的资源包括代码和资源文件。
4.lib项目中使用的过程中需要注意的事项
在使用库项目的时候,因为Android项目结构及编译工具的特殊性,我们需要注意一些要点,列举如下:
1.工作项目和库项目的资源名称,如果名称重复,编译器会优先使用工作项目(也称为子项目)的资源,这个特点在项目中也可以利用,比如自己想要替换资源文件的东西,只需要命名相同就可以了;
2.无法将一个库项目导出为一个jar文件;
3.库项目的Android系统版本必须等于或低于工作项目的系统版本;
4.每一个库项目都会生成一个R文件,工作项目被编译时,将会合并工作项目和库项目的R文件,如果R文件中有常量同名,将使用工作项目R文件中的常量;如果引用了多个库项目,库项目中的R文件有常量重名,将根据库项目被引用的顺序来确定常量的使用优先级。
5.库项目使用的场景
库项目确实为重复代码代码带来了很大的好处。
但是并不是什么情况下都是适用的,就像前面提到的适合做一些特定逻辑上的处理,比如新浪微博我们开发新浪的一些功能可以使用新浪微我们提供的lib项目,它里面主要封装了一些接口的操作。
我们只需要调用就可以了,这种场景库项目来对指定的接口完成指定的事情。
如果使用同一个lib项目时接口有很大的改变就不适合使用lib,因为在lib项目中封装的逻辑处理是不能改变的包括接口的调用。
和异常的一些处理。
我们必须之前做好足够的设计。
在对各种android的控件定义格式的尽量使用style来完成,来方便不同子项目来调用同一个库项目修改控件属性的修改性。
例:
layout中mian.xml中有一个控件 android: layout_width="wrap_content" android: layout_height="wrap_content" android: layout_marginLeft="7dip" android: text="@string/week_gadgets" android: textColor="@color/weekgad_color" android: textStyle="bold">
如果lib项目中一个TextView的属性是这样定义的,如果现在我只需要修改android:
textStyle="bold"就要子项目中写一个相同的mian.xml来覆盖这个,但是我们只改了一句话,这样使用lib项目就没有减轻代码的复写量。
如果我们这样写:
代码的重写会减少很多。
style="@style/test" android: layout_width="wrap_content" android: layout_height="wrap_content" android: text="@string/week_gadgets" android: textColor="@color/weekgad_color" >
Value文件夹下面Style.xml中name=“test”的style如
layout_marginLeft">7dip textStyle">bold 如果我们现在修改里面的textview中的属性可以在子项目的style.xml中定义一个 layout_marginLeft">7dip textStyle">nomal 这样就可以达到修改效果,虽然还是有代码重写,因为多个项目中的相识的布局需求代码重写是不可避免的我们要做的是来减少重写的可能。 这也是我们使用lib项目的初衷。 Ps: 希望大家能够找出更多的减少代码重写的技巧。 COMMERCE中的项目由前期的Source转成使用lib 1.使用source项目的情况 关于引用source项目的流程: 把所有的.Java文件写到一个普通的项目中,这个项目中的。 Java文件是我们所有页面以及和服务台进行数据交换和现实的处理的代码,只有资源文件是没有的。 项目: 目录结构 在工作项目中使用source: ---》右键---》properties----》javaBuildPath—》如图 在Android项目的配置库上有7个项目,其中有5个相似的项目在使用同一个源码包(source,后面也叫源码包),我们同样是为了处理相同的逻辑处理来减少代码的重写。 需要改变的逻辑处理我们同样只需要工作项目中对项目的类重写即可。 Lib项目可以达到这种效果。 使用source的缺点是相同的资源文件不能统一的放在一个项目中然后我们由其它的项目来调用,这样增加了资源文件的重用,考虑到这种情况刚好可以使用lib项目来完成。 2.在使用lib项目来代替source 因为我们需要修改的5个项目的逻辑业务的处理是完全一样的,所以我们把的lib项目就是其中的一个完整的项目,我们需要改的地方只是少部分页面上的布局以及图片资源的改变。 我是使用的是Jointek项目来作为lib项目的。 怎么操作的这里就不过多的解释,很简单前面已经做出了使用lib项目的流程。 下面是替换后的效果图。 (只做了图片资源的替换) 在其中遇到的第一个问题是,我们每个app所调用接口的时候需要鉴权的,鉴权的方法是写在lib中的,我们对lib中的常量类是不能进行处理的,这里重写android的组件以及控件。 而且UUId都是不同的,但是我们lib中使用的是Jointek中的uuid,我们在子项目中调用lib中的鉴权是需要给lib鉴权的方法不同的UUID的,第一次我们的尝试是,lib项目和库项目相互调用,但是不行。 后来通过发现lib项目中的所有的调用都是在子项目中的Mianactivity启动之后调用的。 我们可以在MainActivity启动的时候把UUID存在本地和数据库中,然后再鉴权的时候我们调用直接通过获取指定的位置读取数据然后进行鉴权操作。 这样可以做到数据的交互,在项目中还有需要这样的引用,我们可以考虑使用SQLITe数据库来完成这些常量类改变的操作。 关于使用lib项目的参考文档
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- android 项目 文档