有人可以向我解释项目目标和最小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级别不知道它时,1.6如何知道如何使用SERVICE_NOT_STICKY?
最佳答案
如果你想使用一些新的奇特功能,但也希望保持向后兼容性,即targetSdkVersion和minSdkVersion发挥作用.
为了保持向后兼容性,您需要小心处理minSdkVersion上方的每个新API.即通过使用反射或使用Build.VERSION.SDK_INT来仔细检查您是否可以访问它们.如果您不这样做,您的应用程序将崩溃并刻录,因为它无法找到您尝试使用的API.
您还想阅读有关已更改API的每一行文档(即Service.onStartCommand(..)),以便您可以正确地以向后兼容的方式处理每个数据.
关于常量,它们很可能被编译成你的代码作为字符串/整数,当旧版本变得未知时它只是忽略它.然而,这是一个理论,所以你应该在广泛使用它之前测试它.
另外,据我所知,系统不会检查minSdkVersion或targetSdkVersion.只有Android Market才能做到这一点.因此,如果你掌握了一些不应该在你的设备上运行的应用程序,你仍然试图使用它们,那么再次崩溃和刻录.