有人可以向我解释项目目标与最低SDK之间的区别吗?我希望我的应用程序在Donut设备上运行,而我用7的目标构建的APK工作正常。当我在Android清单4(1.6)中设置一个明确的最小SDK时,编译器告诉我目标超过了最小值。我将目标重置为4只是为了看看会发生什么,现在我有编译器错误。一个例子是android.app.Service中的START_NOT_STICKY常量。它在API级别4中不存在,但确实存在于API级别7. Service.onStartCommand()也是如此。在API级别7中,您需要明确覆盖此方法,而在API级别4中则不需要。
那么为什么应用程序在1.6中工作呢? 1.6当关联的API级别不知道如何使用SERVICE_NOT_STICKY时,1.6怎么知道?
答案 0 :(得分:4)
如果你想使用一些新的花哨功能,但也希望保持向后兼容性,即targetSdkVersion和minSdkVersion发挥作用。
为了保持向后兼容性,您需要小心处理minSdkVersion上方的每个新API。即通过使用反射或使用Build.VERSION.SDK_INT仔细检查您是否可以访问它们。如果您不这样做,您的应用程序将崩溃并刻录,因为它无法找到您尝试使用的API。
您还希望阅读有关已更改的API的每一行文档(即Service。onStartCommand(..)),以便您可以正确地处理每个数据,并以向后兼容的方式。< / p>
关于常量,它们很可能被编译为你的代码作为字符串/整数,当旧版本获得未知时,它只是忽略它。然而,这是一个理论,所以你应该在广泛使用它之前测试它。
另外,据我所知,系统不检查minSdkVersion和targetSdkVersion。只有Android Market才能做到这一点。因此,如果你掌握了一些不应该在你的设备上运行的应用程序并且你仍然试图使用它们,那么再次崩溃和刻录。