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. 小程序canvas生成二维码图片踩的坑

    1:生成临时图片,保证画布被加载以及渲染(即本身不可以 hidden 或是 上级元素不可以 hidden 或是 wx:if 隐藏等) == > 建议:因为 canvas 的组件层级(z-inde ...

  2. Ubuntu上面安装docker

    1.先用uname -r查看系统的信息 2.安装docker的命令为 sudo apt install docker.io 3.然后就能实现安装了 但是:运行docker search golang, ...

  3. CSS常用样式--font

    CSS font 属性 参考:W3school- CSS font 所有浏览器都支持 font 属性,可在一个声明中设置所有字体属性,各属性需按顺序,语法如下: selector{ font:styl ...

  4. weak和alias

    一.强符号和弱符号 在C语言中,如果多个模块定义同名全局符号时,链接器认为函数和已初始化的全局变量(包括显示初始化为0)是强符号,未初始化的全局变量是弱符号. 根据这个定义,Linux链接器使用下面的 ...

  5. Linux下库文件的设置 (/usr/bin/ld: cannot find -lxxx 的解决办法)

    在软件编译过程中,经常会碰到类似这样的编译错误: /usr/bin/ld: cannot find -lhdf5 这表示找不到库文件 libhdf5.so,若是其它库文件,则是 cannot find ...

  6. 洛谷 P3102 [USACO14FEB]秘密代码Secret Code

    P3102 [USACO14FEB]秘密代码Secret Code 题目描述 Farmer John has secret message that he wants to hide from his ...

  7. 转:强制Visual Studio以管理员身份运行

    Windows 8的一个既安全又蛋疼之处是UAC的行为被改变了.以往在Windows 7中,只要关闭了UAC,自己的帐号又是本机管理员组的,任何程序都会以管理员身份启动.然而,在Windows 8上, ...

  8. MFC,C++,VC++,VS2010 之间究竟是什么关系

    C++是在C语言的基础上发展而来的面向对象的一种语言: MFC是基于C++类的窗口开发工具,内含大量的基类.降低编程人员的工作量: VC++是一种开发工具. VS2010是更高版本号的开发工具,功能强 ...

  9. Django是什么

    Django是什么 Django是什么? 是基于python语言的优秀的web开发框架.很多有名的网站比如youtube就是用django开发的. Python写的开源Web应用框架, 快速搭建blo ...

  10. nyoj--116--士兵杀敌(二)(树状数组)

    士兵杀敌(二) 时间限制:1000 ms  |  内存限制:65535 KB 难度:5 描述 南将军手下有N个士兵,分别编号1到N,这些士兵的杀敌数都是已知的. 小工是南将军手下的军师,南将军经常想知 ...