最低版本。当我想创建一个Android应用程序,可以使用Android的最新支持的功能,我使用像库:确定支持库
appcompat_v7
support_v4
我一直无法确定是什么是appcompat_xxx或支持库实际可以支持的Android的最早版本。我在哪里可以找到这些信息?
最低版本。当我想创建一个Android应用程序,可以使用Android的最新支持的功能,我使用像库:确定支持库
appcompat_v7
support_v4
我一直无法确定是什么是appcompat_xxx或支持库实际可以支持的Android的最早版本。我在哪里可以找到这些信息?
这一切都在名称 - appcompat_v7
支持API 7及更高版本,support_v4
支持API 4及更高版本。
它也明显地在文档每个库表示,例如:
该库被设计成与Android 1.6(API级别4) 和更高的使用。
http://developer.android.com/tools/support-library/features.html#v4
而且,虽然这并不总是需要,你应该尝试你的targetSdkVersion
与图书馆的各个版本相匹配。例如,如果您的targetSdkVersion
为19,则应该使用com.android.support:appcompat-v7:19.+
要清楚:支持库由其名称规定,旨在支持最低API级别。含义 - 它们可以安全地用于运行该API级别的设备,以及任何后续API级别的设备。如果您尝试在甜甜圈设备(API级别4)上使用appcompat_v7,或者在Jellybean 4.1设备(API级别16)上使用leanback-v17
库,则您的应用可能会崩溃,类似于ClassNotFoundException
。
这些库最初应该提供API级别较旧的API级别的功能,以便您可以编写几乎相同的代码并在单个APK中使用最新的平台范例,以支持旧设备和新设备。
碎片就是一个很好的例子。 Fragment
类是在Honeycomb(API级别11)中引入的。 Google随后发布了support_v4
库,其中包含Fragment
类的后端移植版本,并且它是相应的API。同样,由其名称指定,该库可以安全地用于支持所有返回API 4的应用程序。如果您在API 3设备上使用v4库安装应用程序,它将会崩溃。如果您将其安装在API 8设备上,它将按预期工作。
也许你会因为依赖文件名指定min sdk版本而看起来很微妙的本质 - 现在这是一个猜测,但是当第一次引入v4库时,它只是一个.jar
文件。也就是说,无论您使用什么minSdkVersion
,都可以将它添加到应用程序的类路径中,并且可以在不抱怨的情况下进行编译。 MY我们猜测谷歌希望使用他们最低的SDK版本明确命名这些库,以避免开发人员试图在支持早期API版本的应用中使用它们。除了他们的文档,这些文档再次非常明确地回答您的问题,文件名可能是一种风险缓解方法,可以帮助那些不阅读文档的开发人员。
快进到2014年,这些库中的很多或者以.aar
文件的形式出现(通过Gradle),或者您需要将它们作为项目导入。这是因为这些库现在包含图像和主题等资源,无法打包到.jar
文件中。此处的一个额外好处是,这允许Google将AndroidManifest.xml
包含在指定minSdkVersion
的库中。在编译时,如果您的minSdkVersion
低于任何包含的库项目中指定的minSdkVersion
,则构建工具的清单合并将会投诉。
我看到API级别和文件名中指定的版本号之间没有明确的关联,特别是考虑到只有少数这些兼容性文件,而有几个版本的Android。 – AndroidDev 2014-12-02 18:37:27
咦?不太清楚如何才能错过“v4”和“API Version 4”之间的相关性......公式是“libraryname_minSdkLevel”,其中minSdkLevel表示给定的库可以被任何API级别使用,大于或等于指定的。 – 2014-12-02 18:41:55
这是一个相当自由的假设。当Google发布他们的操作系统的新版本以及更新的支持库时,基本假设是它支持以前的支持库所做的所有事情。事实上,如果你试图包含较新和较新的版本,构建工具只会选择较新的版本。这清楚地表明新版本支持旧版本。问题依然存在。新版本有多远?所以你错了。它不支持特定版本或更高版本。它支持它开发和使用的版本。 – AndroidDev 2014-12-03 14:40:56