eclipse 库 library jar包 工程 总结

本文详细介绍了Android项目中库项目的使用方法,包括如何引入和管理库项目、解决常见问题,以及在实际开发中需要注意的事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引用库错误
如果在libraries中发现有小红叉,表明引用库错误
解决办法:在左侧projects中add引用到的库
如:我们的支付库引用了以下三个库

那么需要在 projects中add这三个库
 
完成clear一下,右侧的 libraries中就不会有错误了
   

引入jar包
右键--> Properties--> Jav Build Path--> 选右侧的libraries--> 把jar包添加进去即可

一定不要忘了,还要在右边的Order and Explrt中勾选刚导入的jar包
完成后,会发现多出以下东西:


引用库
1、将一个android工程作为库工程 
首先它也是普通的android工程,右键--> Properties--> Android--> 选中”Is Library“--> 点击Apply,点击OK,这个android工程就成为了library工程。
这时查看project.properties文件,会发现多了以下一行:


注意:在library工程中不能使用aidl文件,不能引用raw、assets下资源,不能右键运行。

2、工程中引用库工程 

右键--> Properties--> Android-->  点击 右侧下方的Add按钮,在打开的对话框中选择需要的库工程--> OK,Apply,OK即可

3、在主工程清单文件中声明库工程中的组件
主工程的清单文件中必须声明所引用的库工程中的四大组件<activity>,<service>,<receiver>,<provider>以及<permission>,<uses-library>,及其他类似的元素,并且必须通过它们的包全名来声明引用的库组件。


相关问题处理
1、无缘无故无法引入库的解决方式
  • 先右键--> Android--> remove错误引用的库--> 点击ok;再右键--> Android--> 重新add此库--> 点击ok
  • 也就是,取消引入后要先点击确认后才能再添加,若remove后立即add则无效!

2、库被重复引用导致的问题(补充:原因可能是因为此被引用的库版本不一致!)

  • 若主工程和库工程都引用了同样的其他库或jar包时,会导致重复引用的异常。
  • 比如,我按以上步骤创建了两个工程,没做其他改变前,相关的设置为:
主工程
库工程
 
这时运行的话,异常提示信息如下:
[2015-09-08 15:53:10 - Dex Loader] Unable to execute dex: Multiple dex files define Landroid/support/v7/appcompat/R$anim;
[2015-09-08 15:53:10 - Lib1] Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Landroid/support/v7/appcompat/R$anim; 
 
更改方式:
  • 删除主工程里库工程已经引用的jar包或其他库工程,并且clear一下所有涉及到的工程。
  • 但是,奇怪的是,若主工程引用了两个库工程,这两个库工程若引用了V7库时运行并没有问题
  • 更奇怪的是,此时再在主工程中添加同样的V7库后也能正常运行,卧槽!!!

3、库项目使用过程中需要注意的事项
在使用库项目的时候,因为Android项目结构及编译工具的特殊性,我们需要注意一些要点,列举如下:
  • 如果工作项目和库项目的资源名称重复,编译器会优先使用工作项目的资源,若多个库项目中的资源名称重复,则根据在列表中的排序由上到下优先级依次降低
  • 工作项目被编译时,会合并工作项目和库项目的R文件,如果R文件中有常量同名,同样,也会按以上优先级处理;
  • 无法将一个库项目导出为一个jar文件;
  • 工作项目的Android系统版本必须大于等于库项目的系统版本;
另外说一下资源冲突问题的注意点:
我们知道本项目的优先级最高,但要注意一点的是string里面的国际化问题。
一般集成的项目都很完善,国际化分辨率什么的都支持,自然自己的项目就支持了这些功能,这样就会出现,你在string里面定义了一个key跟库里面的key一样,但结果值却是以库的为准的现象,为什么?因为手机去找value-zn(一般手机默认是语言是中文)的资源了,由于你本来项目里面没有国际化,所以自然去库里面找资源了,最容易出现的问题就是app_name总是项目库的名字。

4、库项目使用的场景
库项目确实为重复代码代码带来了很大的好处。但是并不是什么情况下都是适用的,就像前面提到的适合做一些特定逻辑上的处理,比如新浪微博我们开发新浪的一些功能可以使用新浪微我们提供的lib项目,它里面主要封装了一些接口的操作。我们只需要调用就可以了,这种场景库项目来对指定的接口完成指定的事情。如果使用同一个lib项目时接口有很大的改变就不适合使用lib,因为在lib项目中封装的逻辑处理是不能改变的包括接口的调用。和异常的一些处理。我们必须之前做好足够的设计。在对各种android的控件定义格式的尽量使用style来完成,来方便不同子项目来调用同一个库项目修改控件属性的修改性。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值