• (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是这样引用的:

     当项目1作为sdk被引入到项目2后,项目1的bin中会自动生成一个jar文件(这个jar文件最好不要直接导入)

    对于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

  • 相关阅读:
    python的深拷贝和浅拷贝
    jquery的each循环
    python开发要求
    Python的进程和线程(二)——IO密集型任务
    Python的进程和线程(一)——计算密集型任务
    Python常用模块(一)--argparse模块
    Chrome Headless模式(二)——Python+selenium+headerless
    beyond compare 命令行批量比对图片
    Chrome Headless模式(一)
    python实现在mac笔记本上更换桌面背景
  • 原文地址:https://www.cnblogs.com/android-for-dh/p/4438526.html
Copyright © 2020-2023  润新知