0

我在android中看到了很多关于targetsdk版本的问题。但解释不清楚。与 minsdk 和 maxsdk 版本相比,我认为它有点棘手。我浏览了 developer.android.com 并阅读了有关使用 sdk 标签的信息,并且很少有视频解释这个概念。但力图清楚地了解targetsdk版本。正如我之前所说,关于堆栈溢出已经有成千上万个问题和答案,我再次发布此问题以获得简单而清晰的解决方案。所以请大家耐心回答这个问题并帮助我。

这是 developer.android.com 中的声明。

但是,如果平台的 API 级别高于您应用的 targetSdkVersion 声明的版本,系统可能会启用兼容性行为,以确保您的应用继续按照您期望的方式运行。您可以通过指定 targetSdkVersion 以匹配其运行平台的 API 级别来禁用此类兼容性行为。

我做了小样本,我将targetsdkversion指定为14,我尝试在android api level 19(android 4.4)上运行,我的应用程序安装没有任何问题并且工作正常。

如果我删除了 targetsdkverion,那么默认情况下它将设置为 minsdkversion 值,然后我的应用程序再次安装并且工作正常。

我的样本和上述陈述都是矛盾的,所以我对这个概念感到困惑。请通过视频教程的简单解释详细解释我。

Q1) 现在如果我指定targetsdkversion 会有前向兼容性吗?(我希望向后兼容会有仪式。

Q2)为什么每个人都说我们应该始终将targetsdk版本设置为最新版本?

Q3)在什么情况下我们必须指定低于最新版本发布号的targetsdkversion。这有什么影响?(即targetsdkversion = 14和maxsdkverion = 19)。

请大家在这方面需要你的帮助。谢谢..

4

1 回答 1

1

我做了小样本,我将targetsdkversion指定为14,我尝试在android api level 19(android 4.4)上运行,我的应用程序安装没有任何问题并且工作正常。

这并不意味着什么。我相信在大多数情况下它会表现得很好,但是,可能会有一些功能可能表现得或看起来有点不同......我不知道,主题,UI等。它所告诉的只是SDK版本是向前兼容,一旦你对每一个单独的 SDK 版本、每一个 Android 功能、每一个 Android 设备进行了相同的测试,那么你可能会遇到这样一个事实:你应该遵循指南并将 TargetSDK 设置为最新版本

现在如果我指定targetsdkversion会有前向兼容性吗?(我希望向后兼容会有仪式

这是一个很难回答的问题,因为我们永远不知道 Android 未来会发生什么,但就目前而言,Android 团队正在努力保持 API 级别“向前兼容”,即使它要求系统启用兼容性行为

为什么每个人都说我们应该始终将targetsdk版本设置为最新版本?

这是一个最佳实践指南,围绕不使系统启用兼容性行为而演变,因为这种“可能”使您的应用程序的行为有点不同,即您的应用程序的目标 dk 低于其运行的当前系统

在什么情况下我们必须指定低于最新版本发布号的targetsdkversion。这有什么影响?(即targetsdkversion = 14和maxsdkverion = 19)

如上所述,您应该始终以最新的 sdk 版本为目标。maxSdkVersionAndroid 不鼓励使用此设置,以避免与系统更新相关的某些问题。更具体地说,这里是文档的摘录...

在 Android 1.5、1.6、2.0 和 2.0.1 中,系统会在安装应用程序以及在系统更新后重新验证应用程序时检查此属性的值。无论哪种情况,如果应用程序的 maxSdkVersion 属性低于系统本身使用的 API Level,那么系统将不允许安装应用程序

因此,效果很明显,用户可能无法安装您的应用程序。

所以,总结一下,如果你仍然不明白,我的建议是你应该遵循 Android 文档认为的最佳实践,至少你会有一些更聪明的人正在照顾的想法你无法理解的东西:P

根据评论编辑

兼容性行为只是 Android 使用的一个非常通用的术语,用于描述它何时评估为为较低 SDK 版本构建的应用程序执行不同的例程或功能。一个例子是 Android 如何处理过时的权限。例如,假设您有一个 API 级别 8 设备运行一个以相同 API 级别为目标的应用程序,并且此应用程序请求PERSISTENT_ACTIVITY Permission在 API 级别 8 中已被弃用。会发生什么情况是 android 将有效地评估此权限?

现在,考虑针对相同 API 级别但这次在 KitKat 上运行的相同应用程序。会发生什么?我不完全知道,但有根据的猜测是,Android 将启用兼容性行为以忽略此权限。现在明白了?

于 2014-10-14T07:01:54.127 回答