0

当我将 minSDK 级别设置为 4 时,我正在阅读的内容以及发生的错误让我有点转身。您会认为,当生成平台的新版本时,它将与早期版本向后兼容; 因此,如果我在 SDK 17 中创建软件,则使用其功能将适用于使用早期版本(例如 4 或其他版本)的设备。但情况似乎并非如此。因为我买了一部运行 2.3.6 版的手机……我想确保我正在开发的软件可以在这个和其他旧设备上运行,以及新的操作系统。但似乎不能保证向后兼容性。那么,是否只是为更新的设备开发,或者有没有办法确保我在新环境中编写的内容可以在设备上运行而不必跳过一堆箍?我正在尝试使用支持库,但它似乎没有新版本的所有 api。可以以某种方式将所需的 API 导入支持库吗?如果是这样,你能给我指出一篇关于这样做的文章吗?

我正在尝试创建一个在操作栏中具有选项卡的应用程序,同时使用活动和片段,但我不断收到版本不匹配错误,说明“最低 SDK 级别为 4。它应该是 13”。

我很确定我可以让该应用程序适用于较新的设备,但我确信所有潜在用户都不会拥有新手机。因此,我正在寻求您对解决我认为是一个持续存在的问题的见解。

感谢您的见解。

谢谢

4

2 回答 2

3

你会认为,当新版本的平台生成时,它会向后兼容早期版本;因此,如果我在 SDK 17 中创建软件,则使用其功能将在使用早期版本(例如 4 或其他任何版本)的设备上运行

API 级别 4 中存在的功能通常存在于 API 级别 17 中,支持这些功能的代码通常是向后兼容的。

但是,较新版本的 Android 具有附加功能。这些不一定是向后兼容的,因为根据定义,它们是更新的和附加的。

那么,一个人只是为更新的设备开发,还是有一种方法可以确保我在新环境中编写的内容可以在设备上运行,而不必跳过一堆麻烦?

可以肯定地开发适用于旧设备和新设备的应用程序。旧设备和新设备上存在的 API,您只需使用,通常没有问题。仅存在于较新设备上的 API,您必须注意不要尝试在旧设备上使用这些功能。有多种技术可以做到这一点,例如通过检查Build.VERSION.SDK_INT和跳过旧设备上的新 API 内容。

由于没有“跳过一堆箍”的规范定义,因此您需要自己决定。它确实要求您能够阅读文档,因为其中有很多关于如何构建向后兼容的应用程序的内容,例如关于开发向后兼容 UI 的讨论。还有很多博客文章等涵盖向后兼容开发的特定方面,可通过您最喜欢的搜索引擎获得。

我正在尝试使用支持库,但它似乎没有新版本的所有 api

它不应该,也没有被宣传为有。它有一些东西的反向移植,但不是所有的东西。在某种程度上,这只是工程时间的问题。部分原因是有些东西不能向后移植,因为它们是对操作系统的核心更改,而不仅仅是框架类。

我正在尝试创建一个在操作栏中具有选项卡的应用程序,同时使用活动和片段,但我不断收到版本不匹配错误,说明“最低 SDK 级别为 4。它应该是 13”。

正如 abbath 所指出的,操作栏不是 Android 支持包的一部分,尽管ActionBarSherlock填补了这个角色。类似的反向移植可用于 Android 支持包中未找到的其他内容,并且可以在AndroidViews.net等网站上找到。

于 2013-03-08T22:46:33.110 回答
2

ActionBar 是不久前推出的,这就是为什么您需要 API 级别 13 才能使用它。

如果你想使用带有标签的 ActionBar,但又想为更低的 sdk 版本开发,请尝试使用兼容库,例如ActionBarSherlock

于 2013-03-08T22:25:50.730 回答