Android Private Libraries 和 Dependencies的区别
Android项目开发中,是不是常看到android-support-v4.jar、appcompat_v7.jar等的jar包? 至于为什么要添加这些包?添加有什么用?添加到哪里?相信很多人没过多关注,或者只知其然,而不知其所以然。下面我们就来学习一下~~
一、v4/ v7/ v13的作用与区别
1. v4/ v7/ v13是什么?
本质上就是android提供的三个java library.
2. android为什么要提供这些库?
google提供了Android Support Library package 系列的包来保证来高版本sdk开发的向下兼容性。
如果在低版本Android平台上开发一个应用程序,而应用程序又想使用高版本才拥有的功能,就需要使用Support库。比如,在2.2平台开发了一个app,
安装到4.0平台上,想运用4.0上的新功能,那么app里面就需要添加V4库支持;反过来,如果在4.0平台开发了一个app,想安装到2.2平台,可能会失败,因为4.0的应用可能使用了一些新功能,调用了新API,但2.2平台没能,所以想成功要做向下兼容。
android api向来是高版本兼容低版本.如api-8(android2.2)必会兼容api-4(android
1.6).但是反之则不会,你使用2.2的平台版本build了一个apk,若想能在1.6上运行,则需要做向下兼容. android
support-xx是google官方的向下兼容包.如名所示,会帮助构建程序向下兼容到1.6版本.不过也并非万能的,还是会受限制.
Android
为了兼容2.X以下的版本,所以出了android.support.v4的包,该包的主要作用是便于开发者在2.X的开发环境中,使用4.0的控件。
3. v4/ v7/ v13的作用与区别
android-support-v4
是谷歌推出的兼容包,最低兼容Android1.6的系统,里面有类似ViewPager等控件。ViewPager在Android 1.6以下的版本是不自带的,所以要实现ViewPager需要使用v4包中的ViewPager。其余控件同理。
android-support-v7
是谷歌推出的版本兼容包,最低兼容Android2.1的系统,这个包通常和appcompat-v7这个工程一起使用。appcompat-v7这个工程可以让开发者统一开发,在任何系统版本下保证兼容性。涉及的内容有Theme,value,布局,新的控件,新的动画实现方式,包含了support-v4的全部内容,开发Android工程时,要兼容低版本都要导入v7工程。android
studio在创建工程的时候默认导入了v7工程,并且将style使用了兼容style,给开发者提供了极大的方便。并且最新的v7包增加了很多material
design的兼容类和素材,请及时更新。
android-support-v13
是谷歌推出的版本兼容包,最低兼容Android3.2的系统。当初是为了开发平板做设计的。
二、Android Private Libraries、android Dependency、libs三者关系
1. 三者的内容作用
Android Private Libraries: 表示放在libs里面的jar包引用和依赖项目Dependencies中的包,视为私有引用
Android Dependencies: 会显示引用项目,依赖项目
libs: 表示引用的外部jar包。
2. libs和Android Private Libraries的关系
Eclipse创建Android项目,其中有一个libs目录,在里面放从外部引用的第三方Lib库文件,比如项目开发中需要加载图片,这个如果自己实现,耗时费力还不一定好,直接引用别人的库实现,如Universal-Image-Loader库就非常完美。
添加方式:直接复制粘贴到Libs目录下即可。
在libs中添加的库, 都会自动映射到Android Private Libraries目录下,如下图所示,在libs中引用添加了四个外部库文件,而eclipse会自动映射到private libraries目录。
3. Android Dependency 和 Android
Private Libraries的关系
Android Dependency
目录在eclipse上也是自动生成的,这个目录主要是放依赖项目的。比如,之前开发了一个项目A,现在新的项目B要使用项目A的功能,那么把项目A作为类库关联进来,这样B就能直接使用A的功能,而不用从新开发。
添加方式:项目B右键 - 》Properties
-》Android -》Add... -》显示eclipse上所以的库类项目 -》选择需要的项目,确认就添加到Dependency 目录下(如下图)
如下图,项目MMCamera成功添加了两个依赖项目appcompat_v7 和google-play-services_lib
项目A添加了依赖项目B,那么项目B的Android Private Libraries目录下面的所有库都会映射到项目A的Android Private Libraries目录下面。也就是说,项目B中用到了那些库,那么项目A中必须也包含这些库。如下图所示,
三、总结
1. libs目录放项目从外部引用的第三方库;
2. Android Dependency目录放引用的依赖项目;
3. Android Private Libraries映射所有libs中的库,同时映射所有依赖项目中用到的库。如果有重复的,只映射一个。
版权声明:本文为博主原创文章,未经博主允许不得转载。
Android Private Libraries 和 Dependencies的区别的更多相关文章
- 【转】你是不是也被Android Private Libraries、Referenced Libraries、android Dependency搞晕了~~
一.v4.v7.v13的作用和用法 1.Android Support V4, V7, V13是什么? 本质上就是三个java library. 2.为什么要有support库? 是为了解决软件的 ...
- 怎样加入� android private libraries 中的包的源码
先上图: 这里以加入� afinal_0.5.1_bin.jar 为例. 第一步:加入�jar包到libs里面,系统自己主动把jar载入到android private libraries中: 第二步 ...
- Libs文件夹下的Jar文件为什么不会自己主动放在Android Private Libraries文件夹下
简而言之:这个问题就是由jar包反复冲突了! 这个问题一開始我出现了一种"自以为是"的答案,在Android Private Libraries文件夹下的是会打包到project可 ...
- MyEclipse中android 项目如何解决第三方jar无法关联源码的问题( The JAR of this class file belongs to container 'Android Private Libraries' which does not allow modifications to source attachments on its entries.)
若我们要为第三方jar(android-support-v4.jar)关联源码通常的做法是 右键项目 单击菜单Properties 单击菜单 Java Build Path 单击 Libraries ...
- 【转】Private Libraries、Referenced Libraries、Dependency Libraries的区别
一.v4.v7.v13的作用和用法 1.Android Support V4, V7, V13是什么? 本质上就是三个java library. 2.为什么要有support库? 是为了解决软件的 ...
- [转]Private Libraries、Referenced Libraries、Dependency Libraries的区别
一.v4.v7.v13的作用和用法 1.Android Support V4, V7, V13是什么? 本质上就是三个java library. 2.为什么要有support库? 是为了解决软件的 ...
- Unity 导出的android项目自动生成Private Libraries
如果Unity里面Plugins/Android 添加了 jar 文件,则导出Android 项目时会自动生成 Private Libraries. 而且里面的项还删不掉 然后在网上搜了一下,找到了原 ...
- public/private/protected访问控制权限的区别
//public/private/protected访问控制权限的区别//时间:2016/8/16 //(一)修饰成员: //public: 在类内.类外都能使用 . //protected: 在类内 ...
- Java中public,private,protected,和默认的区别
Java中public,private,protected,和默认的区别 1.private修饰词,表示成员是私有的,只有自身可以访问: 2.protected,表示受保护权限,体现在继承,即子类可以 ...
随机推荐
- 【BZOJ2006】【NOI2010】超级钢琴
题意: Description 小Z是一个小有名气的钢琴家,最近C博士送给了小Z一架超级钢琴,小Z希望能够用这架钢琴创作出世界上最美妙的音乐. 这架超级钢琴可以弹奏出n个音符,编号为1至n.第i个音符 ...
- vue:element-ui时间选择器限制只能点不能输入
原文链接:点我 <el-form-item label="门店成立日期" prop="storeSetupDate"> <template&g ...
- HDU-3746 Cyclic Nacklace 字符串匹配 KMP算法 求最小循环节
题目链接:https://cn.vjudge.net/problem/HDU-3746 题意 给一串珠子,我们可以在珠子的最右端或最左端加一些珠子 问做一条包含循环珠子的项链,最少还需要多少珠子 思路 ...
- HashMap和Hashtable的区别。
HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable ...
- 紫书 例题 11-14 UVa 1279 (动点最小生成树)(详细解释)
这道题写了好久-- 在三维空间里面有动的点, 然后求有几次最小生成树. 其实很容易发现, 在最小生成树切换的时候,在这个时候一定有两条边相等, 而且等一下更大的那条边在最小生成树中,等一下更小的边不在 ...
- Multi-Byte Character Set & Unicode Character Set
本系列文章由 @YhL_Leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/49592361 编程时遇到BUG:err ...
- RvmTranslator7.1
RvmTranslator7.1 eryar@163.com RvmTranslator can translate the RVM file exported by AVEVA Plant(PDMS ...
- angularjs 表单校验
<!DOCTYPE HTML> <html ng-app="myApp"> <head> <meta http-equiv="C ...
- BZOJ 3083 树链剖分+倍增+线段树
思路: 先随便选个点 链剖+线段树 1操作 就直接改root变量的值 2操作 线段树上改 3操作 分成三种情况 1.new root = xx 整个子树的min就是ans 2. lca(new roo ...
- POJ 3145 线段树 分块?+暴力
思路: 线段树 (分类讨论) 此题数据很水 数据很水 数据很水 但是卡个暴力还是没问题的-- //By SiriusRen #include <cstdio> #include <c ...