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的区别的更多相关文章

  1. 【转】你是不是也被Android Private Libraries、Referenced Libraries、android Dependency搞晕了~~

    一.v4.v7.v13的作用和用法 1.Android Support V4, V7, V13是什么? 本质上就是三个java library. 2.为什么要有support库?   是为了解决软件的 ...

  2. 怎样加入� android private libraries 中的包的源码

    先上图: 这里以加入� afinal_0.5.1_bin.jar 为例. 第一步:加入�jar包到libs里面,系统自己主动把jar载入到android private libraries中: 第二步 ...

  3. Libs文件夹下的Jar文件为什么不会自己主动放在Android Private Libraries文件夹下

    简而言之:这个问题就是由jar包反复冲突了! 这个问题一開始我出现了一种"自以为是"的答案,在Android Private Libraries文件夹下的是会打包到project可 ...

  4. 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 ...

  5. 【转】Private Libraries、Referenced Libraries、Dependency Libraries的区别

    一.v4.v7.v13的作用和用法 1.Android Support V4, V7, V13是什么? 本质上就是三个java library. 2.为什么要有support库?   是为了解决软件的 ...

  6. [转]Private Libraries、Referenced Libraries、Dependency Libraries的区别

    一.v4.v7.v13的作用和用法 1.Android Support V4, V7, V13是什么? 本质上就是三个java library. 2.为什么要有support库?   是为了解决软件的 ...

  7. Unity 导出的android项目自动生成Private Libraries

    如果Unity里面Plugins/Android 添加了 jar 文件,则导出Android 项目时会自动生成 Private Libraries. 而且里面的项还删不掉 然后在网上搜了一下,找到了原 ...

  8. public/private/protected访问控制权限的区别

    //public/private/protected访问控制权限的区别//时间:2016/8/16 //(一)修饰成员: //public: 在类内.类外都能使用 . //protected: 在类内 ...

  9. Java中public,private,protected,和默认的区别

    Java中public,private,protected,和默认的区别 1.private修饰词,表示成员是私有的,只有自身可以访问: 2.protected,表示受保护权限,体现在继承,即子类可以 ...

随机推荐

  1. 【BZOJ2006】【NOI2010】超级钢琴

    题意: Description 小Z是一个小有名气的钢琴家,最近C博士送给了小Z一架超级钢琴,小Z希望能够用这架钢琴创作出世界上最美妙的音乐. 这架超级钢琴可以弹奏出n个音符,编号为1至n.第i个音符 ...

  2. vue:element-ui时间选择器限制只能点不能输入

    原文链接:点我 <el-form-item label="门店成立日期" prop="storeSetupDate"> <template&g ...

  3. HDU-3746 Cyclic Nacklace 字符串匹配 KMP算法 求最小循环节

    题目链接:https://cn.vjudge.net/problem/HDU-3746 题意 给一串珠子,我们可以在珠子的最右端或最左端加一些珠子 问做一条包含循环珠子的项链,最少还需要多少珠子 思路 ...

  4. HashMap和Hashtable的区别。

    HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable ...

  5. 紫书 例题 11-14 UVa 1279 (动点最小生成树)(详细解释)

    这道题写了好久-- 在三维空间里面有动的点, 然后求有几次最小生成树. 其实很容易发现, 在最小生成树切换的时候,在这个时候一定有两条边相等, 而且等一下更大的那条边在最小生成树中,等一下更小的边不在 ...

  6. Multi-Byte Character Set & Unicode Character Set

    本系列文章由 @YhL_Leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/49592361 编程时遇到BUG:err ...

  7. RvmTranslator7.1

    RvmTranslator7.1 eryar@163.com RvmTranslator can translate the RVM file exported by AVEVA Plant(PDMS ...

  8. angularjs 表单校验

    <!DOCTYPE HTML> <html ng-app="myApp"> <head> <meta http-equiv="C ...

  9. BZOJ 3083 树链剖分+倍增+线段树

    思路: 先随便选个点 链剖+线段树 1操作 就直接改root变量的值 2操作 线段树上改 3操作 分成三种情况 1.new root = xx 整个子树的min就是ans 2. lca(new roo ...

  10. POJ 3145 线段树 分块?+暴力

    思路: 线段树 (分类讨论) 此题数据很水 数据很水 数据很水 但是卡个暴力还是没问题的-- //By SiriusRen #include <cstdio> #include <c ...