【发布时间】:2013-10-31 21:00:03
【问题描述】:
嗯,我认为这没有得到很好的解释,现在我有点困惑。来自this链接:
Compile With 是您要编译的平台版本 你的应用程序。默认情况下,设置为最新版本的 Android 在您的 SDK 中可用。 (它应该是 Android 4.1 或更高版本;如果您 没有这样的版本可用,您必须使用 SDK 管理器)。 您仍然可以构建您的应用以支持旧版本, 但是将构建目标设置为最新版本允许您 启用新功能并优化您的应用以获得出色的用户体验 在最新的设备上。
来自this 一个代替:
在开发应用程序时,您需要选择 您将根据其编译应用程序的平台版本。在 一般来说,您应该根据最低要求编译您的应用程序 您的应用程序可以支持的平台版本。
现在,由于他们自相矛盾,在这里我将解释我的理解:假设我们使用 api 5 编译。这意味着如果我从 1 运行到 5,我的应用程序可以工作,但它没有对于 > 5 的版本。所以:
- 如果 compileWith 设置为 5,为什么我需要设置 minSdkVersion?
- 什么是 targetSdkVersion?
重点是:如果 compileWith 设置为最新版本,是否可以使用最新的 API 并且仍然具有向后兼容性?我确定我错了,我错过了一些东西。谢谢。
编辑 1
现在我明白了,但无论如何我都遗漏了一些东西:假设 minSdk 是 9,target 是 18(我当前的 sdk)。这意味着我不能使用任何特定于 api 18 的东西,除非有一些旧版本的支持包,对吧?我的想法不同:我会使用尽可能低的版本进行编译以获得前向兼容性。我的意思是,如果您在 Win2000 上编译 Windows 应用程序,它将运行到 Windows 8,但我仅限于 Win2000 api。如果我使用 Windows 8 编译,则应在运行时检查向后兼容性,并且我只能在 Win2000 上使用“支持包”(显然这是一个示例)上的 Windows 8 api。对吧?
编辑 2
This 是我要问的关于 Android(而不是 JVM)的问题。 Android 正在向前和向后混合,我使用 Windows 示例进行了更多混合。 FIY,Windows 似乎是向后兼容的,如示例here 中所述。那么,安卓呢?似乎 minSdk 版本应该由开发人员测试,我的意思是:我应该用最新版本编译并测试我的应用程序行为,直到不会改变它的最低 api 级别。因此,我似乎需要通过在每个低于已编译 wich 的 api 级别上进行测试来测试向后兼容性,并确保向前兼容性。对吧?
我认为我混合了向前和向后兼容性定义。每次我读它们时,它们似乎都不一样。
【问题讨论】:
-
我的新更新是否回答了您的问题?如果是,请将其标记为正确,以便其他有相同问题的人可以清楚地看到。谢谢。
-
清楚,但还不够,请阅读我的更新!
-
我希望你现在拥有你想要的东西。
-
我的解决方案解决了您的困惑吗?
标签: android