eclipse library jar包 使用总结 MD
Markdown版本笔记 | 我的GitHub首页 | 我的博客 | 我的微信 | 我的邮箱 |
---|---|---|---|---|
MyAndroidBlogs | baiqiantao | baiqiantao | bqt20094 | baiqiantao@sina.com |
目录
引用库错误解决办法
如果在libraries中发现有小红叉,表明引用库错误
解决办法:
在左侧projects中add引用到的库
如:我们的支付库引用了以下三个库
那么需要在projects中add这三个库
完成后clear一下,右侧的libraries中就不会有错误了
然后再在我们的主工程中用同样的方式引入支付库。
引入jar包
简单点,也可以直接把jar包拷贝到lib目录下!
完整步骤:
1、将jar包放入工程的libs目录下
2、右键--> Properties--> Jav Build Path--> 选右侧的libraries--> 将libs目录下jar导入
3、选中Order and Export,勾选*.jar,确定即可
实际经验:对于某些jar包,比如v4、v7包,我们直接把此包放到工作空间目录中,并做一些设置,项目就能直接引用到(描述的不清楚,但实际就是这么回事)。
一定不要忘了,还要在右边的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、在主工程清单文件中声明库工程中的组件
主工程的清单文件中必须声明所引用的库工程中的四大组件,,,以及,,及其他类似的元素,并且必须通过它们的包全名来声明引用的库组件。
相关问题处理
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来完成,来方便不同子项目来调用同一个库项目修改控件属性的修改性。
eclipse 导入或新建项目时报错
最简单的解决方案
- 1、下载最新的v4,v7的jar包 http://download.csdn.net/download/u013161218/8077247
- 2、放到workspace目录中
- 3、重启eclipse即可
如果只是某一个工程(特别是导入的他人的工程)出问题,解决办法就是增加所缺的jar包。
步骤如下:
- 1、在Eclipse中,右击当前工程,选择Properties
- 2、选择Java Build Path
- 3、选择Libraries tab,点击右边面板的Add External JARs按钮
- 4、选择android-support-v4.jar文件,在你的andriod的sdk目录下: \android-sdks\extras\android\support\v4\android-support-v4.jar
快速解决方法:
- 1、更改
- 2、工程右键--> properties--> android--> remove掉下面引用的v7库
- 3、删掉style中报错的引用的style(或者可以直接删掉此文件),删掉menu中报错的引用的属性(或者可以直接删掉此文件),删掉掉清单文件中报错的引用的主题theme,代码中将继承自ActionBarActivity改为继承Activity,重新导包。
2016-03-21
eclipse library jar包 使用总结 MD的更多相关文章
- Eclipse打JAR包的使用
编译Java代码你当然可以直接使用Javac,但对于大多同学还是使用Eclipse编辑器来得快捷.这篇文章来说说我使用Eclipse编译后的执行之路,走路许多弯路,看我一一道来. 演示系统的架构 首先 ...
- Eclipse导出jar包Unity打包错误
前几天接SDK使用的是Android Studio昨天打开AndroidStudio后自动更新了gradler然后失败了然后AndroidStudio就挂了.就是用之前的方法Eclipse到处jar包 ...
- Eclipse生成Jar包方法
Eclipse生成jar包 第一:普通类导出jar包,我说的普通类就是指此类包含main方法,并且没有用到别的jar包. 1.在eclipse中选择你要导出的类或者package,右击,选择Exp ...
- eclipse打Jar包问题
1.首先,如果你的Java项目中没有任何第三方包,是十分容易的,只需要通过eclipse的Export就可以按操作一步步运行,如下: 选择你要导出的Java项目,右键选择Export,如下图,选择JA ...
- Eclipse的Jar包解压出System.js里String与Boolean定义分号可有可无吗?
Eclipse的Jar包解压出System.js里String与Boolean定义分号可有可无吗? org.eclipse.wst.jsdt.core_1.3.300.v201410221502\li ...
- Eclipse 生成jar包
Eclipse 生成jar包 打开 Jar 文件向导 Jar 文件向导可用于将项目导出为可运行的 jar 包. 打开向导的步骤为: 在 Package Explorer 中选择你要导出的项目内容.如果 ...
- eclipse中jar包打断点
eclipse中jar包打断点 1. 下载工具 链接:http://pan.baidu.com/s/1dEF5tqL 密码:md4m 2. 增加jadeclipse功能 把 net.sf.jadcli ...
- eclipse 库 library jar包 工程 总结
引用库错误 如果在libraries中发现有小红叉,表明引用库错误 解决办法:在左侧projects中add引用到的库 如:我们的支付库引用了以下三个库 那么需要在projects中add这三个库 ...
- java eclipse打jar包和执行jar中的main函数
jar包使用eclipse打包步骤 右键需要打包的项目->选择Export 到这里有两种打包的方式 1.如果项目中没有使用其他第三方包等,则直接选择下图中的第一种即可(JAR file) 2.如 ...
随机推荐
- VMware vsphere Hypervisor、VMware vsphere和VMware Workstation小记
VMware Workstation软件需要依赖于宿主操作系统之上. VMware vSphere是VMware公司推出一套服务器虚拟化解决方案,它是可以直接独立安装和运行在祼机上的系统. VMwar ...
- javaSrript_数据类型(2017-03-15)
一.综述 javaScript中的数据类型分为两类: 基本类型: undefined:未定义.当声明变量却没有赋值时会显示该值.可以为变量赋值为undefined null:空.无.表示不存在,当为对 ...
- PHP之PDO_MYSQL扩展安装步骤(转)
看到CakePHP文档要求安装pdo_mysql扩展,于是就尝试安装了一下. 这里我的系统是CentOS 6.0.如果你的系统是其他版本的Linux/Unix,可以参考.如果你的系统是Windows的 ...
- 安装node.js / npm / express / KMC
http://www.cnblogs.com/seanlv/archive/2011/11/22/2258716.html 1. 下载Node.js官方Windows版程序: http://nodej ...
- E3-1260L (8M Cache, 2.40 GHz) E3-1265L v2 (8M Cache, 2.50 GHz)
http://ark.intel.com/compare/52275,65728 Product Name Intel® Xeon® Processor E3-1260L (8M Ca ...
- centos安装tomcat7
转自:http://www.cnblogs.com/sixiweb/archive/2012/11/26/2789458.html 安装tomcat7: tomcat7下载主页: http://tom ...
- Revit API射线法读取空间中相交的元素
Revit API提供根据射线来寻找经过的元素.方法是固定模式,没什么好说.关键代码:doc.FindReferencesWithContextByDirection(ptStart, (ptEnd ...
- JavaScript进阶系列01,函数的声明,函数参数,函数闭包
本篇主要体验JavaScript函数的声明.函数参数以及函数闭包. □ 函数的声明 ※ 声明全局函数 通常这样声明函数: function doSth() { alert("可以在任何时候调 ...
- maven生命周期理解
你可以仅仅调用clean来清理工作目录,仅仅调用site来生成站点.当然你也可以直接运行 mvn clean install site 运行所有这三套生命周期. 知道了每套生命周期的大概用途和相互关系 ...
- 【转】比较init-method,afterPropertiesSet和BeanPostProcessor
一.简单介绍 1.init-method方法,初始化bean的时候执行,可以针对某个具体的bean进行配置.init-method需要在applicationContext.xml配置文档中bean的 ...