安卓私有库,依赖和libs文件夹有什么区别?

9

我是Android编程新手。我使用Eclipse作为开发IDE。我已经开始了一个新项目,并且一些jar文件自动添加到了项目中。您能够解释每个这些jar文件的含义吗?

  • Android 4.4.2
    • android.jar:包含了Android应用所需的所有核心类,例如Activity、View和Service等。
  • Android Private Libraries
    • android-support-v7-appcompat.jar:提供了向下兼容性,以确保应用程序在较旧版本的Android上正确运行。
    • android-support-v4.jar:包括一些早期API级别中不可用的实用工具库,例如Fragment、ViewPager、NotificationCompat和Loader等。
  • Android Dependencies
    • appcompat_v7_2.jar:支持v7版本的应用程序外观和感觉。
  • libs
    • android-support-v4.jar:同"Android Private Libraries"部分的android-support-v4.jar,也是因为某些库需要后者才能正常使用而进行重复添加。

除此之外,在项目资源管理器中还会生成一个名为“appcompat_v7_2”的文件夹,其中包含Android Private Libraries和libs文件夹。

我感觉这里存在某种冗余,请帮我澄清疑惑。


1
https://dev59.com/Z2Eh5IYBdhLWcg3wk0Oz - Sree
我理解支持库对于向后兼容非常有帮助。但是我不理解为什么要创建这么多的jar文件以及每个jar文件的作用。 - nnori
http://devmaze.wordpress.com/2011/05/22/android-application-android-libraries-and-jar-libraries/ - Sree
2个回答

6
  • Android 4.4.2
    • android.jar

这是 Android 4.4 的本机 API 库(如果您进入 Android 包管理器,可以看到许多文件,范围从 Android 2.* 到 Android 4.*)。

因此,在 Eclipse 中创建新项目时,它会自动使用在 Android API 级别属性中指定的库。

  • Android 私有库
    • android-support-v7-appcompat.jar
    • android_support-v4

这些是支持库,用于在较低版本的 Android 上运行应用程序。 例如,如果您将 Android API 19 作为目标库进行编译,则需要 android_support-v4 库才能在较低的 Android API 设备上运行应用程序。

v7 和 v4 之间的区别在于,v7 支持 Android v3.0 及以上版本,而 v4 支持 Android v2.0 及以上版本。

我感觉这里存在某种冗余。

Android 私有库和 Android 依赖项不是实际的文件夹。它们是由 Eclipse 创建以方便用户使用的。

创建项目时,v4 和 v7 的支持库会在 appcompat_v7_x/libs 文件夹中被创建。

Android 私有库只是对支持库的引用。而 Android 依赖项告诉我们项目引用或使用哪个 appcompat_v7_x。

如果您查看 Eclipse 中图标,libs 图标和 Android 私有库图标是不同的。这是因为 Android 私有库不是实际的文件夹,您在磁盘上找不到它。

因此,在某种意义上不存在冗余,也就是说没有文件被复制或重复。

享受您的 Android 开发吧! :) 尝试 Android Studio 吧,它比 Eclipse 好多了!!


2
那是一个有帮助的答案。但是,它并没有解决我对生成如此多jar文件的困惑。三个jar文件不就足够了吗?一个用于本地Android API,另外两个用于支持库? - nnori
1
是的!你说得对!你可以通过检查项目目录来证明你的答案!你将无法找到Android私有库,只能看到libs文件夹! - Tim
@Tim,那么它是被引用了两次还是没有?会消耗两倍的内存吗?或者只是看起来是这样?冲突方面呢? - Pacerier
@Pacerier 是的,它被引用了两次,你可以在 /bin/dexedLibs 文件夹中检查,你会看到两个相同的 .jar 文件,所以关于内存空间,只需要回答,对于冲突,没有关系,因为编译器会随机分配使用哪个 .jar 文件(你可以谷歌一下在项目中有两个相同的 .jar 文件或者自己测试一下!) - Tim
@Tim,顺便提一下,https://developer.android.com/sdk/installing/studio.html页面上指出,“Android Studio目前处于测试版。某些功能尚未实现,您可能会遇到错误。”为什么你要使用像Android Studio这样有缺陷的问题呢? - Pacerier
显示剩余4条评论

0

这些只是包含应用程序内容的库。 当你执行 "import android.blah.blah.blah" 时,你会将该功能添加到你的代码中。列出所有的库内容将是太多的工作。


此回答未尝试解决问题中提出的具体问题,是一种微不足道和懒惰的发帖。 - NickT

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接