有人可以向我解释项目目标和最小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 可以做到这一点。因此,如果您掌握了一些不应该在您的设备上运行的应用程序,并且您仍然尝试使用它们,则会再次崩溃并烧毁。
| 归档时间: |
|
| 查看次数: |
888 次 |
| 最近记录: |