(Android)如何将一个高复用性项目供其他项目使用(jar导出,导入,Is Library)

    我们做过一个项目,以后这个项目里的代码经常会被其他项目用到。对于这种复用性高的项目(后面称为“项目1”),要被其他项目使用(后面称为“项目2”),为了减少代码量,我们目前有两种方法。

一种方法是:将项目1打包成jar文件,导出,导入到项目2里,供项目2调用。

另一种方法:将项目1作为 Library供项目2调用。

 

一、jar导出,导入

1.jar导出

现在有一个现成的项目1

技术分享

功能是竖立的SeekBar

这里面只有一个VerticalSeekBar类,无Activity和资源文件需要打包。

现在我们开始打包:

(1)右键工程选择导出:

技术分享

(2)选择导出目标为:java->JAR文件:

技术分享

(3)把一些不必要的文件勾选掉,如下图:

技术分享

一般,不需要打入jar包的文件有:

1、/src/目录下的activity文件

2、根目录下的文件,.classpath, .project, manifest.xml, .properties, .cfg等

3、/bin/目录下的文件,如:manifest.xml, .dex, .apk, resources.ap_等

4、/bin/res目录

5、/res/drawable 相关的目录

6、/res/layout/ 目录

7、/res/menu/ 目录

 到了这一步,己经完成。

上面就是讲解如何将Android项目导出为jar文件,其实这样做是没有问题的,因为这是普通生成jar文件的情况。

两种其他情况解决方法:

(1)要将Activity或者资源文件打包 :

暂时有两种解决办法:其一http://blog.csdn.net/xiaanming/article/details/9257853    

                            其二项目1 Is Library(要把源码发给第三方,不安全)

(2)项目1本身已经包含第三方jar:

项目1 Is Library(要把源码发给第三方,不安全),后面“二”会详解。

 

直接用Eclipse将Android项目打包,难道就可以把依赖的jar文件或library关联起来了?似乎没有那么强大,经过网上查询,将整个项目打包是不允许的,调用会出错。

 

2.jar导入

(1)绝对路径方法:(绝对路径不推荐)

     右击“项目”→选择Properties,在弹出的对话框左侧列表中选择Java Build Path,如下图所示:选择Add External JARs,就可以逐个(也可以选择多个jar,但是限制在同一个文件夹中)添加第三方引用jar包。

技术分享

 这种方式操作简便,但是每个要调用项目1的项目,都需要重新引入Jar包,Jar包不具有可重用性。jar包绝对地址也很容易出错,所以不推荐。

 

(2)自定义库方法(绝对路径不推荐):

 技术分享

 

技术分享

技术分享

技术分享

 技术分享

 技术分享

技术分享

技术分享

 

 这种方法虽然可以重复使用,但也是绝对路径,不推荐。

 

(3)放入自定义文件夹方法:(推荐

 在项目2根目录下新建文件夹(任意取名),然后将要导入的jar文件复制到这个文件夹里,然后:

技术分享

 检查不会报错。

技术分享

技术分享 

 

 这种方法虽然不可重复使用,但是简便,是相对路径,不易出错,推荐使用。

 

 (4)把jar放入libs方法(相对路径,推荐

技术分享

技术分享

与方法3比少了Add to Build Path 步骤,所以更加简便,也是相对路径,不易出错,推荐使用。(虽然不可重复使用)

 

二、Is Library

我上网也查了很久,也看了一些博文,还是没有找到合适的解决方案。

有些是这么使用sdk的,在Android中有依赖jar的就不能再将其打包成jar文件了,我们可以将其作为library(库文件)让其他项目引用,例如多酷的sdk使用这样的library,是一个Android项目形式存在的。

技术分享

 

多酷将其设置为Is Library

技术分享

多酷提供的demo是这样引用的:

 

技术分享

 

 

对于SDK这一块我的理解还很浅,需要以后有时间再好好研究。如果大家有合适有效的方法,欢迎留言。如果有错误,欢迎指正。

 

 

 

参考:

http://blog.csdn.net/xiaanming/article/details/9257853

http://blog.csdn.net/wwj_748/article/details/21937257

http://blog.csdn.net/mazhaojuan/article/details/21403717

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。