android-support-v7-appcompat 和 android-support-v4 之间的区别
Posted
技术标签:
【中文标题】android-support-v7-appcompat 和 android-support-v4 之间的区别【英文标题】:Difference between android-support-v7-appcompat and android-support-v4 【发布时间】:2013-08-18 17:58:16 【问题描述】:我想知道 android-support-v4.jar 之间的区别 和 android-support-v7-appcompat.jar。如果我想在我的应用程序中添加 appcompat 操作栏,我需要同时添加 android-support-v7-appcompat.jar 和 android-support-v4.jar 还是只添加android-support-v7-appcompat.jar.
另外,android-support-v13.jar 有 appcompat 吗?
【问题讨论】:
【参考方案1】:更新
自从回答了这个问题以来,支持库已经进行了许多更改。好消息是,它也有很好的记录。因此,您必须阅读 Support Library Documentation 以了解更多详细信息和更多可用的支持库。
从支持库版本 26.0.0(2017 年 7 月)开始,最低 大多数支持库支持的 API 级别已增加到 适用于大多数库包的 Android 4.0(API 级别 14)。
以下是与Support Library Packages的区别:
v4 支持库
此库旨在与
Android 1.6(API 级别 4)Android 2.3(API 级别 9)Android 4.0(API 级别 14)及更高版本一起使用。与其他 API 相比,它包含最大的 API 集 库,包括对应用程序组件的支持,用户 界面特性、可访问性、数据处理、网络 连接性和编程实用程序。v7 库
有几个库设计用于
Android 2.1(API 级别 7)Android 2.3(API 级别 9)Android 4.0(API 级别 14)及更高版本。这些库提供特定的功能集和 可以彼此独立地包含在您的应用程序中。v7 appcompat 库
这个库增加了对 Action Bar 用户界面设计模式的支持。
注意: 此库依赖于 v4 支持库。如果您使用的是 Ant 或 Eclipse,请确保将 v4 支持库作为一部分包含在内 这个库的类路径。
所以是的,如果你想使用 v7,你需要两个 jars。
android-support-v13.jar 更新
v13 Support Library
此接口在 API 级别 27.1.0 中已弃用。使用 Fragment 代替框架 Fragment。
v13 支持库
此库旨在用于 Android 3.2(API 级别 13)及更高版本。它增加了对 Fragment 用户界面模式的支持 使用 (FragmentCompat) 类和额外的片段支持 类
当您看到package details 时,它有一个类FragmentCompat,如定义中所给出。所以它没有 appcompat 库的所有类。
【讨论】:
如果您是从 min api 19 开发应用程序。您需要这些吗? v4 Support Libraries - 这些库旨在用于 Android 2.3(API 级别 9) 及更高版本。 和 v7 Support Libraries - 有几个库设计用于 Android 2.3(API 级别 9) 及更高版本。 @user5366495 可能是的。大多数好东西都适用于API21 and above
,如果您想在较低级别使用它,您应该使用支持库。所以API19
可能仍然需要它。【参考方案2】:
什么是支持库?
支持库是代码库(类的集合),它使新添加的功能适用于旧设备。 例如,在 API 21 (Android 5.0 - Lolipop) 中引入了 Material Design,但是v7-support 库使其可用于 API 7 (Android 2.1.x -Eclair) 及更高版本。
有哪些不同的支持库?
一些主要的支持库是
V4 支持库
V7 支持库
V8 支持库
v13 支持库
7 在 v7 支持库中代表什么?
这意味着该库具有设计用于 API 级别 7 及更高级别的功能。 V4 也是如此(包含适用于 API 4 及更高版本的功能)等等。
v7 Support 库和 v7 appcompat 库的区别?
包括我在内的很少有人对这两个术语感到困惑。实际上,v7 appcompat 库是 v7 Support 库的一部分。 v7 支持库主要用于支持 API 7 及更高版本的 Material Design 和 ActionBar 设计模式。 V7可以分为更多的子类别
v7 appcompat 库
v7 cardView 库
v7 recyclerView 库
v7 托盘库等
v7 appcompat 库具有以下关键类 ActionBar、ActionBarActivity、ShareActionProvider。
所以添加,
com.android.support:appcompat-v7:21.0.+
gradle 文件中的依赖项,导入上述类。
奖金
其他支持库
Multidex 支持库(用于创建具有超过 65k 方法的应用程序) v17 Leanback 支持库(为 Android TV 提供重要小部件的支持库)
相关链接
Support Library Features Support Library Packages Support Library Features Guide What is Multidex and what is the use of Multidex Support Library?【讨论】:
这应该是公认的答案,用简单的话清楚地解释了一切。【参考方案3】:仅当您的最低 sdk 版本低于 API 级别 11 时才需要支持库。否则您不需要为 Api 级别 11 或更高版本的项目添加支持库。
android-support-v4.jar: 支持android.app
类以协助开发适用于 android API 级别 4 或更高版本的应用程序。这样您就可以使您的应用程序的 backword 兼容,
android-support-v7.jar 最近在最新的支持库更新中添加。 ActionBar 允许将操作栏用户界面设计模式实现回 Android 2.1(API 级别 7)及更高版本。使用此类需要您通过扩展新的 ActionBarActivity
类来实现您的活动。
如果我想在我的应用程序中添加 appcompat 操作栏,我需要 添加 android-support-v7-appcompat.jar 和 android-support-v4.jar 或者只有 android-support-v7-appcompat.jar。
是的,如果你想使用它,你需要添加两个库的引用。
android-support-v13.jar 有 appcompat 吗?
不,它包括 FragmentCompat,因此如果在版本 13 之后添加了某些 Fragment 功能,则可以使其反向兼容 Api 级别 11。以便应用程序目标 API 11 或更高版本可以使用新版本中添加的功能。
【讨论】:
DrawerLayout
/ NavigationDrawer
目前仅存在于支持库中。
您可以在 Android 应用程序中使用其他组件,这些组件基于默认情况下不包含在超过 11 个 API 中的支持库之一,例如 com.android.support:multidex: 1.0.0 和 com.android.support:design:23.1.0。查看完整信息:developer.android.com/tools/support-library/features.html
正如谷歌在developer.android.com/topic/libraries/support-library/… 中所说的那样,v4 支持和 v7 支持之间没有区别。两者都适用于 api 9 及更高版本。这是真的吗?!
健二,是的,这是真的。 Google shift min 支持从 4 到 9 和从 7 到 9,现在两个库相互重复。
如果您是从 min api 19 开发应用程序。您需要这些吗?【参考方案4】:
此答案与版本 >= 26.0.0 的支持库的客户相关:
注意:从支持库版本 26.0.0(2017 年 7 月)开始,大多数支持库支持的最低 API 级别已提高到 Android 4.0(API 级别 14) 对于大多数库包。
例如,support-v4 和 support-v7 软件包都支持最低 API 级别 14,用于支持库的版本从 26.0.0 及更高版本。
有关详细信息,请参阅Support Library - Version Support and Package Names。
【讨论】:
以上是关于android-support-v7-appcompat 和 android-support-v4 之间的区别的主要内容,如果未能解决你的问题,请参考以下文章
android-support-v4 错误生成与 R.java 被擦除
如何使用android-support-V7包中ActionBar
android-support-v7-appcompat.jar放在哪