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

Android中库项目、jar包等的使用方法的更多相关文章

  1. 【转】Android中引入第三方Jar包的方法(java.lang.NoClassDefFoundError解决办法)

    原文网址:http://www.blogjava.net/anchor110/articles/355699.html 1.在工程下新建lib文件夹,将需要的第三方包拷贝进来.2.将引用的第三方包,添 ...

  2. (转载) android studio library生成jar包和aar的方法总结

    android studio library生成jar包和aar的方法总结 标签: android学习文档jar和aar的使用与生成gradle 2016-11-25 10:39 1782人阅读 评论 ...

  3. Android 第三方库导致jar包冲突解决办法

    这几天的任务是将mapbox的工程合到程序中去,但是合并过程却出现了问题 合并方法: 在app的build.gradle中添加 dependencies { compile ('com.mapbox. ...

  4. eclipse中maven项目jar包不会自动下载解决办法

    Eclipse中maven从远程仓库中下载jar包有时会很慢,有些甚至进度停止不动,这个时候我们可能会终止当前下载,但是终止jar包下载后会出现一个问题,再次打开Eclipse时,你会发现提示你项目中 ...

  5. Android中使用第三方jar包

    步骤: 方法1:Eclipse下, 右键工程, Build path, java build path, 选择libraries 在右边的按钮中点击“Add Library” 选择“User libr ...

  6. 【转】Android将Activity打成jar包供第三方调用(解决资源文件不能打包的问题)

    Android中引入第三方Jar包的方法(java.lang.NoClassDefFoundError解决办法) 鼠标右键项目,然后属性,然后java buildpath 然后order and ex ...

  7. Maven中使用本地JAR包

    在Maven项目中使用本地JAR包有两种方法: 1. 使用system scope <dependencies> <dependency> <groupId>org ...

  8. eclipse中Maven项目jar问题

    eclipse中Maven项目jar包下载下来了,不然我们import是时候根本导入不进来,网上的方法都试过了,Maven仓库也清空过后重新下载过了,都解决不了. 后来发现虽然jar包是下载下来了,可 ...

  9. 关于如何正确地在android项目中添加第三方jar包

    在android项目中添加第三方jar包虽然不是一个很复杂的问题,但是确实给很多开发者带来了不小的困扰.我自己就曾经碰到过calss not found exception.error inflati ...

随机推荐

  1. USACO Section 4.2 Drainage Ditches(最大流)

    最大流问题.ISAP算法.注意可能会有重边,不过我用的数据结构支持重边.距离d我直接初始化为0,也可以用BFS逆向找一次. -------------------------------------- ...

  2. jQ的自定义插件

    此文运用的是优雅的Markdown而书 项目中写js时,有很多时候有需要重复利用的东西,我们可以给它们写成一个插件的形式,这样阅读性和适用性都会大大提高.最近抽个时间,好一番的研究了下 Jcrop 的 ...

  3. Mysql mysqlimport 导入数据

    在mysql 数据库中可以用 mysqlimport 工具来实现数据的导入!mysqlimport 导入数据简单,但是这个也要满足一定的条件 1.既然是把数据导入到数据库,你总有一个数据库用户账号吧 ...

  4. 9_Permanent Storage

    9 // // ViewController.swift // Permanent Storage // // Created by ZC on 16/1/9. // Copyright © 2016 ...

  5. php基础知识总结

    PHP 代表 PHP: Hypertext Preprocessor PHP 文件可包含文本.HTML.JavaScript代码和 PHP 代码 PHP 代码在服务器上执行,结果以纯 HTML 形式返 ...

  6. SpringMVC深入理解

    核心类与接口 - DispatcherServlet 前置控制器- HandlerMapping 请求映射(到Controller)- HandlerAdapter 请求映射(到Controller类 ...

  7. How to get the xpath by clicking an html element

    How to get the xpath by clicking an html element How to get the xpath by clicking an html element

  8. Matlab单元(Cell)数据的应用

    MATLAB里面的cell有的翻译为单元有的翻译为细胞型数据.它是MATLAB的一种特殊数据类型,可以将它看作是一种无所不包的广义矩阵.组成cell的元素可以是任何一种数据类型的常数或者常量,每一个元 ...

  9. Android项目中包名的改动

    通常改动包名时会造成R文件错误,而且有时带有原因不明的Manifest文件里多处文本混乱. 所以,将眼下觉得最为简洁方便的改动包名流程记录例如以下: 如果我们眼下的包名为com.pepper.util ...

  10. Html 语法学习笔记二

    1.图像标签(<img>)和源属性(Src) 在 HTML 中.图像由 <img> 标签定义.        <img> 是空标签,意思是说,它仅仅包括属性,而且没 ...