Android中的依赖问题(五种依赖、eclipse、AS、添加第三方库、jar)
- 依赖是什么
- eclipse中的依赖
- AS中的依赖(有一篇详细的文章讲得非常好,这里就不再写了http://blog.csdn.net/yy1300326388/article/details/46422939)
- 安卓的support包的历史
- AS中grandle具体的内容
- 怎么做一个给别人用的Jar包和lib库
.png)

- Android6.0
- 这是在你新建项目的时候默认直接支持的包,里边就只有一个叫android的jar包
- 它根据版本号的不同,只支持对当前版本号的安卓系统的APP的开发,如果我们不需要兼容性,那我们开发软件可以不用v4,用这个包里的内容也可以,但是为了兼容性,就会用到v4已经其他的
- 这个包里的东西我点开看,有这些:Android包、Java包、Javax包、Dalvik虚拟机包、org包
- 它修改最直接的方式是在图1中使用1和2指定,还有默认的设置方式是你一开始设置的目标taget版本
- 一般说来它不太会出问题,而且一般都设置到最新
- Android Private Libraries / Libs
- Android Private Libraries本身的意思是Android项目私有的库,而它其实就是libs目录里面的jar包的映射
- 添加jar包到libs里面,系统自动把jar加载到android private libraries中,你把libs中的jar包移除 Private Libraries中也就没有了
- 而私有是什么意思我也不太懂,如果是相对下面的Android Dependency,那确实是有点公私区别的意思
- 这是最常见最普通的我们引入外部库的方式,操作也最方便,下面会详细说
- Android Dependency
- 这也是一种引入外部库的归宿(外部库存放的位置)
- 相比上面那个,这个家伙有三个特点
- Android Private Libraries引用的是包只能给自己使用,dependencies是引用的公用的库,它可以同时被其他的项目引用
- 使用dependencies 的操作更复杂,下面会说
- Android Private Libraries引用的是jar包,dependencies是引用的libraries
- Referenced Libraries
- 这好像也是一种引用jar包的方式,我虽然操作过,但我只是按照有的教程的说法做的,而且最后这种方式好像都没有用,于是我尝试之后又删掉了,这种的跟前面的有什么区别我也不知道,不过好像这是旧的使用jar包的方式,是使用libs包之前的方式
- 详细的情况下面会说
- 引入Jar包
- 这是最简单的一种方式,当一个库被打包成了jar包之后,你可以非常方便的使用:直接把这个jar包用鼠标拖入项目的libs文件夹中,点击copy to,于是项目会进入libs文件夹,而且同时,系统自动把jar加载到android private libraries中,然后你就可以在代码中Import相关库了
- Private Libraries 就是libs里面的jar包的映射!你把libs中的jar包移除 Private Libraries中也就没有了(移除步骤就是这样,非常简单)
- 大部分成熟的第三方库都是这个形式,比如我用过的ksoap,mpandroid,以及安卓官方提供的support v4
- 引入带资源的Library
- 有些特殊的情况下,这个包是带资源的,居然说类似这个形式的包就可以使用这种方式引入(如下图,libs中其实有个Jar包,然后res就是资源),比如support design,我们会使用另一种稍显复杂的方式来引入
- 引入步骤:
- 在eclipse中new一个安卓项目,方式使用
,找到要引入的包,这里的例子就是design包,copy to,这个步骤不会有问题 - 引入之后我们弹出这个项目的图1,选择3,把它本身作为Library,选了这个之后,这个项目就可以被其他项目引用,并且这个项目本身不能被运行
- 然后在我们要引用这个项目的实际工程项目中弹出图1,点击5,就能看到刚刚设置为library的项目,选择之后就会在4中看到我们已经引用了这个项目
- 然后在Android Dependency 中就会看到一个以这个项目名称命名的一个jar包,它是带资源的
- 在eclipse中new一个安卓项目,方式使用
- 移除步骤:直接在图1中使用remove就OK了
- 需要这么使用的包不太多,我目前用过的必须要以这种方式引入的有support v7,support design
- 包图:
.png)
- 引用Jar包【等价于上面第一种】
- 进入图2,点击3,选择目标jar包
- 进入图3,勾选2,点击3
- 引用library
- 进入图2,点击2
- 选择“User library”,点击“下一步”
- 点击“User librarys”按钮在出现的界面中点击“New..”按钮,在弹出的界面中随便起一个名字,点击“确定”
- 点击“Add jars”按钮选择第三方jar包,
- 点击“确定”完成操作
- build path
- 你把jar包拖入Libs之后,当你右键的时候如图4,在build path中能看到add to build path,当你点击之后,你的项目下会自动新建Referenced Libraries 文件夹,这个Libs包会出现在下面,但这个时候你还没有真正引用到它,你需要进入图3,在1的2中打钩,甚至有的人说你需要使用3把这个包放Up到最上面
- 移除方式:右键这个包,delete是灰的,但在图4中的build path中能看到remove,点击它就OK了;或是进入图2,选择包,并remove
- 上面5个工程文件夹中,右键的build path中能看到add to build path只有Libs
- 一般你感觉正确操作完就出现问题,第一件要做的事就是clean和refresh项目,如果问题还在,简单检查后也不知道问题出在哪儿,那就重启eclipse
- libs中的Jar包无法删除
- 直接关闭eclipse(关闭项目没有用)
- 手动到Lib文件夹下,删除
- 打开eclipse,右键refresh项目
- jar包好像无所谓,但是引入带资源文件的Library时,如果这个Library本身也依赖其他的jar包或者library,这时候可能会发生错误,有两个解决方式可以试试
- 把被多次引用的jar包替换成同一个版本的(复制替换)
- 保留最底层的引用,上层同样的包要引用的话干脆删掉
- (还有说法是:如果所开发的类与Android原生的类冲突,可以通过project->properties->java build path-> order and export (up / down)切换jar 编译时使用的优先级)
.png)
- 图1
- 弹出方式:右键项目名称,选择
,然后弹出 - 它跟图2、图3其实是一个对话框,可以使用同样方式弹出
.png)
- 图2
- 弹出方式:如图4,选择下面的configure bulid path
- 也可以如图1一样的方式
- 3和4其实差不多,只是可选择的范围不同而已。add jars 可选范围是你的Project目录,add external jars可选范围是任何目录。
- Add variables :通过类似于环境变量的方式指定一个引用jar的路径
- Add libraries :将一些已经存在的库文件添加到引用路径
- Add (External) class folder :添加项目中类所在的文件夹
.png)
- 图3
- 如图1图2方式
.png)
- 图4
Android中的依赖问题(五种依赖、eclipse、AS、添加第三方库、jar)的更多相关文章
- 在ros功能包CMakeLists.txt中获取所在功能包的路径 便于添加第三方库的相对路径
在 ros 功能包中要使用第三方的动态库,将其放在系统默认库路径和使用绝对路径均不可取,这样的话可移植性较差,将该功能包移到其它电脑时要重新配置依赖库的路径,太麻烦了. 于是找到下面这个方法,解决了R ...
- android中解析文件的三种方式
android中解析文件的三种方式 好久没有动手写点东西了,最近在研究android的相关技术,现在就android中解析文件的三种方式做以下总结.其主要有:SAX(Simple API fo ...
- js中声明Number的五种方式
转载自:http://www.jb51.net/article/34191.htm <!DOCTYPE html> <html> <head> <meta c ...
- AndroidStudio权威教程 AS添加第三方库的6种方式(Jar module so等)
点击项目设置按钮 依次选择 App > Dependencies 1. 直接搜索法 依次选择 + > Library dependency 这里的搜索一定要是全名的,不然搜不到哦 下图所表 ...
- VS中添加第三方库及相对路径设置
原文 VS中添加第三方库及相对路径设置 对于一些第三方的SDK,一般会包含头文件(*.h),静态库文件(*.lib)和动态库文件(*.dll). 1. 文件位置:为了提高程序的可移植性,将第三库放在 ...
- iOS——Xcode中添加第三方库
一.只有.h和.a文件的库 1.向项目中添加三方库文件 如果添加的第三方库只有.h和.a文件,直接把文件夹拖进项目下面,这时会弹出下面的提示框,一定要勾选下面选择的选项: 这里要注意,在Add to ...
- 代码补全——Vim/Neovim中YouCompleteMe添加第三方库的支持
参考链接: https://github.com/ycm-core/YouCompleteMe#c-family-semantic-completion https://cloud.tencent.c ...
- Android之数据存储的五种方法
1.Android数据存储的五种方法 (1)SharedPreferences数据存储 详情介绍:http://www.cnblogs.com/zhangmiao14/p/6201900.html 优 ...
- 面试中常问的五种IO模型和BIO,NIO,AIO
一,五种IO模型: 一个IO操作可以分为两个步骤:发起IO请求和实际的IO操作例如:1.操作系统的一次写操作分为两步:第一步,将数据从用户空间拷贝到系统空间:第二步,从系统空间往网卡写.2.一次读操作 ...
随机推荐
- Android UI系列-----时间、日期、Toasts和进度条Dialog
您可以通过点击 右下角 的按钮 来对文章内容作出评价, 也可以通过左下方的 关注按钮 来关注我的博客的最新动态. 如果文章内容对您有帮助, 不要忘记点击右下角的 推荐按钮 来支持一下哦 如果您对文章内 ...
- jackson 注脚学习参考
(1)初级我们从几个简单的使用场景开始:重命名属性,忽略属性,以及修改属性所使用的类型.注意:下面的例子仅仅显示了成员属性(field properties),注解同样也可以用在成员方法(getter ...
- libevent
libevent doc example #include <event2/event.h> void cb_func(evutil_socket_t fd, short what, vo ...
- 一个类有两个方法,其中一个是同步的,另一个是非同步的; 现在又两个线程A和B,请问:当线程A访问此类的同步方法时,线程B是否能访问此类的非同步方法?
一个类有两个方法,其中一个是同步的,另一个是非同步的:现在又两个线程A和B,请问:当线程A访问此类的同步方法时,线程B是否能访问此类的非同步方法? 答案:可以 验证 package com.my.te ...
- Visual Studio 2010配置OpenGL-1.8
参考博客 : 安装参考 1. http://blog.csdn.net/mooncircle/article/details/5545448 2. http://www.cnblogs.com/moo ...
- sql:pivot unpivot
pivot 行转列 unpivot 列转行 源码跑步起来 这是能跑起来的 源码转自 http://www.cnblogs.com/zhangzt/archive/2010/07/29/178782 ...
- [z] 人工智能和图形学、图像处理方面的各种会议的评级
转载自:『http://www.cvchina.info/2010/08/31/conference-ranking-byar/』 澳大利亚政府和澳大利亚研究理事会做的,有一定考价值. 会议名称 会议 ...
- mac 进程管理
1.前言 启用goagent.firefly等服务的时候,如果非正常退出,再次启动经常会遇到address already in use,端口被先前启动的服务进程所占用,导致服务无法使用.这种情况,可 ...
- CentOS 编译安装 mysql
1.前期准备 1.1 环境说明: 操作系统: CentOS release 6.4 (Final) [查看命令 cat /etc/redhat-release ] mysql : mysql-5.6. ...
- angularjs + seajs构建Web Form前端(三) -- 兼容easyui
回顾 在上一章中使用了angular实现了ajax form和树形结构,经过以上两章对于angular的大致使用,对于angular也有了初步的认识,接下来的内容只会对angular的一些用法做简单的 ...